Beispiel #1
0
 public static async Task Spectator_ReactionAdd(MessageReactionAddEventArgs e)
 {
     if (e.User.GetMember().Roles.Contains(Global.Roles[PublicRole.Spectator]))
     {
         await e.Message.DeleteReactionAsync(e.Emoji, e.User, $"Spectator {e.User.Username} can't vote");
     }
 }
Beispiel #2
0
        public static async Task ReactionAdded(DiscordClient sender, MessageReactionAddEventArgs e)
        {
            if (!(e.Channel.Id.ToString().Equals(Fields.channel) && e.Message.Id.ToString().Equals(Fields.message)))
            {
                return;
            }
            await e.Message.DeleteReactionAsync(e.Emoji, e.User);

            switch (e.Emoji.GetDiscordName())
            {
            case ":shield:":
                await OpenReport(e);

                break;

            case ":globe_with_meridians:":
                await OpenHelp(e);

                break;

            case ":question:":
                await OpenQuestion(e);

                break;

            case ":lock:":
                await OpenPart(e);

                break;
            }
        }
Beispiel #3
0
 private static async Task Discord_MessageReactionAdded(MessageReactionAddEventArgs e)
 {
     if (e.Channel == e.Channel.Guild.GetChannel(693561503496011856))
     {
         await Suggestions.HandleSuggestionReaction(e);
     }
 }
        private static async Task ReactionAdded(DiscordClient sender, MessageReactionAddEventArgs e)
        {
            if (e.Channel.Name != "welcome")
            {
                return;
            }

            String roleName = e.Emoji.GetDiscordName() switch
            {
                ":red_circle:" => "he/him",
                ":yellow_circle:" => "they/them",
                ":green_circle:" => "she/her",
                _ => null
            };

            if (roleName == null)
            {
                return;
            }

            DiscordRole role = e.Guild.Roles.Values.FirstOrDefault(x => x.Name == roleName);

            if (role == null)
            {
                return;
            }

            if (e.User is not DiscordMember member)
            {
                return;
            }

            await member.GrantRoleAsync(role);
        }
    }
Beispiel #5
0
        public async Task CheckLoli(MessageReactionAddEventArgs e)
        {
            var name = e.Emoji.GetDiscordName();

            if (name != Config.Emojis.Underage)
            {
                return;
            }

            var msg = await e.Client.Guilds.First(g => g.Key == e.Message.Channel.GuildId).Value.GetChannel(e.Message.ChannelId)
                      .GetMessageAsync(e.Message.Id);

            if (msg.Embeds.Count != 1)
            {
                return;
            }

            bool isParceville = ulong.TryParse(msg.Embeds[0].Footer.Text, out ulong id);

            if (!isParceville)
            {
                return;
            }

            DiscordContext context = new DiscordContext();

            var post = await context.TumblrPosts.FindAsync(Convert.ToInt64(id));

            post.IsLoli = 1;
            await context.SaveChangesAsync();

            await msg.DeleteAsync(":underage:");
        }
Beispiel #6
0
        private Task MessageReactionAdded(MessageReactionAddEventArgs e)
        {
            if (e.User.IsBot)
            {
                return(Task.CompletedTask);
            }

            var client       = e.Client;
            var guild        = e.Guild;
            var channel      = e.Channel;
            var message      = e.Message;
            var reactionUser = e.User;
            var emoji        = e.Emoji;
            var emojiName    = e.Emoji.Name == "??" ? "an unknown reaction" : $"the reaction '{e.Emoji.Name}' ({e.Emoji.Id})";

            if (channel.IsPrivate)
            {
                _logger.Information($"{reactionUser.GetUsertag()} ({reactionUser.Id}) has added {emojiName} to the message '{e.Message.Id}' in the direct message.");

                return(Task.CompletedTask);
            }

            _logger.Information($"'{reactionUser.GetUsertag()}' ({reactionUser.Id}) has added {emojiName} to the message '{message.Id}' in the channel '{channel.Name}' ({channel.Id}) on the guild '{guild.Name}' ({guild.Id}).");

            if (!_reactionListener.IsListener(message.Id, emoji, client))
            {
                return(Task.CompletedTask);
            }

            _reactionListener.ManageRole(channel, message, reactionUser, emoji, client);

            return(Task.CompletedTask);
        }
Beispiel #7
0
        private async Task DiscordClientOnMessageReactionAdded(DiscordClient client, MessageReactionAddEventArgs reactionEvent)
        {
            if (reactionEvent.User.IsBot)
            {
                return;
            }

            // We have to get message instead of reactionEvent.Message - sometimes message here is null, especially
            // when the bot has been restarted.
            var message = await reactionEvent.Channel.GetMessageAsync(reactionEvent.Message.Id);

            if (!message.Content.StartsWith(PaginationIdentifier))
            {
                return;
            }

            var header = message.Content.Substring(0, message.Content.IndexOf("\n"));

            var paginationData = _paginationManager.ParsePaginationHeader(header);
            var orderByData    = ParseOrderByHeader(header);

            _paginationManager.UpdatePagination(paginationData, reactionEvent);

            var onlineList = GetOnlineList(paginationData.CurrentPage, orderByData, reactionEvent.Channel.Guild);

            await reactionEvent.Message.DeleteReactionAsync(reactionEvent.Emoji, reactionEvent.User);

            await reactionEvent.Message.ModifyAsync(onlineList);
        }
Beispiel #8
0
        private async Task MessageReactionAdd(MessageReactionAddEventArgs args)
        {
            if (args.Channel.IsPrivate)
            {
                return;
            }
            using (var db = new LiteDatabase("Data.db"))
            {
                var rms = db.GetCollection <ReactionMessage>();
                var rm  = rms.FindOne(x =>
                                      x.GuildId == args.Channel.Guild.Id &&
                                      x.ChannelId == args.Channel.Id &&
                                      x.MessageId == args.Message.Id);
                if (rm is null)
                {
                    return;
                }
                foreach (var e in rm.EmojiToRole)
                {
                    var emoji = await e.GetEmoji();

                    if (emoji != args.Emoji)
                    {
                        continue;
                    }
                    var member = await args.Channel.Guild.GetMemberAsync(args.User.Id);

                    await member.GrantRoleAsync(args.Channel.Guild.GetRole(e.Role));

                    return;
                }
            }
        }
Beispiel #9
0
        static async Task DuelReactionsAdded(MessageReactionAddEventArgs e)
        {
            if (!e.User.IsBot)
            {
                try
                {
                    Duel duel = duels.Find(d => e.Message.Id == d.duel.message1 || e.Message.Id == d.duel.message2);

                    if (duel != null)
                    {
                        if (e.User.Id != duel.duel.duelist1 && e.User.Id != duel.duel.duelist2 /* && (await e.Channel.Guild.GetMemberAsync(e.User.Id)).Roles.Any(r => r.Id == staffRole)*/ && (e.Emoji.Id == 604972398424621066u || e.Emoji.Id == 604973811154288660u))
                        {
                            var another = await e.Channel.Guild.GetEmojiAsync(e.Emoji.Id == 604972398424621066u? 604973811154288660u : 604972398424621066u);

                            if ((await e.Message.GetReactionsAsync(another)).Any(u => u.Id == e.User.Id))
                            {
                                await e.Message.DeleteReactionAsync(another, e.User);
                            }
                        }
                        else
                        {
                            await e.Message.DeleteReactionAsync(e.Emoji, e.User);
                        }
                    }
                }
                catch (Exception ex) { Program.ErrorMessage(ex.ToString()); }
            }
        }
Beispiel #10
0
        private async Task ClientOnMessageReactionAddedAsync(DiscordClient client, MessageReactionAddEventArgs e)
        {
            if (e.User.IsBot || !await _paginationService.IsPaginationSetAsync(e.Message))
            {
                return;
            }

            var paginationData = await _paginationService.GetPaginationDataForMessageAsync(e.Message);

            if (_allowedPaginationTypes.Contains(paginationData.ContentType))
            {
                var items = await _cacheService.GetAsync <List <CoreInfo> >(CacheContentType.Cores);

                var editedMessage = e.Message;

                if (await _paginationService.DoActionAsync(editedMessage, e.Emoji, items.Count))
                {
                    var updatedPaginationData = await _paginationService.GetPaginationDataForMessageAsync(editedMessage);

                    var tableWithPagination = BuildTableWithPagination(items, updatedPaginationData.CurrentPage);

                    editedMessage = await editedMessage.ModifyAsync(tableWithPagination);
                }

                await _paginationService.DeleteReactionAsync(editedMessage, e.User, e.Emoji);
            }
        }
Beispiel #11
0
        private async Task ReactionAdded(MessageReactionAddEventArgs e)
        {
            try
            {
                if (e.User != e.Client.CurrentUser && Program.pairs.Any(x => x.InputPair == e.Channel.Id))
                {
                    Pair p = Program.pairs.Find(x => x.InputPair == e.Channel.Id);
                    if ((e.Channel.Guild.GetMemberAsync(e.User.Id).Result).Roles.Any(x => x.Permissions.HasPermission(Permissions.ManageRoles)) && e.User != e.Client.CurrentUser)
                    {
                        var msg = await e.Channel.GetMessageAsync(e.Message.Id);

                        Suggestion sg     = new Suggestion(msg);
                        var        RetChn = e.Channel.Guild.GetChannel(p.OutputPair);
                        if (sg.Image.HasValue)
                        {
                            await RetChn.SendFileAsync(sg.Image.Value, null, false, EmbedBase.SuggestionEmbed(sg));

                            await e.Message.DeleteAsync();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                StringBuilder data = new StringBuilder();
                Console.WriteLine($"[EX <{ex.Message}> @ Sug.cs : ReactionAdded] \n\t{ex}");
            }
        }
Beispiel #12
0
        public async Task CheckReactionAddedAsync(MessageReactionAddEventArgs e)
        {
            if (e.User.Id == Application.Current.Discord.CurrentUser.Id)
            {
                // We don't want to respond to our own reactions.
                return;
            }

            var roleCategory = Application.Current.Settings.ReactionRoles.FirstOrDefault(x => x.DiscordMessageId == e.Message.Id);

            if (roleCategory == null)
            {
                return;
            }

            // It is a reaction message we sent; handle it.
            // Grab required role:
            var role = roleCategory.Roles.FirstOrDefault(x => x.Emoji == e.Emoji);

            if (role == null)
            {
                // TODO: log
                return;
            }

            await((DiscordMember)e.User).GrantRoleAsync(e.Guild.Roles.Values.First(x => x.Name == role.RoleName));
        }
Beispiel #13
0
 private async Task OnMessageReactionAdded(MessageReactionAddEventArgs e)
 {
     if (MessageReactionAdded != null)
     {
         await MessageReactionAdded(e);
     }
 }
Beispiel #14
0
        private async Task DiscordReactionAdded(DiscordClient sender, MessageReactionAddEventArgs e)
        {
            await Task.Delay(0);

            if (!e.User.IsCurrent && !e.User.IsBot)
            {
                if (MessageReactionListeners.TryGetValue(e.Guild.Id, out var guildMessageReactionListeners))
                {
                    if (guildMessageReactionListeners.TryGetValue(e.Message.Id, out var reactionListeners))
                    {
                        foreach (var listener in reactionListeners)
                        {
                            try {
                                await listener.OnReactionAdd(e);
                            } catch (Exception exc) {
                                await SendException(this, new SendExceptionEventArgs {
                                    Exception        = exc,
                                    Channel          = e.Channel,
                                    LogExceptionType = "GenericExceptionNotCaught"
                                });
                            }
                        }
                    }
                }
            }
        }
Beispiel #15
0
        public void UpdatePagination(PaginationData paginationData, MessageReactionAddEventArgs reactionEvent)
        {
            switch (reactionEvent.Emoji.GetDiscordName())
            {
            case LeftEmojiName:
            {
                if (paginationData.CurrentPage > 1)
                {
                    paginationData.CurrentPage--;
                }

                break;
            }

            case RightEmojiName:
            {
                if (paginationData.CurrentPage < paginationData.PagesCount)
                {
                    paginationData.CurrentPage++;
                }

                break;
            }
            }
        }
Beispiel #16
0
        internal static async Task ChallengeDuelReactionAdded(MessageReactionAddEventArgs e)
        {
            if (!e.User.IsBot)
            {
                ChallengeDuel cd = challengeDuels.Find(c => c.message.Id == e.Message.Id);
                if (cd != null)
                {
                    if (e.User.Id == cd.duelist2.Id && (e.Emoji.Id == 604972398424621066u || e.Emoji.Id == 604973811154288660u))
                    {
                        cd.Remove(null);

                        if (e.Emoji.Id == 604972398424621066u)
                        {
                            string subject = (await Subjects.RandomAsync())?.Replace('-', ' ');

                            if (subject != null)
                            {
                                Duel d = await AddAsync(cd.duelist1.Id, cd.duelist2.Id, 0, 0, false, subject);

                                await e.Channel.SendMessageAsync(string.Empty, false, Program.bot.GetEmbed("The duel has started!", $"The duel between <@{cd.duelist1.Id}> and <@{cd.duelist2.Id}> has started!", $"Subject: **{subject}**.", "Time: **24 hours**.", "When You finished your build, attach the image (**.png** or **.jpg**) of your work.", "Good luck!"));
                            }
                            else
                            {
                                await e.Channel.SendMessageAsync($"Subjects not found, <@{Program.config.StaffRole}>.");
                            }
                        }
                    }
                    else
                    {
                        await e.Message.DeleteReactionAsync(e.Emoji, e.User);
                    }
                }
            }
        }
Beispiel #17
0
        private Task _discordClient_MessageReactionAdded(DiscordClient sender, MessageReactionAddEventArgs e)
        {
            _ = Task.Run(async() =>
            {
                if (e.Guild == null || e.Emoji == null || _textChannel == null || e.Channel.Id != _textChannel.Id ||
                    e.Emoji != _config.MentionRoleEmoji)
                {
                    return;
                }

                // Check that the message reacted to is a role embed
                if (_existingRoleEmbeds.ContainsValue(e.Message.Id))
                {
                    if (e.User is DiscordMember member)
                    {
                        // Ignore actions from the bot
                        if (member.IsSelf(_discordClient))
                        {
                            return;
                        }

                        var(result, role) = await TryParseRoleFromEmbedAsync(e.Message);
                        if (result)
                        {
                            await member.GrantRoleAsync(role);
                        }
                    }
                }
            });

            return(Task.CompletedTask);
        }
Beispiel #18
0
        async Task HandleReactionAdd(MessageReactionAddEventArgs eventargs)
        {
            await Task.Yield();

            foreach (var req in _requests)
            {
                var emojis = await req.GetEmojisAsync();

                var msg = await req.GetMessageAsync();

                var usr = await req.GetUserAsync();

                if (msg.Id == eventargs.Message.Id)
                {
                    if (eventargs.User.Id == usr.Id)
                    {
                        await PaginateAsync(req, eventargs.Emoji);
                    }
                    else if (eventargs.User.Id != _client.CurrentUser.Id)
                    {
                        if (eventargs.Emoji != emojis.Left &&
                            eventargs.Emoji != emojis.SkipLeft &&
                            eventargs.Emoji != emojis.Right &&
                            eventargs.Emoji != emojis.SkipRight &&
                            eventargs.Emoji != emojis.Stop)
                        {
                            await msg.DeleteReactionAsync(eventargs.Emoji, eventargs.User);
                        }
                    }
                }
            }
        }
Beispiel #19
0
        private async Task ReactionAdded(MessageReactionAddEventArgs e)
        {
            if (e.Guild == null)
            {
                return;
            }
            if (e.User.IsBot)
            {
                return;
            }
            var categories = categoryCache.Query().Where(x => x.ChannelId == e.Channel.Id).ToList();
            var category   = categories.FirstOrDefault(x => x.MessageId == e.Message.Id);

            if (!categories.Any() || category == null)
            {
                return;
            }
            if (!category.Data.ContainsKey(e.Emoji.Id))
            {
                await e.Message.DeleteReactionAsync(e.Emoji, e.User);

                return;
            }
            var member = await e.Guild.GetMemberAsync(e.User.Id);

            await member.GrantRoleAsync(e.Guild.GetRole(category.Data[e.Emoji.Id]));
        }
Beispiel #20
0
        async Task HandleReactionAdd(MessageReactionAddEventArgs eventargs)
        {
            await Task.Yield();

            // foreach request add
            foreach (var req in _requests)
            {
                if (req.message.Id == eventargs.Message.Id)
                {
                    if (req._collected.Any(x => x.Emoji == eventargs.Emoji && x.Users.Any(y => y.Id == eventargs.User.Id)))
                    {
                        var reaction = req._collected.First(x => x.Emoji == eventargs.Emoji && x.Users.Any(y => y.Id == eventargs.User.Id));
                        req._collected.TryRemove(reaction);
                        reaction.Users.Add(eventargs.User);
                        req._collected.Add(reaction);
                    }
                    else
                    {
                        req._collected.Add(new Reaction()
                        {
                            Emoji = eventargs.Emoji,
                            Users = new ConcurrentHashSet <DiscordUser>()
                            {
                                eventargs.User
                            }
                        });
                    }
                }
            }
        }
Beispiel #21
0
        private static async Task ClientOnMessageReactionAdded(MessageReactionAddEventArgs e, Game game)
        {
            var present = false;

            foreach (var personnage in game.PersonnagesList.FindAll(p => p.Alive))
            {
                if (e.Emoji == personnage.Emoji)
                {
                    present = true;
                }
            }

            if (!present || (GameBuilder.GetMember(game.Guild, e.User)).Roles.Contains(Global.Roles[CustomRoles.Spectator]))
            {
                await DailyVotingMessage.DeleteReactionAsync(e.Emoji, e.User);

                return;
            }


            if (!e.User.IsBot && !GameBuilder.GetMember(game.Guild, e.User).Roles.Contains(Global.Roles[CustomRoles.Spectator]))
            {
                foreach (var otherEmoji in (await game.Guild.GetEmojisAsync()))
                {
                    if (otherEmoji.Name != e.Emoji.Name)
                    {
                        await DailyVotingMessage.DeleteReactionAsync(otherEmoji, e.User,
                                                                     $"{e.User.Username} already voted");
                    }
                }
            }
        }
Beispiel #22
0
        // Client has assigned a role
        internal static Task Role_Assigned(MessageReactionAddEventArgs e, DiscordMember member, DiscordRole role)
        {
            e.Client.DebugLogger.LogMessage(LogLevel.Debug, "Rolebot", $"User: {member} Role Assigned: {role}",
                                            DateTime.Now);

            return(Task.CompletedTask);
        }
Beispiel #23
0
        async Task HandleReactionAdd(MessageReactionAddEventArgs eventargs)
        {
            await Task.Yield();

            foreach (var req in _requests)
            {
                // match message
                if (req._message.Id == eventargs.Message.Id && req._message.ChannelId == eventargs.Channel.Id)
                {
                    if (req._emojis.Contains(eventargs.Emoji) && !req._collected.Any(x => x.Voted.Contains(eventargs.User)))
                    {
                        if (eventargs.User.Id != _client.CurrentUser.Id)
                        {
                            req.AddReaction(eventargs.Emoji, eventargs.User);
                        }
                    }
                    else
                    {
                        var member = await eventargs.Channel.Guild.GetMemberAsync(eventargs.Client.CurrentUser.Id);

                        if (eventargs.Channel.PermissionsFor(member).HasPermission(Permissions.ManageMessages))
                        {
                            await eventargs.Message.DeleteReactionAsync(eventargs.Emoji, eventargs.User);
                        }
                    }
                }
            }
        }
Beispiel #24
0
        private Task HandleReactionAdd(DiscordClient client, MessageReactionAddEventArgs eventargs)
        {
            if (this._requests.Count == 0)
            {
                return(Task.CompletedTask);
            }

            _ = Task.Run(async() =>
            {
                foreach (var req in this._requests)
                {
                    // match message
                    if (req._message.Id == eventargs.Message.Id && req._message.ChannelId == eventargs.Channel.Id)
                    {
                        if (req._emojis.Contains(eventargs.Emoji) && !req._collected.Any(x => x.Voted.Contains(eventargs.User)))
                        {
                            if (eventargs.User.Id != this._client.CurrentUser.Id)
                            {
                                req.AddReaction(eventargs.Emoji, eventargs.User);
                            }
                        }
                        else
                        {
                            var member = await eventargs.Channel.Guild.GetMemberAsync(client.CurrentUser.Id).ConfigureAwait(false);
                            if (eventargs.Channel.PermissionsFor(member).HasPermission(Permissions.ManageMessages))
                            {
                                await eventargs.Message.DeleteReactionAsync(eventargs.Emoji, eventargs.User).ConfigureAwait(false);
                            }
                        }
                    }
                }
            });
            return(Task.CompletedTask);
        }
Beispiel #25
0
 private Task HandleReactionAdd(DiscordClient client, MessageReactionAddEventArgs eventargs)
 {
     // foreach request add
     foreach (var req in this._requests)
     {
         if (req._message.Id == eventargs.Message.Id)
         {
             if (req._collected.Any(x => x.Emoji == eventargs.Emoji && x.Users.Any(y => y.Id == eventargs.User.Id)))
             {
                 var reaction = req._collected.First(x => x.Emoji == eventargs.Emoji && x.Users.Any(y => y.Id == eventargs.User.Id));
                 req._collected.TryRemove(reaction);
                 reaction.Users.Add(eventargs.User);
                 req._collected.Add(reaction);
             }
             else
             {
                 req._collected.Add(new Reaction()
                 {
                     Emoji = eventargs.Emoji,
                     Users = new ConcurrentHashSet <DiscordUser>()
                     {
                         eventargs.User
                     }
                 });
             }
         }
     }
     return(Task.CompletedTask);
 }
        public async Task <bool> AddReactionAsync(MessageReactionAddEventArgs e)
        {
            var reaction = new Reaction();

            reaction.reaction = e.Emoji.Name;
            reaction.user     = e.User.Username;
            reaction.time     = DateTimeOffset.Now.ToUnixTimeMilliseconds();

            var chat             = utilityService.GetChat(e.Message, e.Message.MentionedUsers);
            var conversationName = utilityService.GetConversationName(e.Message);
            var metadata         = utilityService.GetMetadata(e.Message);
            var reactionRequest  = new ReactionRequest {
                reaction = reaction, chat = chat, type = configuration.ChatType, conversationName = conversationName, metadata = metadata
            };

            var httpContent = utilityService.GetHttpContent(reactionRequest);
            var response    = await client.PutAsync(configuration.ApiUrl + "/api/reactionupdate", httpContent);

            response.EnsureSuccessStatusCode();

            var jsonResponse = await response.Content.ReadAsStringAsync();

            var success = JsonConvert.DeserializeObject <bool>(jsonResponse);

            return(success);
        }
Beispiel #27
0
        public static async Task BuildVoteAddHandler(MessageReactionAddEventArgs e)
        {
            if (e.Channel.Name == "builds")
            {
                using (var db = new BuildContext())
                {
                    var build = db.Builds.FirstOrDefault(b => b.MessageId == e.Message.Id);
                    if (build == null)
                    {
                        return;
                    }

                    if (e.Emoji == DiscordEmoji.FromName(Program.Client, ":arrow_up:"))
                    {
                        build.UpVotes++;
                    }
                    else if (e.Emoji == DiscordEmoji.FromName(Program.Client, ":arrow_down:"))
                    {
                        build.DownVotes++;
                    }

                    db.Update(build);
                    await db.SaveChangesAsync();

                    if (build.UpVotes + build.DownVotes - 2 >= 10 &&
                        (double)build.DownVotes / (double)(build.UpVotes + build.DownVotes - 2) >= 0.70)
                    {
                        await e.Message.DeleteAsync();
                    }
                }
            }
        }
Beispiel #28
0
        private async Task Client_MessageReactionAddedAsync(DiscordClient client, MessageReactionAddEventArgs e)
        {
            if (e.User.IsBot || !await _paginationService.IsPaginationSetAsync(e.Message))
            {
                return;
            }

            var paginationData = await _paginationService.GetPaginationDataForMessageAsync(e.Message);

            if (_allowedPaginationTypes.Contains(paginationData.ContentType))
            {
                var items = await GetLaunchesAsync(paginationData.ContentType, paginationData.Parameter);

                if (items != null)
                {
                    var editedMessage = e.Message;

                    if (await _paginationService.DoActionAsync(editedMessage, e.Emoji, items.Count))
                    {
                        var updatedPaginationData = await _paginationService.GetPaginationDataForMessageAsync(editedMessage);

                        var launchesList = BuildTableWithPagination(items, updatedPaginationData.ContentType, updatedPaginationData.CurrentPage);

                        editedMessage = await editedMessage.ModifyAsync(launchesList);
                    }

                    await _paginationService.DeleteReactionAsync(editedMessage, e.User, e.Emoji);
                }
            }
        }
        public async Task HandleAddReactionAsync(DiscordClient client, MessageReactionAddEventArgs args)
        {
            if (args.Emoji.Id > 0L)
            {
                //It's a custom emoji
                var emoji = $":{args.Emoji.Name}:";

                try
                {
                    var emojiObj = DiscordEmoji.FromName(client, emoji);
                }
                catch (ArgumentException)
                {
                    _logger.LogInformation($"{args.Message.Author.Username} reacted with an emoji not present on this server: {emoji}. Ignoring...");
                    return;
                }

                _logger.LogInformation($"{args.User.Username} reacted {emoji}");

                await _database.InsertEmojiAsync(new LogEmoji
                {
                    EmojiId          = emoji,
                    Username         = args.User.Username,
                    MessageTimestamp = TimeZoneInfo.ConvertTimeFromUtc(args.Message.Timestamp.UtcDateTime, TZConvert.GetTimeZoneInfo("Romance Standard Time")),
                    IsReaction       = true
                });
            }
        }
Beispiel #30
0
 public MessageReactionEventArgs(MessageReactionAddEventArgs e)
 {
     Message = e.Message;
     Channel = e.Channel;
     User    = e.User;
     Emoji   = e.Emoji;
 }