Exemplo n.º 1
0
        public async void ProcessTheAddedReaction(Cacheable <IUserMessage, ulong> messageWithReaction, ISocketMessageChannel channel, SocketReaction reaction)
        {
            try
            {
                await Task.Run(async() =>
                {
                    if (reaction.UserId == ClientControlManager.MainBot.Client.CurrentUser.Id)
                    {
                        return;
                    }

                    var user         = reaction.User.Value;
                    var message      = await messageWithReaction.DownloadAsync();
                    var messageTitle = message.Embeds.First().Title;

                    if ((message.Author.Id != ClientControlManager.MainBot.Client.CurrentUser.Id) || (message.Embeds.Count == 0))
                    {
                        return;
                    }
                    if (!(channel is IDMChannel))
                    {
                        var channelCategory = await((IGuildChannel)channel).GetCategoryAsync();
                        if (channelCategory == null)
                        {
                            return;
                        }
                        //для рейтингового листа
                        if (channelCategory.Id == (ulong)CategoryIds.Rating_Lists)
                        {
                            await message.RemoveReactionAsync(reaction.Emote, user);
                            string objName = message.Embeds.First().Title;

                            switch (reaction.Emote.Name)
                            {
                            case "💙": await CommandControlManager.RatingList.ChangeRatingAsync(user.Id, channel, objName, Evaluation.Like); break;

                            case "❌": await CommandControlManager.RatingList.ChangeRatingAsync(user.Id, channel, objName, Evaluation.Dislike); break;

                            case "🎮":
                                await Task.Run(() => CommandControlManager.WantPlayMessage.SendAsync(user, objName, message.Embeds.First().Thumbnail?.Url, message.Embeds.First().Url)); break;
                            }
                        }
                        else
                        {
                            //для остальных категорий

                            if ((messageTitle == null) || (messageTitle == ""))
                            {
                                return;
                            }
                            switch (MessageTitles.GetType(messageTitle))
                            {
                            case TitleType.WantPlay:
                                switch (reaction.Emote.Name)
                                {
                                case "✅": await Task.Run(() => WantPlayMessageCommands.AddUserAcceptedAsync(message, user)); break;

                                    /*case "📩":
                                     *  await message.RemoveReactionAsync(reaction.Emote, user);
                                     *  await Task.Run(() => WantPlayMessageCommands.SendOptionsOfSubscriptionAsync(message, user)); break;*/
                                }
                                break;

                            case TitleType.VipGiveaway:
                                if (!DataControlManager.ParticipantsOfTheGiveaway.Value.ContainsKey(GiveawayType.VIP) ||
                                    (DataControlManager.ParticipantsOfTheGiveaway.Value[GiveawayType.VIP].Contains(user.Id)))
                                {
                                    break;
                                }
                                DataControlManager.ParticipantsOfTheGiveaway.Value[GiveawayType.VIP].Add(user.Id);
                                await DataControlManager.ParticipantsOfTheGiveaway.SaveAsync();
                                break;

                            case TitleType.ManageRole:
                                switch (reaction.Emote.Name)
                                {
                                case "🎵": if (DataControlManager.UserProfiles.Value[reaction.UserId].Level > 8)
                                    {
                                        await Task.Run(() => CommandControlManager.RoleManagement.GetAsync(reaction.User.Value, (ulong)RoleIds.DJ));
                                    }
                                    break;

                                case "🈹": if (DataControlManager.UserProfiles.Value[reaction.UserId].Level > 5)
                                    {
                                        await Task.Run(() => CommandControlManager.RoleManagement.GetAsync(reaction.User.Value, (ulong)RoleIds.Anime_Fun));
                                    }
                                    break;
                                }
                                break;
                            }
                        }
                    }
                    //Для лички
                    else
                    {
                        switch (MessageTitles.GetType(messageTitle))
                        {
                        case TitleType.SubscriptionManager:
                            switch (reaction.Emote.Name)
                            {
                            case "1⃣": await Task.Run(() => WantPlayMessageCommands.AddUserSubscriptionAsync(message, user, 1)); break;

                            case "2⃣": await Task.Run(() => WantPlayMessageCommands.AddUserSubscriptionAsync(message, user, 2)); break;

                            case "3⃣": await Task.Run(() => WantPlayMessageCommands.AddUserSubscriptionAsync(message, user, 3)); break;

                            case "4⃣": await Task.Run(() => WantPlayMessageCommands.AddUserSubscriptionAsync(message, user, 4)); break;

                            case "5⃣": await Task.Run(() => WantPlayMessageCommands.RemoveUserSubscriptionAsync(message, user, 5)); break;

                            case "6⃣": await Task.Run(() => WantPlayMessageCommands.RemoveUserSubscriptionAsync(message, user, 6)); break;

                            case "7⃣": await Task.Run(() => WantPlayMessageCommands.RemoveUserSubscriptionAsync(message, user, 7)); break;

                            case "8⃣": await Task.Run(() => WantPlayMessageCommands.RemoveUserSubscriptionAsync(message, user, 8)); break;
                            }
                            break;
                        }
                    }
                });
            }
            catch (Exception ex)
            {
                new ExceptionLogger().Log(ex, "Ошибка при обработке добавленной реакции");
            }
        }
Exemplo n.º 2
0
        public async void ProcessTheRemovedReaction(Cacheable <IUserMessage, ulong> messageWithReaction, ISocketMessageChannel channel, SocketReaction reaction)
        {
            try
            {
                await Task.Run(async() =>
                {
                    if (reaction.UserId == ClientControlManager.MainBot.Client.CurrentUser.Id)
                    {
                        return;
                    }

                    var user         = reaction.User.Value;
                    var message      = await messageWithReaction.DownloadAsync();
                    var messageTitle = message.Embeds.First().Title;

                    if (!(message.Author.Id == ClientControlManager.MainBot.Client.CurrentUser.Id) || (message.Embeds.Count == 0))
                    {
                        return;
                    }
                    if (!(channel is IDMChannel))
                    {
                        var channelCategory = await((IGuildChannel)channel).GetCategoryAsync();
                        if (channelCategory == null)
                        {
                            return;
                        }
                        // для рейтингового листа
                        if (channelCategory.Id == (ulong)CategoryIds.Rating_Lists)
                        {
                            return;
                        }
                        // для остальных категорий
                        switch (MessageTitles.GetType(messageTitle))
                        {
                        case TitleType.WantPlay:
                            if (reaction.Emote.Name == "✅")
                            {
                                await Task.Run(() => WantPlayMessageCommands.RemoveUserAcceptedAsync(message, user));
                            }
                            break;

                        case TitleType.VipGiveaway:
                            if (!DataControlManager.ParticipantsOfTheGiveaway.Value.ContainsKey(GiveawayType.VIP))
                            {
                                break;
                            }
                            DataControlManager.ParticipantsOfTheGiveaway.Value[GiveawayType.VIP].Remove(user.Id);
                            await DataControlManager.ParticipantsOfTheGiveaway.SaveAsync();
                            break;

                        case TitleType.ManageRole:
                            switch (reaction.Emote.Name)
                            {
                            case "🎵": await Task.Run(() => CommandControlManager.RoleManagement.RemoveAsync(reaction.User.Value, (ulong)RoleIds.DJ)); break;

                            case "🈹": await Task.Run(() => CommandControlManager.RoleManagement.RemoveAsync(reaction.User.Value, (ulong)RoleIds.Anime_Fun)); break;
                            }
                            break;
                        }
                    }
                    //Для лички
                    else
                    {
                    }
                });
            }
            catch (Exception ex)
            {
                new ExceptionLogger().Log(ex, "Ошибка при обработке удалённой реакции");
            }
        }