示例#1
0
        internal Task AddNewFancy(FancyHelpMessage fhm)
        {
            if (fhm.MsgId > 0UL)
            {
                Helpmsgs.TryAdd(fhm.MsgId, fhm);
            }

            return(Task.CompletedTask);
        }
 private Task MessageDeleted(Cacheable <IMessage, ulong> message, ISocketMessageChannel channel)
 {
     return(Task.FromResult(Helpmsgs.TryRemove(message.Id, out var _)));
 }
        private async Task ReactionAdded(Cacheable <IUserMessage, ulong> message, ISocketMessageChannel channel, SocketReaction reaction)
        {
            if (!message.HasValue)
            {
                await Log(LogSeverity.Debug, $"Message with id {message.Id} was not in cache.");

                return;
            }
            if (!reaction.User.IsSpecified)
            {
                await Log(LogSeverity.Debug, $"Message with id {message.Id} had invalid user.");

                return;
            }

            var msg     = message.Value;
            var iclient = (SocketClient as IDiscordClient) ?? (ShardedClient as IDiscordClient);

            if (reaction.UserId == iclient.CurrentUser.Id)
            {
                return;
            }
            if (msg.Author.Id == iclient.CurrentUser.Id &&
                reaction.UserId == (await iclient.GetApplicationInfoAsync()).Owner.Id &&
                reaction.Emote.Name == _litter.Name)
            {
                await msg.DeleteAsync();

                return;
            }

            if (Helpmsgs.TryGetValue(msg.Id, out var fhm))
            {
                if (reaction.UserId != fhm.UserId)
                {
                    var _ = msg.RemoveReactionAsync(reaction.Emote, reaction.User.Value);
                    return;
                }

                switch (reaction.Emote.Name)
                {
                case FancyHelpMessage.SFirst:
                    await fhm.First();

                    break;

                case FancyHelpMessage.SBack:
                    await fhm.Back();

                    break;

                case FancyHelpMessage.SNext:
                    await fhm.Next();

                    break;

                case FancyHelpMessage.SLast:
                    await fhm.Last();

                    break;

                case FancyHelpMessage.SDelete:
                    await fhm.Delete();

                    break;

                default:
                    break;
                }
            }
        }