respond method

  1. @override
Future<Message> respond(
  1. MessageBuilder builder,
  2. {ResponseLevel? level}
)
inherited

Send a response to the command.

level can be set to change how the response is set. If is is not passed, CommandOptions.defaultResponseLevel is used instead.

You might also be interested in:

Implementation

@override
Future<Message> respond(MessageBuilder builder, {ResponseLevel? level}) async {
  if (_delegate != null) {
    return _delegate!.respond(builder, level: level);
  }

  level ??= _nearestCommandContext.command.resolvedOptions.defaultResponseLevel!;

  if (level.isDm) {
    final dmChannel = await client.users.createDm(user.id);
    return dmChannel.sendMessage(builder);
  }

  if (builder.replyId == null) {
    builder.replyId = message.id;

    if (level.mention case final shouldMention?) {
      final allowedMentions = builder.allowedMentions ?? AllowedMentions();
      final replyMentions = AllowedMentions(repliedUser: shouldMention);
      builder.allowedMentions =
          shouldMention ? allowedMentions | replyMentions : allowedMentions & replyMentions;
    }
  }

  return channel.sendMessage(builder);
}