/// <summary>
        /// Executes the action in <paramref name="actionOnStop"/>.
        /// </summary>
        /// <param name="message">
        /// The message.
        /// </param>
        /// <param name="actionOnStop">
        /// The action to do.
        /// </param>
        public async Task OnStopAsync(IUserMessage message, ActionOnTimeout actionOnStop)
        {
            Interactive.RemoveReactionCallback(message);
            switch (actionOnStop)
            {
            case ActionOnTimeout.DeleteMessage:
                await message.DeleteAsync();

                break;

            case ActionOnTimeout.DeleteReactions:
                bool manageMessages = message.Channel is SocketGuildChannel guildChannel &&
                                      guildChannel.GetUser(message.Author.Id).GetPermissions(guildChannel).ManageMessages;
                if (manageMessages)
                {
                    await message.RemoveAllReactionsAsync();
                }
                else
                {
                    await message.RemoveReactionsAsync(message.Author, message.Reactions.Where(x => x.Value.IsMe).Select(x => x.Key).ToArray());
                }
                break;

            case ActionOnTimeout.Nothing:
            default:
                break;
            }
        }
        /// <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;
            }
        }