Exemple #1
0
 internal void CallGroups(BanUser user)
 {
     if (Temp.DisableAdminTools)
     {
         return;
     }
     if (user.Level == 1)
     {
         return;
     }
     using (var db = new BlacklistDatabaseContext())
     {
         List <GroupCfg> groupCfg = null;
         try
         {
             groupCfg = db.GroupConfig
                        .Where(cfg => cfg.SubscribeBanList == 0)
                        .ToList();
         }
         catch (InvalidOperationException)
         {
             return;
         }
         if (groupCfg == null)
         {
             return;
         }
         foreach (GroupCfg cfg in groupCfg)
         {
             var userInChatInfo = TgApi.getDefaultApiConnection().getChatMember(cfg.GroupID, user.UserID);
             if (userInChatInfo.ok)
             {
                 if (userInChatInfo.result.status == "member")
                 {
                     TgApi.getDefaultApiConnection().kickChatMember(cfg.GroupID, user.UserID, GetTime.GetUnixTime() + 86400);
                     TgApi.getDefaultApiConnection().sendMessage(
                         cfg.GroupID,
                         "新的被封禁用户:\n\n" + user.GetBanMessage() + "\n\n由于您订阅了封禁列表,已根据您的设定自动移除。"
                         );
                 }
             }
             Thread.Sleep(3000);
         }
     }
 }
        internal void CallGroups(BanUser user)
        {
            if (Temp.DisableAdminTools)
            {
                return;
            }
            if (user.Level == 1)
            {
                return;
            }
            using (var db = new BlacklistDatabaseContext())
            {
                List <GroupCfg> groupCfg = null;
                try
                {
                    groupCfg = db.GroupConfig
                               .Where(cfg => cfg.SubscribeBanList == 0)
                               .ToList();
                }
                catch (InvalidOperationException)
                {
                    return;
                }

                if (groupCfg == null)
                {
                    return;
                }

                var random = new Random();
                groupCfg = groupCfg.OrderBy(x => random.Next()).ToList();

                foreach (GroupCfg cfg in groupCfg)
                {
                    var userInChatInfo = TgApi.getDefaultApiConnection().getChatMember(cfg.GroupID, user.UserID);
                    if (userInChatInfo.ok)
                    {
                        if (userInChatInfo.result.status == "member")
                        {
                            new Thread(delegate()
                            {
                                Console.WriteLine("[SubscribeBanList] Ban " + user.UserID +
                                                  " in " + cfg.GroupID);
                                //TgApi.getDefaultApiConnection().restrictChatMember(
                                //    cfg.GroupID,
                                //    user.UserID,
                                //    GetTime.GetUnixTime() + 10,
                                //    false);
                                SendMessageResult result = TgApi.getDefaultApiConnection().sendMessage(
                                    cfg.GroupID,
                                    "使用者 : " + user.UserID + "\n" + user.GetBanMessage() +
                                    "\n\n由於開啟了 SubscribeBanList ,已嘗試自動移除。"
                                    );
                                Thread.Sleep(5000);
                                TgApi.getDefaultApiConnection()
                                .kickChatMember(cfg.GroupID, user.UserID, GetTime.GetUnixTime() + 1800);
                            }).Start();
                        }
                    }

                    Thread.Sleep(500);
                }
            }
        }
        public CallbackMessage ReceiveAllNormalMessage(TgMessage BaseMessage, string JsonMessage)
        {
            if (BaseMessage.chat.type != "group" && BaseMessage.chat.type != "supergroup")
            {
                return(new CallbackMessage());
            }
            string chatText = null;

            if (BaseMessage.text != null)
            {
                chatText = BaseMessage.text.ToLower();
            }
            else if (BaseMessage.caption != null)
            {
                chatText = BaseMessage.caption.ToLower();
            }
            else
            {
                return(new CallbackMessage());
            }
            // Call Admin START
            int atAdminPath = chatText.IndexOf("@admin");

            if (atAdminPath != -1)
            {
                int textLen = chatText.Length;
                if (textLen == 6)
                {
                    CallAdmin(BaseMessage);
                }
                else if (textLen >= 8)
                {
                    if (atAdminPath == 0)
                    {
                        if (chatText[7] == ' ')
                        {
                            CallAdmin(BaseMessage);
                        }
                    }
                    else if (atAdminPath == textLen - 6)
                    {
                        if (chatText[textLen - 7] == ' ')
                        {
                            CallAdmin(BaseMessage);
                        }
                    }
                    else
                    {
                        if (chatText[atAdminPath - 1] == ' ' && chatText[atAdminPath + 7] == ' ')
                        {
                            CallAdmin(BaseMessage);
                        }
                    }
                }
            }
            // Call Admin END

            if (TgApi.getDefaultApiConnection().checkIsAdmin(BaseMessage.chat.id, BaseMessage.from.id))
            {
                return(new CallbackMessage());
            }

            // ALTI HALAL AND INDIA START
            GroupCfg cfg = Temp.GetDatabaseManager().GetGroupConfig(BaseMessage.chat.id);

            if (cfg.AntiHalal == 0)
            {
                List <SpamMessage> spamMsgList = Temp.GetDatabaseManager().GetSpamMessageList();
                int halalPoints = new SpamMessageChecker().GetHalalPoints(chatText);
                int indiaPoints = new SpamMessageChecker().GetIndiaPoints(chatText);
                if (halalPoints >= 8 || indiaPoints >= 16)
                {
                    SendMessageResult result = TgApi.getDefaultApiConnection().forwardMessage(
                        Temp.AdminGroupID,
                        BaseMessage.GetMessageChatInfo().id,
                        BaseMessage.message_id
                        );
                    if (Temp.GetDatabaseManager().GetUserBanStatus(BaseMessage.from.id).Ban != 0)
                    {
                        new Task(() =>
                        {
                            Temp.GetDatabaseManager().BanUser(
                                0,
                                BaseMessage.from.id,
                                1,
                                0,
                                "System AUTO BAN: \n清真或印度消息",
                                BaseMessage.GetMessageChatInfo().id,
                                BaseMessage.message_id,
                                BaseMessage.from
                                );
                        }).Start();
                    }
                    new Task(() =>
                    {
                        TgApi.getDefaultApiConnection().kickChatMember(BaseMessage.chat.id, BaseMessage.from.id, 0);
                        TgApi.getDefaultApiConnection().deleteMessage(BaseMessage.chat.id, BaseMessage.message_id);
                    }).Start();
                    BanUser banstat = Temp.GetDatabaseManager().GetUserBanStatus(BaseMessage.GetSendUser().id);
                    if (banstat.Ban == 0)
                    {
                        TgApi.getDefaultApiConnection().kickChatMember(
                            BaseMessage.GetMessageChatInfo().id,
                            BaseMessage.GetSendUser().id,
                            GetTime.GetUnixTime() + 86400
                            );
                    }
                    if (result.ok)
                    {
                        new Thread(delegate() {
                            TgApi.getDefaultApiConnection().sendMessage(
                                Temp.AdminGroupID,
                                BaseMessage.GetSendUser().GetUserTextInfo() + "\n\n" + banstat.GetBanMessage() + "\n\n" +
                                BaseMessage.GetMessageChatInfo().GetChatTextInfo() + "\n\n" +
                                "匹配到的规则: 清真或印度消息\n" +
                                "清真得分: " + halalPoints + "\n" +
                                "印度得分: " + indiaPoints,
                                result.result.message_id
                                );
                        }).Start();
                    }
                    new Thread(delegate() {
                        SendMessageResult autodeletespammessagesendresult = TgApi.getDefaultApiConnection().sendMessage(
                            BaseMessage.GetMessageChatInfo().id,
                            "检查到清真或印度消息,已尝试上报用户行为,如有误报请加入 @" + Temp.MainChannelName + " 提供的群组以报告误报。"
                            );
                        Thread.Sleep(60000);
                        TgApi.getDefaultApiConnection().deleteMessage(
                            autodeletespammessagesendresult.result.chat.id,
                            autodeletespammessagesendresult.result.message_id
                            );
                    }).Start();
                    return(new CallbackMessage()
                    {
                        StopProcess = true
                    });
                }
            }
            // ALTI HALAL AND INDIA END

            // AUTO DELETE SPAM MESSAGE START
            if (Temp.DisableBanList == false && cfg.AutoDeleteSpamMessage == 0)
            {
                List <SpamMessage> spamMsgList = Temp.GetDatabaseManager().GetSpamMessageList();
                foreach (SpamMessage smsg in spamMsgList)
                {
                    int points = 0;
                    switch (smsg.Type)
                    {
                    case 0:
                        points = new SpamMessageChecker().GetEqualsPoints(smsg.Messages, chatText);
                        break;

                    case 1:
                        points = new SpamMessageChecker().GetRegexPoints(smsg.Messages, chatText);
                        break;

                    case 2:
                        points = new SpamMessageChecker().GetSpamPoints(smsg.Messages, chatText);
                        break;

                    case 3:
                        points = new SpamMessageChecker().GetIndexOfPoints(smsg.Messages, chatText);
                        break;

                    case 4:
                        points = new SpamMessageChecker().GetHalalPoints(chatText);
                        break;

                    case 5:
                        points = new SpamMessageChecker().GetIndiaPoints(chatText);
                        break;
                    }
                    if (points >= smsg.MinPoints)
                    {
                        SendMessageResult result = TgApi.getDefaultApiConnection().forwardMessage(
                            Temp.AdminGroupID,
                            BaseMessage.GetMessageChatInfo().id,
                            BaseMessage.message_id
                            );
                        ProcessMessage(smsg, BaseMessage.message_id, BaseMessage.GetMessageChatInfo().id, BaseMessage.GetSendUser());
                        BanUser banstat = Temp.GetDatabaseManager().GetUserBanStatus(BaseMessage.GetSendUser().id);
                        if (banstat.Ban == 0)
                        {
                            TgApi.getDefaultApiConnection().kickChatMember(
                                BaseMessage.GetMessageChatInfo().id,
                                BaseMessage.GetSendUser().id,
                                GetTime.GetUnixTime() + 86400
                                );
                        }
                        if (result.ok)
                        {
                            new Thread(delegate() {
                                TgApi.getDefaultApiConnection().sendMessage(
                                    Temp.AdminGroupID,
                                    BaseMessage.GetSendUser().GetUserTextInfo() + "\n\n" + banstat.GetBanMessage() + "\n\n" +
                                    BaseMessage.GetMessageChatInfo().GetChatTextInfo() + "\n\n" +
                                    "匹配到的规则: " + smsg.FriendlyName + "\n" +
                                    "得分: " + points,
                                    result.result.message_id
                                    );
                            }).Start();
                        }
                        new Thread(delegate() {
                            SendMessageResult autodeletespammessagesendresult = TgApi.getDefaultApiConnection().sendMessage(
                                BaseMessage.GetMessageChatInfo().id,
                                "检查到 " + smsg.FriendlyName +
                                " ,已尝试上报用户行为,如有误报请加入 @" + Temp.MainChannelName + " 提供的群组以报告误报。"
                                );
                            Thread.Sleep(60000);
                            TgApi.getDefaultApiConnection().deleteMessage(
                                autodeletespammessagesendresult.result.chat.id,
                                autodeletespammessagesendresult.result.message_id
                                );
                        }).Start();
                        return(new CallbackMessage()
                        {
                            StopProcess = true
                        });
                    }
                }
            }
            // AUTO DELETE SPAM MESSAGE END

            // Auto DELETE Command START
            if (cfg.AutoDeleteCommand == 0)
            {
                if (BaseMessage.entities != null)
                {
                    ContentEntities tmpEntities = BaseMessage.entities[0];
                    Log.i(tmpEntities.type + "" + tmpEntities.offset);
                    if (tmpEntities.type == "bot_command" && tmpEntities.offset == 0)
                    {
                        new Thread(delegate() {
                            SendMessageResult autodeletecommandsendresult = TgApi.getDefaultApiConnection().sendMessage(
                                BaseMessage.GetMessageChatInfo().id,
                                "请您不要乱玩机器人命令,如有疑问请您联系群组的管理员。"
                                );
                            Thread.Sleep(60000);
                            TgApi.getDefaultApiConnection().deleteMessage(
                                autodeletecommandsendresult.result.chat.id,
                                autodeletecommandsendresult.result.message_id
                                );
                        }).Start();
                        TgApi.getDefaultApiConnection().deleteMessage(BaseMessage.chat.id, BaseMessage.message_id);
                    }
                }
            }
            // Auto DELETE Command END

            // Admin ONLY START
            if (cfg.AdminOnly == 0)
            {
                throw new StopProcessException();
            }
            // Admin ONLY END
            return(new CallbackMessage());
        }
Exemple #4
0
        internal bool banstatus(TgMessage RawMessage)
        {
            int banstatSpace = RawMessage.text.IndexOf(" ");

            if (banstatSpace == -1)
            {
                string  banmsg = "";
                BanUser ban;
                ban    = Temp.GetDatabaseManager().GetUserBanStatus(RawMessage.GetSendUser().id);
                banmsg = "发送者:\n" + RawMessage.GetSendUser().GetUserTextInfo() + "\n\n" + ban.GetBanMessage();
                if (ban.Ban == 0)
                {
                    banmsg += "\n\n对于被封禁的用户,您可以通过 [点击这里](https://t.me/CNBlackListBot?start=soam_req_unban) 以请求解封。";
                }
                if (RawMessage.reply_to_message != null)
                {
                    ban     = Temp.GetDatabaseManager().GetUserBanStatus(RawMessage.reply_to_message.GetSendUser().id);
                    banmsg += "\n\n------\n\n被回复的消息的原发送用户:\n" +
                              RawMessage.reply_to_message.GetSendUser().GetUserTextInfo() + "\n\n" +
                              ban.GetBanMessage();
                    if (RawMessage.reply_to_message.forward_from != null)
                    {
                        ban     = Temp.GetDatabaseManager().GetUserBanStatus(RawMessage.reply_to_message.forward_from.id);
                        banmsg += "\n\n------\n\n被回复的消息转发自用户:\n" +
                                  RawMessage.reply_to_message.forward_from.GetUserTextInfo() + "\n\n" +
                                  ban.GetBanMessage();
                    }
                }
                TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, banmsg, RawMessage.message_id);
                return(true);
            }
            else
            {
                if (int.TryParse(RawMessage.text.Substring(banstatSpace + 1), out int userid))
                {
                    BanUser ban = Temp.GetDatabaseManager().GetUserBanStatus(userid);
                    TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "这位用户" + ban.GetBanMessage(), RawMessage.message_id);
                    return(true);
                }
                else
                {
                    TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "您的输入有误,请输入正确的 UID", RawMessage.message_id);
                    return(true);
                }
            }
        }