acknowledge method

  1. @override
Future<void> acknowledge(
  1. {bool hidden = false}
)
override

Used to acknowledge a Interaction but not send any response yet. Once this is sent you can then only send ChannelMessages. You can also set showSource to also print out the command the user entered.

Implementation

@override
Future<void> acknowledge({bool hidden = false}) async {
  if (_hasAcked) {
    throw AlreadyRespondedError();
  }

  if (DateTime.now().isAfter(receivedAt.add(const Duration(seconds: 3)))) {
    throw InteractionExpiredError.threeSecs();
  }

  try {
    await interactions.interactionsEndpoints.acknowledge(interaction.token, interaction.id.toString(), hidden, _acknowledgeOpCode);
  } on IHttpResponseError catch (response) {
    // 40060 - Interaction has already been acknowledged
    // Catch in case of a desync between server and _hasAcked
    if (response.errorCode == 40060) {
      throw AlreadyRespondedError();
    }

    rethrow;
  }

  logger.fine("Sending acknowledge for for interaction: ${interaction.id}");

  _hasAcked = true;
}