예제 #1
0
 private static object CheckAllowedMessageExpiration(object sender, MessageEventArgs messageEventArgs)
 {
     while (true)
     {
         AllowedMessages.CheckTimestamp();
         Thread.Sleep(1000 * 3600 * 24);
     }
 }
        public static SpamType CheckSpam(MessageEventArgs e)
        {
            if (e.Message != null && e.Message.Chat != null && e.Message.Chat.Type == ChatType.Private)
            {
                return(SpamType.ALL_GOOD);
            }


            if (e.Message != null && e.Message.From != null && e.Message.Chat != null &&
                (e.Message.From.Id == 777000 || e.Message.From.Id == e.Message.Chat.Id))
            {
                return(SpamType.ALL_GOOD);
            }

            if (GlobalVariables.AllowedSpam.Contains(e.Message?.From?.Username?.ToLower()))
            {
                return(SpamType.ALL_GOOD);
            }

            if (e.Message != null && e.Message.From != null && e.Message.Chat != null &&
                AllowedMessages.CheckMessage(e.Message.Text) == SpamType.SPAM_PERMITTED)
            {
                return(SpamType.SPAM_PERMITTED);
            }

            if (string.IsNullOrEmpty(e.Message.Text))
            {
                return(SpamTypeUtil.Merge(Blacklist.IsSpam(e.Message.Caption, e.Message.Chat.Id),
                                          Blacklist.IsSpam(e.Message.Photo)));
            }

            if (e.Message.Text.StartsWith("/"))
            {
                return(SpamType.ALL_GOOD);
            }

            var isForeign = DetectForeignLanguage(e);

            if (isForeign)
            {
                return(SpamType.FOREIGN);
            }

            return(SpamTypeUtil.Merge(Blacklist.IsSpam(e.Message.Text, e.Message.Chat.Id),
                                      Blacklist.IsSpam(e.Message.Photo)));
        }
예제 #3
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;
            }
            }
        }