public string GetHelpMessage(TgMessage RawMessage, string MessageType) { string finalHelpMsg; string groupHelp = "/soamenable - 启用一个功能\n" + "/soamdisable - 禁用一个功能\n" + "/soamstatus - 查看当前群组开启了的功能\n" + "/bkick - 将一个已在封禁列表中的用户从群组中移除出去"; string privateHelp = ""; string sharedHelp = "/banstat - 看看自己有没有被 Ban"; switch (MessageType) { case "group": case "supergroup": finalHelpMsg = groupHelp + "\n" + sharedHelp; break; case "private": finalHelpMsg = privateHelp + "\n" + sharedHelp; break; default: finalHelpMsg = sharedHelp; break; } if (RAPI.getIsBotAdmin(RawMessage.from.id)) { finalHelpMsg += "\n管理员指令: /ban /unban /getspamstr /addspamstr /delspamstr /getspampoints"; } return(finalHelpMsg); }
internal bool DeleteMessageCommand(TgMessage RawMessage) { if (TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.from.id) || RAPI.getIsBotOP(RawMessage.GetSendUser().id) || RAPI.getIsBotAdmin(RawMessage.GetSendUser().id)) { TgApi.getDefaultApiConnection().deleteMessage(RawMessage.GetReplyMessage().chat.id, RawMessage.GetReplyMessage().message_id); return(true); } return(true); }
internal static bool GetIsInWhiteList(int id) { if (RAPI.getIsBotOP(id) || RAPI.getIsBotAdmin(id)) { return(true); } if (WhiteList.CheckInList(id)) { return(true); } return(false); }
internal bool Leave(TgMessage RawMessage) { int saySpace = RawMessage.text.IndexOf(" "); if (saySpace == -1) { if (RAPI.getIsBotAdmin(RawMessage.GetSendUser().id) || RAPI.getIsBotOP(RawMessage.GetSendUser().id) || TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.GetSendUser().id)) { TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "由 群管理 (" + RawMessage.GetSendUser().id + ") 請求離開群組", RawMessage.message_id); TgApi.getDefaultApiConnection().leaveChat(RawMessage.chat.id); return(true); } } if (TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.GetSendUser().id)) { Dictionary <string, string> banValues = CommandDecoder.cutKeyIsValue(RawMessage.text.Substring(saySpace + 1)); long groupID = new GetValues().GetGroupID(banValues, RawMessage); if (groupID == 0) { TgApi.getDefaultApiConnection() .sendMessage(RawMessage.chat.id, "輸入錯誤!\n/leave [g=100000000]", RawMessage.message_id); } else { TgApi.getDefaultApiConnection().sendMessage(groupID, "由 Bot管理員 (" + RawMessage.GetSendUser().id + ") 請求離開群組", RawMessage.message_id); TgApi.getDefaultApiConnection().leaveChat(groupID); TgApi.getDefaultApiConnection().sendMessage(RawMessage.chat.id, "由 Bot管理員 (" + RawMessage.GetSendUser().id + ") 請求離開群組 " + groupID, RawMessage.message_id); } return(true); } TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "您並不是群組管理或是 Bot 管理員", RawMessage.message_id); return(true); }
internal bool Leave(TgMessage RawMessage) { int saySpace = RawMessage.text.IndexOf(" "); if (saySpace == -1) { if (RAPI.getIsBotAdmin(RawMessage.GetSendUser().id) || RAPI.getIsBotOP(RawMessage.GetSendUser().id) || TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.GetSendUser().id)) { TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "由 群管理 (" + RawMessage.GetSendUser().id + ") 請求離開群組", RawMessage.message_id); TgApi.getDefaultApiConnection().leaveChat(RawMessage.chat.id); return(true); } } if (TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.GetSendUser().id)) { long groupID = Convert.ToInt64(RawMessage.text.Substring(saySpace + 1).ToLower().Replace("g=", "")); if (groupID == 0) { TgApi.getDefaultApiConnection() .sendMessage(RawMessage.chat.id, "輸入錯誤!\n/leave [g=100000000]", RawMessage.message_id); } else { TgApi.getDefaultApiConnection().sendMessage(groupID, "由 Bot管理員 (" + RawMessage.GetSendUser().id + ") 請求離開群組", RawMessage.message_id); TgApi.getDefaultApiConnection().leaveChat(groupID); TgApi.getDefaultApiConnection().sendMessage(RawMessage.chat.id, "由 Bot管理員 (" + RawMessage.GetSendUser().id + ") 請求離開群組 " + groupID, RawMessage.message_id); } return(true); } TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "您並不是群組管理或是 Bot 管理員", RawMessage.message_id); return(true); }
internal bool HelpStatus(TgMessage RawMessage) { string finalHelpMsg; string groupHelp = Strings.GROUP_HELP; string privateHelp = Strings.PRIVATE_HELP; string sharedHelp = Strings.SHARED_HELP; switch (RawMessage.chat.type) { case "group": case "supergroup": finalHelpMsg = groupHelp + "\n" + sharedHelp; break; case "private": finalHelpMsg = privateHelp + "\n" + sharedHelp; break; default: finalHelpMsg = sharedHelp; break; } if (RAPI.getIsBotOP(RawMessage.from.id) || RAPI.getIsBotAdmin(RawMessage.from.id)) { finalHelpMsg = finalHelpMsg + Strings.OPERATIOR_HELP; } if (RAPI.getIsBotAdmin(RawMessage.from.id)) { finalHelpMsg = finalHelpMsg + Strings.ADMIN_HELP; } finalHelpMsg = finalHelpMsg + Strings.HELP_AD; TgApi.getDefaultApiConnection() .sendMessage(RawMessage.GetMessageChatInfo().id, finalHelpMsg, RawMessage.message_id, ParseMode: TgApi.PARSEMODE_MARKDOWN); return(true); }
internal bool AdminCommands(TgMessage RawMessage, string JsonMessage, string Command) { if (RawMessage.GetReplyMessage() != null) { if (RawMessage.GetMessageChatInfo().id == Temp.InternGroupID && RawMessage.GetReplyMessage().GetSendUser().id == TgApi.getDefaultApiConnection().getMe().id) { switch (Command) { case "/devban": case "/ban": new BanUserCommand().Ban(RawMessage, JsonMessage, Command); throw new StopProcessException(); } } } if (RAPI.getIsBotOP(RawMessage.GetSendUser().id) || RAPI.getIsBotAdmin(RawMessage.GetSendUser().id)) { switch (Command) { case "/groups": new AllGroups().Groups_Status(RawMessage); throw new StopProcessException(); } if (!Temp.DisableBanList) { switch (Command) { case "/groupadmin": new GetAdmins().GetGroupAdmins(RawMessage); throw new StopProcessException(); case "/getspampoints": new SpamStringManager().GetSpamPoints(RawMessage); throw new StopProcessException(); case "/devban": case "/ban": new BanUserCommand().Ban(RawMessage, JsonMessage, Command); throw new StopProcessException(); case "/devunban": case "/unban": new UnbanUserCommand().Unban(RawMessage); throw new StopProcessException(); case "/addhk": new HKWhitelist().addHKWhitelist(RawMessage); throw new StopProcessException(); case "/delhk": new HKWhitelist().deleteHKWhitelist(RawMessage); throw new StopProcessException(); case "/lshk": new HKWhitelist().listHKWhitelist(RawMessage); throw new StopProcessException(); } } if (RAPI.getIsBotAdmin(RawMessage.GetSendUser().id)) { if (!Temp.DisableBanList) { switch (Command) { case "/getallspamstr": new SpamStringManager().GetAllInfo(RawMessage); return(true); case "/addspamstr": new SpamStringManager().Add(RawMessage); throw new StopProcessException(); case "/delspamstr": new SpamStringManager().Remove(RawMessage); throw new StopProcessException(); case "/suban": new BanMultiUserCommand().BanMulti(RawMessage, JsonMessage, Command); throw new StopProcessException(); case "/suunban": new UnBanMultiUserCommand().UnbanMulti(RawMessage); throw new StopProcessException(); case "/getspamstr": new SpamStringManager().GetName(RawMessage); throw new StopProcessException(); case "/reloadspamstr": new SpamStringManager().reloadSpamList(RawMessage); throw new StopProcessException(); } } switch (Command) { case "/points": new SpamStringManager().GetSpamKeywords(RawMessage); throw new StopProcessException(); case "/cleanup": new CleanUP().CleanUP_Status(RawMessage); throw new StopProcessException(); case "/say": new BroadCast().BroadCast_Status(RawMessage); throw new StopProcessException(); case "/sdall": new OP().SDAll(RawMessage); throw new StopProcessException(); case "/seall": new OP().SEAll(RawMessage); throw new StopProcessException(); case "/addop": new OP().addOP(RawMessage); throw new StopProcessException(); case "/delop": new OP().delOP(RawMessage); throw new StopProcessException(); case "/addwl": new Whitelist().addWhitelist(RawMessage); throw new StopProcessException(); case "/delwl": new Whitelist().deleteWhitelist(RawMessage); throw new StopProcessException(); case "/lswl": new Whitelist().listWhitelist(RawMessage); throw new StopProcessException(); case "/block": new BlockGroup().addBlockGroup(RawMessage); throw new StopProcessException(); case "/unblock": new BlockGroup().deleteBlockGroup(RawMessage); throw new StopProcessException(); case "/blocks": new BlockGroup().listBlockGroup(RawMessage); throw new StopProcessException(); } } } return(false); }
internal bool HelpStatus(TgMessage RawMessage) { string finalHelpMsg; string groupHelp = "/leave - 離開群組\n" + "/soamenable - 啟用功能\n" + "/soamdisable - 關閉功能\n" + "/soamstatus - 取得目前群組開啟功能"; string privateHelp = ""; string sharedHelp = "/banstat - 查詢處分狀態\n" + "/user - 取得 User ID\n" + "/lsop - Operator 名冊"; switch (RawMessage.chat.type) { case "group": case "supergroup": finalHelpMsg = groupHelp + "\n" + sharedHelp; break; case "private": finalHelpMsg = privateHelp + "\n" + sharedHelp; break; default: finalHelpMsg = sharedHelp; break; } if (RAPI.getIsBotOP(RawMessage.from.id) || RAPI.getIsBotAdmin(RawMessage.from.id)) { finalHelpMsg = finalHelpMsg + "\n\nOperator指令:\n" + "/groupadmin - 取得群組管理員名單\n" + "/cnban - 封鎖\n" + "/ban - 封鎖\n" + "/cnunban - 解除封鎖\n" + "/unban - 解除封鎖\n" + "/addhk - 新增使用者至HK白名單\n" + "/delhk - 從HK白名單中刪除使用者\n" + "/lshk - 取得HK白名單列表\n" + "/groups - 取得所有群組\n" + "/getspampoints - 測試關鍵字"; } if (RAPI.getIsBotAdmin(RawMessage.from.id)) { finalHelpMsg = finalHelpMsg + "\n\nAdmin指令:\n" + "/suban - 批次封鎖\n" + "/suunban - 批次解除封鎖\n" + "/addspamstr - 新增 1 個自動規則\n" + "/delspamstr - 刪除 1 個自動規則\n" + "/getspamstr - 查看自動規則列表\n" + "/getallspamstr - 查看所有自動規則列表\n" + "/reloadspamstr - 重新載入自動規則列表\n" + "/points - 取得匹配到的關鍵字\n" + "/say - 廣播\n" + "/addwl - 新增使用者至白名單\n" + "/delwl - 從白名單中刪除使用者\n" + "/lswl - 取得白名單列表\n" + "/block - 新增群組至禁止使用名單\n" + "/unblock - 從禁止使用名單中刪除群組\n" + "/blocks - 取得禁止使用名單\n" + "/addop - 新增 Operator\n" + "/delop - 解除 Operator\n" + "/seall - 開啟所有群組功能\n" + "/sdall - 關閉所有群組功能\n" + "/cleanup - 清理機器人不在群組內的群組資料\n"; } finalHelpMsg = finalHelpMsg + "\n如要贊助本項目請洽[生產公司](http://t.me/DonateDoramiBot)"; TgApi.getDefaultApiConnection() .sendMessage(RawMessage.GetMessageChatInfo().id, finalHelpMsg, RawMessage.message_id, ParseMode: TgApi.PARSEMODE_MARKDOWN); return(true); }
public CallbackMessage OnSupergroupCommandReceive(TgMessage RawMessage, string JsonMessage, string Command) { try { GroupCfg cfg = Temp.GetDatabaseManager().GetGroupConfig(RawMessage.chat.id); if (cfg.AdminOnly == 0) { if (TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.from.id) || RAPI.getIsBotAdmin(RawMessage.from.id) || RAPI.getIsBotOP(RawMessage.from.id)) { } else { if (cfg.AutoDeleteCommand == 0) { new Thread(delegate() { SendMessageResult autodeletecommandsendresult = TgApi.getDefaultApiConnection() .sendMessage( RawMessage.GetMessageChatInfo().id, "請您不要亂玩機器人的指令,有問題請聯絡群組管理員。" ); Thread.Sleep(60000); TgApi.getDefaultApiConnection().deleteMessage( autodeletecommandsendresult.result.chat.id, autodeletecommandsendresult.result.message_id ); }).Start(); TgApi.getDefaultApiConnection().deleteMessage(RawMessage.chat.id, RawMessage.message_id); } return(new CallbackMessage { StopProcess = true }); } } if (SharedCommand(RawMessage, JsonMessage, Command)) { return(new CallbackMessage()); } switch (Command) { case "/leave": new LeaveCommand().Leave(RawMessage); break; case "/soamenable": new SoamManager().SoamEnable(RawMessage); break; case "/soamdisable": new SoamManager().SoamDisable(RawMessage); break; case "/__get_exception": throw new Exception(); case "/soamstat": case "/soamstatus": new SoamManager().SoamStatus(RawMessage); break; //case "/cnkick": // if (Temp.DisableBanList) // { // TgApi.getDefaultApiConnection().sendMessage( // RawMessage.chat.id, // "非常抱歉,目前版本已禁用封鎖用戶的功能,請聯絡管理員開啟此功能。", // RawMessage.message_id // ); // break; // } // if (RawMessage.reply_to_message == null) // { // TgApi.getDefaultApiConnection().sendMessage(RawMessage.chat.id, "請回覆一則訊息", RawMessage.message_id); // return new CallbackMessage(); // } // BanUser ban = Temp.GetDatabaseManager().GetUserBanStatus(RawMessage.reply_to_message.from.id); // if (ban.Ban == 0) // { // if (ban.Level == 0) // { // SetActionResult bkick_result = TgApi.getDefaultApiConnection().kickChatMember( // RawMessage.chat.id, // RawMessage.reply_to_message.from.id, // GetTime.GetUnixTime() + 86400 // ); // if (bkick_result.ok) // { // TgApi.getDefaultApiConnection().sendMessage(RawMessage.chat.id, "已移除", RawMessage.message_id); // return new CallbackMessage(); // } // else // { // TgApi.getDefaultApiConnection().sendMessage( // RawMessage.chat.id, // "無法移除,可能是機器人沒有適當的管理員權限。", // RawMessage.message_id // ); // return new CallbackMessage(); // } // } // else // { // TgApi.getDefaultApiConnection().sendMessage( // RawMessage.chat.id, // "無法移除,因為此使用者不在黑名單,請您聯絡群組的管理員處理。" + // "如果你認為這位使用者將會影響大量群組,您可連絡 @" + Temp.MainChannelName + " 提供的群組。", // RawMessage.message_id // ); // return new CallbackMessage(); // } // } // else // { // TgApi.getDefaultApiConnection().sendMessage( // RawMessage.chat.id, // "無法移除,因為此使用者不在黑名單,請您聯絡群組的管理員處理。" + // "如果你認為這位使用者將會影響大量群組,您可連絡 @" + Temp.MainChannelName + " 提供的群組。", // RawMessage.message_id // ); // return new CallbackMessage(); // } } return(new CallbackMessage()); } catch (StopProcessException) { return(new CallbackMessage { StopProcess = true }); } catch (Exception e) { RAPI.GetExceptionListener().OnException(e, JsonMessage); throw e; } }
internal bool AdminCommands(TgMessage RawMessage, string JsonMessage, string Command) { if (!RAPI.getIsBotAdmin(RawMessage.GetSendUser().id)) { return(false); } switch (Command) { case "/ban": if (Temp.DisableBanList || Temp.DisableAdminTools) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.chat.id, "非常抱歉,当前的编译已经禁用了封禁用户的功能,请您重新下载源码并编译以启用此功能。", RawMessage.message_id ); break; } new BanUserCommand().Ban(RawMessage, JsonMessage, Command); throw new StopProcessException(); case "/unban": if (Temp.DisableBanList) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.chat.id, "非常抱歉,当前的编译已经禁用了封禁用户的功能,请您重新下载源码并编译以启用此功能。", RawMessage.message_id ); break; } new UnbanUserCommand().Unban(RawMessage); throw new StopProcessException(); case "/getspamstr": if (Temp.DisableBanList) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.chat.id, "非常抱歉,当前的编译已经禁用了封禁用户的功能,请您重新下载源码并编译以启用此功能。", RawMessage.message_id ); break; } new SpamStringManager().GetName(RawMessage); return(true); case "/__getallspamstr": if (Temp.DisableBanList) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.chat.id, "非常抱歉,当前的编译已经禁用了封禁用户的功能,请您重新下载源码并编译以启用此功能。", RawMessage.message_id ); break; } new SpamStringManager().GetAllInfo(RawMessage); return(true); case "/__kick": if (Temp.DisableBanList) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.chat.id, "非常抱歉,当前的编译已经禁用了封禁用户的功能,请您重新下载源码并编译以启用此功能。", RawMessage.message_id ); break; } //new SpamStringManager().GetAllInfo(RawMessage); return(true); case "/addspamstr": if (Temp.DisableBanList) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.chat.id, "非常抱歉,当前的编译已经禁用了封禁用户的功能,请您重新下载源码并编译以启用此功能。", RawMessage.message_id ); break; } new SpamStringManager().Add(RawMessage); throw new StopProcessException(); case "/delspamstr": if (Temp.DisableBanList) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.chat.id, "非常抱歉,当前的编译已经禁用了封禁用户的功能,请您重新下载源码并编译以启用此功能。", RawMessage.message_id ); break; } new SpamStringManager().Remove(RawMessage); throw new StopProcessException(); case "/getspampoints": if (Temp.DisableBanList) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.chat.id, "非常抱歉,当前的编译已经禁用了封禁用户的功能,请您重新下载源码并编译以启用此功能。", RawMessage.message_id ); break; } new SpamStringManager().GetSpamPoints(RawMessage); throw new StopProcessException(); case "/jsonencode": int spacePath = RawMessage.text.IndexOf(" "); if (spacePath == -1) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.GetMessageChatInfo().id, "您的输入有误", RawMessage.message_id ); throw new StopProcessException(); } string jsonText = RawMessage.text.Substring(spacePath + 1); TgApi.getDefaultApiConnection().sendMessage( RawMessage.GetMessageChatInfo().id, "<code>" + TgApi.getDefaultApiConnection().jsonEncode(jsonText) + "</code>", RawMessage.message_id, ParseMode: TgApi.PARSEMODE_HTML ); throw new StopProcessException(); } return(false); }
internal bool AdminCommands(TgMessage RawMessage, string JsonMessage, string Command) { if (RAPI.getIsBotAdmin(RawMessage.GetSendUser().id) || RawMessage.GetMessageChatInfo().id == Config.InternGroupID) { if (!Config.DisableBanList) { switch (Command) { case "/history": if (Config.EnableBanHistory) { new GetHistory().getHistoryStatus(RawMessage); } throw new StopProcessException(); } } } if (RAPI.getIsBotOP(RawMessage.GetSendUser().id) || RAPI.getIsBotAdmin(RawMessage.GetSendUser().id) || RawMessage.GetMessageChatInfo().id == Config.InternGroupID) { switch (Command) { case "/groups": if (Config.EnableGetAllGroup) { new AllGroups().Groups_Status(RawMessage); } throw new StopProcessException(); } if (!Config.DisableBanList) { if (Command == "/" + Config.CustomPrefix + "ban") { if (Config.EnableCustomBan) { new BanUserCommand().Ban(RawMessage, JsonMessage, Command); } throw new StopProcessException(); } if (Command == "/" + Config.CustomPrefix + "unban") { if (Config.EnableCustomUnBan) { new UnbanUserCommand().Unban(RawMessage); } throw new StopProcessException(); } switch (Command) { case "/groupadmin": if (Config.EnableGetGroupAdmin) { new GetAdmins().GetGroupAdmins(RawMessage); } throw new StopProcessException(); case "/getspampoints": if (Config.EnableGetSpamStringPoints) { new SpamStringManager().GetSpamPoints(RawMessage); } throw new StopProcessException(); case "/ban": if (Config.EnableBan) { new BanUserCommand().Ban(RawMessage, JsonMessage, Command); } throw new StopProcessException(); case "/unban": if (Config.EnableUnBan) { new UnbanUserCommand().Unban(RawMessage); } throw new StopProcessException(); } } if (RAPI.getIsBotAdmin(RawMessage.GetSendUser().id)) { if (!Config.DisableBanList) { switch (Command) { case "/getallspamstr": if (Config.EnableGetAllSpamStringInfo) { new SpamStringManager().GetAllInfo(RawMessage); } return(true); case "/addspamstr": if (Config.EnableAddSpamString) { new SpamStringManager().Add(RawMessage); } throw new StopProcessException(); case "/delspamstr": if (Config.EnableDeleteSpamString) { new SpamStringManager().Remove(RawMessage); } throw new StopProcessException(); case "/suban": if (Config.EnableSuperBan) { new BanMultiUserCommand().BanMulti(RawMessage, JsonMessage, Command); } throw new StopProcessException(); case "/suunban": if (Config.EnableSuperUnBan) { new UnBanMultiUserCommand().UnbanMulti(RawMessage); } throw new StopProcessException(); case "/getspamstr": if (Config.EnableGetSpamString) { new SpamStringManager().GetName(RawMessage); } throw new StopProcessException(); case "/reloadspamstr": if (Config.EnableReloadSpamString) { new SpamStringManager().reloadSpamList(RawMessage); } throw new StopProcessException(); } } switch (Command) { case "/points": if (Config.EnableGetSpamStringKeywords) { new SpamStringManager().GetSpamKeywords(RawMessage); } throw new StopProcessException(); case "/cleanup": if (Config.EnableCleanUp) { new CleanUP().CleanUP_Status(RawMessage); } throw new StopProcessException(); case "/say": if (Config.EnableBroadcast) { new BroadCast().BroadCast_Status(RawMessage); } throw new StopProcessException(); case "/sdall": if (Config.EnableDisableAllGroupSoam) { new OP().SDAll(RawMessage); } throw new StopProcessException(); case "/seall": if (Config.EnableEnableAllGroupSoam) { new OP().SEAll(RawMessage); } throw new StopProcessException(); case "/addop": if (Config.EnableAddOP) { new OP().addOP(RawMessage); } throw new StopProcessException(); case "/delop": if (Config.EnableDeleteOP) { new OP().delOP(RawMessage); } throw new StopProcessException(); case "/addwl": if (Config.EnableWhitelistAdd) { new Whitelist().addWhitelist(RawMessage); } throw new StopProcessException(); case "/delwl": if (Config.EnableWhitelistDelete) { new Whitelist().deleteWhitelist(RawMessage); } throw new StopProcessException(); case "/lswl": if (Config.EnableWhitelisList) { new Whitelist().listWhitelist(RawMessage); } throw new StopProcessException(); case "/block": if (Config.EnableBlockListAdd) { new BlockGroup().addBlockGroup(RawMessage); } throw new StopProcessException(); case "/unblock": if (Config.EnableBlockListDelete) { new BlockGroup().deleteBlockGroup(RawMessage); } throw new StopProcessException(); case "/offspam": if (Config.EnableSpamOff) { new Spam().offSpam(RawMessage); } throw new StopProcessException(); case "/onspam": if (Config.EnableSpamOn) { new Spam().onSpam(RawMessage); } throw new StopProcessException(); case "/blocks": if (Config.EnableBlockListList) { new BlockGroup().listBlockGroup(RawMessage); } throw new StopProcessException(); } } } return(false); }
public CallbackMessage OnSupergroupMemberJoinReceive(TgMessage RawMessage, string JsonMessage, UserInfo JoinedUser) { DatabaseManager dbmgr = Config.GetDatabaseManager(); GroupCfg groupCfg = dbmgr.GetGroupConfig(RawMessage.GetMessageChatInfo().id); if (groupCfg.AntiBot == 0 && JoinedUser.is_bot && !TgApi.getDefaultApiConnection() .checkIsAdmin(RawMessage.GetMessageChatInfo().id, RawMessage.from.id)) { SetActionResult result = TgApi.getDefaultApiConnection() .kickChatMember(RawMessage.GetMessageChatInfo().id, JoinedUser.id, GetTime.GetUnixTime() + 300); if (result.ok) { TgApi.getDefaultApiConnection().sendMessage( RawMessage.GetMessageChatInfo().id, "機器人 : " + JoinedUser.GetUserTextInfoMarkdown() + "\n由於開啟了 AntiBot ,已自動移除機器人。", ParseMode: TgApi.PARSEMODE_MARKDOWN ); } else { TgApi.getDefaultApiConnection().sendMessage( RawMessage.GetMessageChatInfo().id, "機器人 : " + JoinedUser.GetUserTextInfoMarkdown() + "\n由於開啟了 AntiBot ,但沒有 (Ban User) 權限,請設定正確的權限。", ParseMode: TgApi.PARSEMODE_MARKDOWN ); } new Task(() => { long banUtilTime = GetTime.GetUnixTime() + 86400; Config.GetDatabaseManager().BanUser( 0, RawMessage.GetSendUser().id, 0, banUtilTime, "`自動封鎖 - 拉入機器人`" + JoinedUser.GetUserTextInfoMarkdown(), RawMessage.GetMessageChatInfo().id, 0, RawMessage.GetSendUser() ); }).Start(); } if (JoinedUser.id == TgApi.getDefaultApiConnection().getMe().id) { if (Config.EnableOnlyJoinGroupInviteByAdmin) { if (!RAPI.getIsBotAdmin(RawMessage.GetSendUser().id)) { Thread.Sleep(500); TgApi.getDefaultApiConnection().leaveChat(RawMessage.GetMessageChatInfo().id); return(new CallbackMessage()); } } if (Config.BlockGroups.CheckInList(RawMessage.GetMessageChatInfo().id)) { new Thread(delegate() { TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "此群組禁止使用本服務。"); Thread.Sleep(1000); TgApi.getDefaultApiConnection().leaveChat(RawMessage.GetMessageChatInfo().id); }).Start(); return(new CallbackMessage()); } if (Config.EnableAutoLeaveNormalGroup) { if (RawMessage.GetMessageChatInfo().type == "group") { TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "一般群組無法使用本服務,如有疑問請至 @" + Config.CourtGroupName + "詢問"); Thread.Sleep(2000); TgApi.getDefaultApiConnection().leaveChat(RawMessage.GetMessageChatInfo().id); return(new CallbackMessage()); } } if (!new CheckHelper().CheckAdminInReportGroup(RawMessage.GetMessageChatInfo().id)) { new Thread(delegate() { TgApi.getDefaultApiConnection().sendMessage(RawMessage.GetMessageChatInfo().id, "群管理必須加入[項目群組](https://t.me/" + Config.AdminContactGroupName + ")才可使用本服務。", ParseMode: TgApi.PARSEMODE_MARKDOWN); Thread.Sleep(2000); TgApi.getDefaultApiConnection().leaveChat(RawMessage.GetMessageChatInfo().id); }).Start(); return(new CallbackMessage()); } TgApi.getDefaultApiConnection().sendMessage( RawMessage.GetMessageChatInfo().id, "歡迎使用 @" + TgApi.getDefaultApiConnection().getMe().username + "\n" + "1.請在群組中给予 @" + TgApi.getDefaultApiConnection().getMe().username + " 管理員權限\n" + "2.使用 /help 可查閱使用說明\n" + "預設開啟的功能有 BlackList AutoKick AntiHalal SubscribeBanList,可以根據需要來調整。\n\n" + "注意 : 加入機器人即同意讓渡部分 Ban Users 權限予本項目組,並授權本組依據 @" + Config.ReportGroupName + " 置頂規定,代表群管理對群組內成員逕行封鎖\n" + "如不同意請立即移除此機器人,且禁止違背群主意願私自添加", RawMessage.message_id ); return(new CallbackMessage()); } if (Config.DisableBanList) { return(new CallbackMessage()); } if (Config.CourtGroupName != null && RawMessage.GetMessageChatInfo().username == Config.CourtGroupName) { BanUser banUser = dbmgr.GetUserBanStatus(JoinedUser.id); if (banUser.Ban == 0) { string resultmsg = "這位使用者被封鎖了\n請先閱讀置頂及公告區\n未依規定發表的任何訊息皆不回應\n\n" + banUser.GetBanMessageMarkdown(); TgApi.getDefaultApiConnection().sendMessage( RawMessage.GetMessageChatInfo().id, resultmsg, RawMessage.message_id, TgApi.PARSEMODE_MARKDOWN ); } else { if (!Config.EnableAutoKickNotBanUserinCourtGroup) { return(new CallbackMessage()); } if (Config.GetIsInWhiteList(JoinedUser.id)) { return(new CallbackMessage()); } TgApi.getDefaultApiConnection().sendMessage( RawMessage.GetMessageChatInfo().id, "您未被封鎖,請離開,本群僅提供被 CNBL 封鎖者申訴", RawMessage.message_id, TgApi.PARSEMODE_MARKDOWN ); TgApi.getDefaultApiConnection().restrictChatMember( RawMessage.GetMessageChatInfo().id, JoinedUser.id, 0, false, false, false, false); new Thread(delegate() { Thread.Sleep(30000); try { TgApi.getDefaultApiConnection().kickChatMember( RawMessage.GetMessageChatInfo().id, JoinedUser.id, GetTime.GetUnixTime() + 300 ); TgApi.getDefaultApiConnection().restrictChatMember( RawMessage.GetMessageChatInfo().id, JoinedUser.id, 0, true, false, false, false); } catch { } }).Start(); } return(new CallbackMessage()); } if (groupCfg.BlackList == 0) { BanUser banUser = dbmgr.GetUserBanStatus(JoinedUser.id); string resultmsg = ""; if (banUser.Ban == 0) { string banReason; if (banUser.ChannelMessageID != 0 && Config.MainChannelName != null) { banReason = "[原因請點選這裡查看](https://t.me/" + Config.MainChannelName + "/" + banUser.ChannelMessageID + ")\n"; } else { banReason = "\n原因 : " + banUser.Reason + "\n"; } if (banUser.Level == 0) { resultmsg += "警告 : 這個使用者「將會」對群組造成負面影響\n" + banReason + "\n若有誤判,可以到 [這個群組](https://t.me/" + Config.CourtGroupName + ") 尋求申訴"; if (groupCfg.AutoKick == 0) { try { SetActionResult result = TgApi.getDefaultApiConnection().kickChatMember( RawMessage.GetMessageChatInfo().id, JoinedUser.id, GetTime.GetUnixTime() + 300 ); if (!result.ok) { resultmsg += "\n注意 : 由於開啟了 AutoKick 但沒有 Ban Users 權限" + ",請關閉此功能或給予權限(Ban users)。"; } } catch { } } } else if (banUser.Level == 1) { resultmsg += "警告 : 這個使用者「可能」對群組造成負面影響" + banReason + "\n" + "請群組管理員多加留意\n" + "對於被警告的使用者,你可以通過 [這個群組](https://t.me/" + Config.CourtGroupName + ") 以請求解除。"; } } else { if (Config.DisableBanList == false && groupCfg.AutoDeleteSpamMessage == 0) { int max_point = 0; SpamMessage max_point_spam = new SpamMessage(); List <SpamMessage> spamMsgList = dbmgr.GetSpamMessageList(); foreach (SpamMessage smsg in spamMsgList) { int points = 0; switch (smsg.Type) { case 8: points = new SpamMessageChecker().GetNamePoints(smsg.Messages, RawMessage.from.full_name()); break; } if (points >= smsg.MinPoints) { if (points > max_point) { max_point = points; max_point_spam = smsg; } } } if (max_point > 0) { //Send alert and delete alert after 60 second new Thread(delegate() { string msg = ""; if (Config.ReportGroupName == Config.CourtGroupName) { msg = "偵測到 " + max_point_spam.FriendlyName + " ,已自動回報,如有誤封請聯繫 @" + Config.ReportGroupName + " 提出申訴。"; } else { msg = "偵測到 " + max_point_spam.FriendlyName + " ,已自動回報,如有誤報請加入 @" + Config.ReportGroupName + " 以報告誤報" + " ,如有疑慮請加入 @" + Config.CourtGroupName + " 提出申訴。"; } SendMessageResult autodeletespammessagesendresult = TgApi.getDefaultApiConnection() .sendMessage( RawMessage.GetMessageChatInfo().id, msg ); ProcessMessage(max_point_spam, RawMessage.message_id, RawMessage.GetMessageChatInfo().id, RawMessage.GetSendUser(), max_point); Thread.Sleep(30000); TgApi.getDefaultApiConnection().deleteMessage( autodeletespammessagesendresult.result.chat.id, autodeletespammessagesendresult.result.message_id ); }).Start(); return(new CallbackMessage { StopProcess = true }); } else { return(new CallbackMessage()); } } } new Thread(delegate() { SendMessageResult autodeletespammessagesendresult = TgApi.getDefaultApiConnection().sendMessage( RawMessage.GetMessageChatInfo().id, resultmsg, RawMessage.message_id, TgApi.PARSEMODE_MARKDOWN ); Thread.Sleep(60000); TgApi.getDefaultApiConnection().deleteMessage( autodeletespammessagesendresult.result.chat.id, autodeletespammessagesendresult.result.message_id ); TgApi.getDefaultApiConnection().deleteMessage( RawMessage.GetMessageChatInfo().id, RawMessage.message_id ); }).Start(); return(new CallbackMessage { StopProcess = true }); } return(new CallbackMessage()); }