respond method
- MessageBuilder builder,
override
Used to acknowledge a Interaction and send a response. Once this is sent you can then only send ChannelMessages.
Implementation
@override
Future<void> respond(MessageBuilder builder, {bool hidden = false}) async {
final now = DateTime.now();
if (_hasAcked && now.isAfter(receivedAt.add(const Duration(minutes: 15)))) {
throw InteractionExpiredError.fifteenMins();
} else if (!_hasAcked && now.isAfter(receivedAt.add(const Duration(seconds: 3)))) {
throw InteractionExpiredError.threeSecs();
}
logger.fine("Sending respond for for interaction: ${interaction.id}");
if (_hasAcked) {
await interactions.interactionsEndpoints.respondEditOriginal(interaction.token, client.appId, builder, hidden);
} else {
if (!builder.canBeUsedAsNewMessage()) {
throw ArgumentError("Cannot sent message when MessageBuilder doesn't have set either content, embed or files");
}
await interactions.interactionsEndpoints.respondCreateResponse(interaction.token, interaction.id.toString(), builder, hidden, _respondOpcode);
}
_hasAcked = true;
}