Ejemplo n.º 1
0
        private static async Task ForceCheckInviteLinksAsync(TelegramBotAbstract sender, MessageEventArgs e)
        {
            int?n = null;

            try
            {
                n = await InviteLinks.FillMissingLinksIntoDB_Async(sender, e);
            }
            catch (Exception e2)
            {
                await NotifyUtil.NotifyOwners(new ExceptionNumbered(e2), sender);
            }

            if (n == null)
            {
                return;
            }

            var text2 = new Language(new Dictionary <string, string>
            {
                { "en", "I have updated n=" + n + " links" },
                { "it", "Ho aggiornato n=" + n + " link" }
            });
            await SendMessage.SendMessageInPrivate(sender, e.Message.From.Id,
                                                   e.Message.From.LanguageCode,
                                                   e.Message.From.Username, text2,
                                                   ParseMode.Default,
                                                   e.Message.MessageId);
        }
        private static async Task ForceCheckInviteLinksAsync(TelegramBotAbstract sender, MessageEventArgs e)
        {
            var n = await InviteLinks.FillMissingLinksIntoDB_Async(sender);

            var text2 = new Language(new Dictionary <string, string>
            {
                { "en", "I have updated n=" + n + " links" },
                { "it", "Ho aggiornato n=" + n + " link" }
            });
            await SendMessage.SendMessageInPrivate(sender, e, text2);
        }
Ejemplo n.º 3
0
 private void RemoveInviteLinkItem(int Index)
 {
     if (InviteLinks.InvokeRequired)
     {
         SafeCallDelegateRemoveAt removeAt = new SafeCallDelegateRemoveAt(RemoveInviteLinkItem);
         InviteLinks.Invoke(removeAt, new object[] { Index });
     }
     else
     {
         InviteLinks.Items.RemoveAt(Index);
     }
 }
Ejemplo n.º 4
0
        private int AddInviteLinkItem(object Item)
        {
            if (Item == null || string.IsNullOrEmpty((string)Item))
            {
                return(-1);
            }

            if (InviteLinks.InvokeRequired)
            {
                SafeCallDelegateInvite addItem = new SafeCallDelegateInvite(AddInviteLinkItem);
                return((int)InviteLinks.Invoke(addItem, new object[] { Item }));
            }
            else
            {
                return(InviteLinks.Items.Add(Item));
            }
        }
Ejemplo n.º 5
0
        public static void LoadGlobal()
        {
            using (var db = new Database())
            {
                Channels.Clear();
                FullChannels.Clear();
                if (db.Channels.Any())
                {
                    var channelObjects = db.Channels.Include(ch => ch.GroupsChannelIsIn).ThenInclude(groupMembers => groupMembers.Group);
                    foreach (var groupMember in channelObjects)
                    {
                        Channels.Add(groupMember.Name, groupMember.ChannelID);
                        FullChannels.Add(groupMember);
                    }
                }

                PostTargets.Clear();
                foreach (var target in db.PostTargets)
                {
                    PostTargets.Add(target.Name, target.ChannelId);
                }


                Roles.Clear();
                if (db.Roles.Any())
                {
                    foreach (var role in db.Roles)
                    {
                        Roles.Add(role.Name, role.RoleID);
                    }
                }

                ServerID = db.PersistentData
                           .First(x => x.Name == "server_id")
                           .Value;

                InfoRoleManagerMessageId = db.PersistentData
                                           .First(x => x.Name == "rolemanager_message_id")
                                           .Value;

                StarboardStars = db.PersistentData
                                 .First(entry => entry.Name == "starboard_stars")
                                 .Value;

                Level2Stars = db.PersistentData
                              .First(entry => entry.Name == "level_2_stars")
                              .Value;

                Level3Stars = db.PersistentData
                              .First(entry => entry.Name == "level_3_stars")
                              .Value;

                Level4Stars = db.PersistentData
                              .First(entry => entry.Name == "level_4_stars")
                              .Value;

                DecayDays = db.PersistentData
                            .First(entry => entry.Name == "decay_days")
                            .Value;

                IllegalUserNameRegex = new Regex(db.PersistentData
                                                 .First(entry => entry.Name == "illegal_user_name_regex")
                                                 .StringValue, RegexOptions.Singleline | RegexOptions.Compiled);

                XPGainDisabled = db.PersistentData
                                 .First(entry => entry.Name == "xp_disabled")
                                 .Value == 1;

                InviteLinks.Clear();
                foreach (var link in db.InviteLinks)
                {
                    InviteLinks.Add(link);
                }

                ModmailCategoryId = db.PersistentData
                                    .First(entry => entry.Name == "modmail_category_id")
                                    .Value;

                XPGainRangeMin = (int)db.PersistentData
                                 .First(entry => entry.Name == "xp_gain_range_min")
                                 .Value;

                XPGainRangeMax = (int)db.PersistentData
                                 .First(entry => entry.Name == "xp_gain_range_max")
                                 .Value;

                Emotes.Clear();
                if (db.Emotes.Any())
                {
                    foreach (var post in db.Emotes)
                    {
                        Emotes.Add(post.Key, post);
                    }
                }

                StarboardPosts.Clear();
                if (db.StarboardMessages.Any())
                {
                    foreach (var post in db.StarboardMessages)
                    {
                        StarboardPosts.Add(post);
                    }
                }

                ProfanityChecks.Clear();
                if (db.ProfanityChecks.Any())
                {
                    foreach (var word in db.ProfanityChecks)
                    {
                        word.RegexObj = new Regex(word.Word, RegexOptions.Singleline | RegexOptions.Compiled);
                        ProfanityChecks.Add(word);
                    }
                }


                var ReadChannels = db.FAQCommandChannels
                                   .Include(faqComand => faqComand.Command)
                                   .Include(faqComand => faqComand.ChannelGroupReference)
                                   .Include(faqComand => faqComand.CommandChannelEntries)
                                   .OrderBy(command => command.Command.ID)
                                   .ToList();

                FAQCommands.Clear();
                FAQCommandChannels.Clear();

                FAQCommandChannels = ReadChannels;
                FAQCommands        = db.FAQCommands.ToList();

                Commands = db.Commands
                           .Include(co => co.GroupsCommandIsIn).ThenInclude(grp => grp.ChannelGroupReference).ThenInclude(ch => ch.Channels)
                           .ToList();
            }

            ReloadModmailThreads();
        }
Ejemplo n.º 6
0
        public static async Task CommandDispatcherMethod(TelegramBotAbstract sender, MessageEventArgs e)
        {
            var cmdLines = e.Message.Text.Split(' ');
            var cmd      = cmdLines[0].Trim();

            if (cmd.Contains("@"))
            {
                var cmd2        = cmd.Split("@");
                var botUsername = await sender.GetBotUsernameAsync();

                if (cmd2[1].ToLower() != botUsername.ToLower())
                {
                    return;
                }
            }

            switch (cmd)
            {
            case "/start":
            {
                await Start(sender, e);

                return;
            }

            case "/force_check_invite_links":
            {
                if (GlobalVariables.Creators.Contains(e.Message?.Chat?.Username?.ToLower()))
                {
                    _ = ForceCheckInviteLinksAsync(sender, e);
                }
                else
                {
                    await DefaultCommand(sender, e);
                }
                return;
            }

            case "/contact":
            {
                await ContactUs(sender, e);

                return;
            }

            case "/help":
            {
                await Help(sender, e);

                return;
            }

            case "/muteAll":
            {
                if (e.Message.Chat.Type != ChatType.Private)
                {
                    await CommandNotSentInPrivateAsync(sender, e);

                    return;
                }

                if (GlobalVariables.AllowedMuteAll.Contains(e.Message.From?.Username?.ToLower()))
                {
                    _ = MuteAllAsync(sender, e, cmdLines, e.Message.From.LanguageCode, e.Message.From.Username);
                }
                else
                {
                    await DefaultCommand(sender, e);
                }
                return;
            }

            case "/banAll":
            {
                if (e.Message.Chat.Type != ChatType.Private)
                {
                    await CommandNotSentInPrivateAsync(sender, e);

                    return;
                }

                if (GlobalVariables.AllowedBanAll.Contains(e.Message.From?.Username?.ToLower()))
                {
                    _ = BanAllAsync(sender, e, cmdLines, e.Message.From.LanguageCode, e.Message.From.Username);
                }
                else
                {
                    await DefaultCommand(sender, e);
                }
                return;
            }

            /*
             * case "/massiveSend":
             * {
             *  if (e.Message.Chat.Type != ChatType.Private)
             *  {
             *      await CommandNotSentInPrivateAsync(sender, e);
             *      return;
             *  }
             *
             *  try
             *  {
             *      if (GlobalVariables.AllowedBanAll.Contains(e.Message.From?.Username?.ToLower()))
             *          _ = MassiveSendAsync(sender, e, cmdLines, e.Message.From.LanguageCode, e.Message.From.Username);
             *      else
             *          await DefaultCommand(sender, e);
             *  }
             *  catch
             *  {
             *      ;
             *  }
             *
             *  return;
             * }
             */

            case "/ban":
            {
                _ = BanUserAsync(sender, e, cmdLines);
                return;
            }

            case "/banAllHistory":
            {
                // _ = BanUserAsync(sender, e, cmdLines);
                _ = BanUserHistoryAsync(sender, e);
                return;
            }

            case "/unbanAll":
            {
                if (e.Message.Chat.Type != ChatType.Private)
                {
                    await CommandNotSentInPrivateAsync(sender, e);

                    return;
                }

                if (GlobalVariables.AllowedBanAll.Contains(e.Message.From?.Username?.ToLower()))
                {
                    _ = UnbanAllAsync(sender, e, cmdLines, e.Message.From.LanguageCode, e.Message.From.Username);
                }
                else
                {
                    await DefaultCommand(sender, e);
                }
                return;
            }

            case "/test_spam":
            {
                if (e.Message == null)
                {
                    return;
                }
                if (e.Message.ReplyToMessage == null)
                {
                    return;
                }

                await TestSpamAsync(e.Message.ReplyToMessage, sender, e);

                return;
            }

            case "/groups":
            {
                await SendRecommendedGroupsAsync(sender, e);

                return;
            }

            case "/getGroups":
            {
                if ((GlobalVariables.Creators.Contains(e.Message.From.Username) ||
                     Owners.CheckIfOwner(e.Message.From.Id)) &&
                    e.Message.Chat.Type == ChatType.Private)
                {
                    string username = null;
                    if (!string.IsNullOrEmpty(e.Message.From.Username))
                    {
                        username = e.Message.From.Username;
                    }

                    _ = GetAllGroups(e.Message.From.Id, username, sender, e.Message.From.LanguageCode);
                    return;
                }

                await DefaultCommand(sender, e);

                return;
            }

            case "/allowmessage":
            {
                if ((Owners.CheckIfOwner(e.Message.From.Id)) &&
                    e.Message.Chat.Type == ChatType.Private)
                {
                    if (e.Message.ReplyToMessage == null || string.IsNullOrEmpty(e.Message.ReplyToMessage.Text))
                    {
                        var text = new Language(new Dictionary <string, string>
                            {
                                { "en", "You have to reply to a message containing the message" }
                            });
                        await sender.SendTextMessageAsync(e.Message.From.Id, text, ChatType.Private,
                                                          e.Message.From.LanguageCode, ParseMode.Html, null, e.Message.From.Username,
                                                          e.Message.MessageId);

                        return;
                    }

                    AllowedMessages.AddMessage(e.Message.ReplyToMessage.Text);
                    return;
                }

                await DefaultCommand(sender, e);

                return;
            }

            case "/unallowmessage":
            {
                if ((Owners.CheckIfOwner(e.Message.From.Id)) &&
                    e.Message.Chat.Type == ChatType.Private)
                {
                    if (e.Message.ReplyToMessage == null || string.IsNullOrEmpty(e.Message.ReplyToMessage.Text))
                    {
                        var text = new Language(new Dictionary <string, string>
                            {
                                { "en", "You have to reply to a message containing the message" }
                            });
                        await sender.SendTextMessageAsync(e.Message.From.Id, text, ChatType.Private,
                                                          e.Message.From.LanguageCode, ParseMode.Html, null, e.Message.From.Username,
                                                          e.Message.MessageId);

                        return;
                    }

                    AllowedMessages.removeMessage(e.Message.ReplyToMessage.Text);
                    return;
                }

                await DefaultCommand(sender, e);

                return;
            }

            case "/updateGroups":
            {
                if ((GlobalVariables.Creators.Contains(e.Message.From.Username) ||
                     Owners.CheckIfOwner(e.Message.From.Id)) &&
                    e.Message.Chat.Type == ChatType.Private)
                {
                    //System.Data.DataTable groups = Groups.GetAllGroups();
                    //var jsonFile = JObject.Parse(groups.ToString());
                    if (Variabili.L == null)
                    {
                        Variabili.L = new ListaGruppo();
                    }

                    Variabili.L.ImportaGruppiDaTabellaTelegramGruppiBot_PuntoBin();

                    var json =
                        JsonBuilder.getJson(new CheckGruppo(CheckGruppo.E.RICERCA_SITO_V3),
                                            false);
                }

                await DefaultCommand(sender, e);

                return;
            }

            case "/testtime":
            {
                if (e.Message.Chat.Type == ChatType.Private)
                {
                    await TestTime(sender, e);
                }

                return;
            }

            case "/time":
            {
                var lang = new Language(new Dictionary <string, string>
                    {
                        { "", DateTimeClass.NowAsStringAmericanFormat() }
                    });
                await SendMessage.SendMessageInPrivate(sender, e.Message.From.Id,
                                                       usernameToSendTo : e.Message.From.Username, langCode : e.Message.From.LanguageCode,
                                                       text : lang, parseMode : ParseMode.Default, messageIdToReplyTo : null);

                return;
            }

            case "/assoc_write":
            case "/assoc_send":
            {
                _ = await Assoc.Assoc_SendAsync(sender, e);

                return;
            }

            case "/assoc_publish":
            {
                if (Owners.CheckIfOwner(e.Message.From.Id))
                {
                    _ = await Assoc.Assoc_Publish(sender, e);
                }
                else
                {
                    _ = await DefaultCommand(sender, e);
                }
                return;
            }

            case "/assoc_read":
            {
                _ = await Assoc.Assoc_Read(sender, e, false);

                return;
            }

            case "/assoc_read_all":
            {
                if (Owners.CheckIfOwner(e.Message.From.Id))
                {
                    _ = await Assoc.Assoc_ReadAll(sender, e);
                }
                else
                {
                    _ = await DefaultCommand(sender, e);
                }
                return;
            }

            case "/assoc_delete":
            case "/assoc_remove":
            {
                _ = await Assoc.Assoc_Delete(sender, e);

                return;
            }

            case "/rooms":
            {
                await Rooms.RoomsMainAsync(sender, e);

                return;
            }

            case "/rules":
            {
                _ = await Rules(sender, e);

                return;
            }

            case "/qe":
            {
                _ = await QueryBot(true, e, sender);

                return;
            }

            case "/qs":
            {
                _ = await QueryBot(false, e, sender);

                return;
            }

            case "/update_links_from_json":
            {
                await InviteLinks.UpdateLinksFromJsonAsync(sender, e);

                return;
            }

            default:
            {
                await DefaultCommand(sender, e);

                return;
            }
            }
        }
Ejemplo n.º 7
0
 private static async Task <bool> CreateInviteLinkAsync(TelegramBotAbstract sender, MessageEventArgs e)
 {
     return(await InviteLinks.CreateInviteLinkAsync(e.Message.Chat.Id, sender));
 }
Ejemplo n.º 8
0
        public static void LoadGlobal()
        {
            using (var db = new Database())
            {
                Channels.Clear();
                FullChannels.Clear();
                if (db.Channels.Any())
                {
                    var channelObjects = db.Channels.Include(ch => ch.GroupsChannelIsIn).ThenInclude(groupMembers => groupMembers.Group).ToList();
                    foreach (var groupMember in channelObjects)
                    {
                        Channels.Add(groupMember.Name, groupMember.ChannelID);
                        FullChannels.Add(groupMember);
                    }
                }

                PostTargets.Clear();
                foreach (var target in db.PostTargets.ToList())
                {
                    PostTargets.Add(target.Name, target.ChannelId);
                }


                Roles.Clear();
                if (db.Roles.Any())
                {
                    foreach (var role in db.Roles.ToList())
                    {
                        Roles.Add(role.Name, role.RoleID);
                    }
                }

                ServerID = PersistentData.GetConfiguredInt("server_id", db);

                InfoRoleMessageIds = new List <ulong>();
                InfoRoleMessageIds.Add(PersistentData.GetConfiguredInt("rolemanager_message_id", db));
                InfoRoleMessageIds.Add(PersistentData.GetConfiguredInt("rolemanager_message_id_2", db));

                AutoMuteMaxLevel  = PersistentData.GetConfiguredInt("auto_mute_max_level", db);
                AutoMutePingCount = PersistentData.GetConfiguredInt("auto_mute_ping_count", db);

                StarboardStars = PersistentData.GetConfiguredInt("starboard_stars", db);

                Level2Stars = PersistentData.GetConfiguredInt("level_2_stars", db);

                Level3Stars = PersistentData.GetConfiguredInt("level_3_stars", db);

                ModModeRoleId = PersistentData.GetConfiguredInt("mod_mode_role_id", db);

                ModModeRoleColor = Convert.ToUInt32(PersistentData.GetConfiguredString("mod_mode_role_color", db), 16);

                Level4Stars = PersistentData.GetConfiguredInt("level_4_stars", db);

                DecayDays = PersistentData.GetConfiguredInt("decay_days", db);

                LegalUserNameRegex = new Regex(PersistentData.GetConfiguredString("legal_user_name_regex", db), RegexOptions.Singleline | RegexOptions.Compiled);

                XPGainDisabled = PersistentData.GetConfiguredInt("xp_disabled", db) == 1;

                ProfanityVoteThreshold = (int)PersistentData.GetConfiguredInt("profanity_votes_threshold", db);

                InviteLinks.Clear();
                foreach (var link in db.InviteLinks.ToList())
                {
                    InviteLinks.Add(link);
                }

                ModmailCategoryId = PersistentData.GetConfiguredInt("modmail_category_id", db);

                XPGainRangeMin = (int)PersistentData.GetConfiguredInt("xp_gain_range_min", db);

                XPGainRangeMax = (int)PersistentData.GetConfiguredInt("xp_gain_range_max", db);

                FilteredUdWords.Clear();
                FilteredUdWords.AddRange(db.FilteredUDWords);

                Emotes.Clear();
                if (db.Emotes.Any())
                {
                    foreach (var post in db.Emotes.ToList())
                    {
                        Emotes.Add(post.Key, post);
                    }
                }

                TrackedEmotes.Clear();
                if (db.Emotes.Any())
                {
                    foreach (var post in db.Emotes.AsQueryable().Where(e => !e.TrackingDisabled).ToList())
                    {
                        TrackedEmotes.Add(post.Key, post);
                    }
                }
                FeatureFlags.Clear();
                if (db.FeatureFlags.Any())
                {
                    foreach (var featureFlag in db.FeatureFlags.AsQueryable().ToList())
                    {
                        FeatureFlags.Add(featureFlag.FeatureName, featureFlag);
                    }
                }

                StarboardPosts.Clear();
                if (db.StarboardMessages.Any())
                {
                    foreach (var post in db.StarboardMessages.ToList())
                    {
                        StarboardPosts.Add(post);
                    }
                }

                Categories.Clear();
                if (db.Categories.Any())
                {
                    foreach (var category in db.Categories.ToList())
                    {
                        Categories.Add(category);
                    }
                }

                ProfanityChecks.Clear();
                if (db.ProfanityChecks.Any())
                {
                    foreach (var word in db.ProfanityChecks.ToList())
                    {
                        word.RegexObj = new Regex(word.Word, RegexOptions.Singleline | RegexOptions.Compiled);
                        ProfanityChecks.Add(word);
                    }
                }


                var ReadChannels = db.FAQCommandChannels
                                   .Include(faqComand => faqComand.Command)
                                   .Include(faqComand => faqComand.ChannelGroupReference)
                                   .Include(faqComand => faqComand.CommandChannelEntries)
                                   .OrderBy(command => command.Command.ID)
                                   .ToList();

                FAQCommands.Clear();
                FAQCommandChannels.Clear();

                FAQCommandChannels = ReadChannels;
                FAQCommands        = db.FAQCommands.ToList();

                Commands = db.Commands
                           .Include(co => co.GroupsCommandIsIn).ThenInclude(grp => grp.ChannelGroupReference).ThenInclude(ch => ch.Channels)
                           .ToList();
            }

            ReloadModmailThreads();
        }