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; } } }