/// <summary> /// Executes the action in <paramref name="actionOnStop"/>. /// </summary> /// <param name="message"> /// The message. /// </param> /// <param name="actionOnStop"> /// The action to do. /// </param> /// <returns> /// A task representing the asynchronous operation. /// </returns> private async Task OnStopAsync(IMessage message, ActionOnTimeout actionOnStop) { if (!Interactive.ContainsKey(message.Id)) { return; } Interactive.RemoveReactionCallback(message); switch (actionOnStop) { case ActionOnTimeout.DeleteMessage: await message.DeleteAsync().ConfigureAwait(false); break; case ActionOnTimeout.DeleteReactions: bool manageMessages = !Context.IsPrivate && Context.Guild.CurrentUser.GetPermissions((IGuildChannel)Context.Channel).ManageMessages; if (manageMessages) { await message.RemoveAllReactionsAsync().ConfigureAwait(false); } break; case ActionOnTimeout.Nothing: default: break; } }