mentionOr function

Future<String> Function(MessageCreateEvent) mentionOr(
  1. FutureOr<String> defaultPrefix(
    1. MessageCreateEvent
    )
)

A wrapper function for prefixes that allows commands to be invoked with a mention prefix.

For example:

CommandsPlugin commands = CommandsPlugin(
  prefix: mentionOr((_) => '!'),
);

// Add a basic `test` command...

Implementation

Future<String> Function(MessageCreateEvent) mentionOr(
  FutureOr<String> Function(MessageCreateEvent) defaultPrefix,
) {
  return (event) async {
    RegExpMatch? match = _mentionPattern.firstMatch(event.message.content);

    if (match != null) {
      if (int.parse(match.group(1)!) ==
          (await event.gateway.client.users.fetchCurrentUser()).id.value) {
        return match.group(0)!;
      }
    }

    return defaultPrefix(event);
  };
}