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()); }
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); } } }