internal static string getHelpMessage(List<PluginObject> plugins, TgMessage RawMessage, string MessageType) { if (RAPI.getIsDebugEnv()) Console.WriteLine("Message Caller : PluginsCaller -> getHelpMessage"); string msg = ""; foreach (PluginObject pl in plugins) { string pluginhelpmsg = null; try { pluginhelpmsg = pl.getHelpContent(RawMessage, MessageType); } catch (NotImplementedException) { } catch (Exception e) { RAPI.GetExceptionListener().OnException(e); } if (pluginhelpmsg != null || pluginhelpmsg != "") msg += "Plugin: " + pl.PluginName + "\n" + pluginhelpmsg + "\n\n"; } return msg; }
internal static void callOtherMessageReceiver(List <PluginObject> plugins, string method, string JsonMessage, object[] objects = null) { Type validType = typeof(IMemberJoinLeftListener); foreach (PluginObject pl in plugins) { if (pl.IsImportant) { try { pl.callMessage(method, objects, validType); } catch (NotImplementedException) { } catch (StopProcessException) { return; } catch (System.Reflection.TargetInvocationException e) { if (e.InnerException.GetType().IsAssignableFrom(typeof(StopProcessException))) { return; } throw e; } catch (Exception e) { RAPI.GetExceptionListener().OnException(e, JsonMessage); } } else { new Task(() => { try { pl.callMessage(method, objects, validType); } catch (NotImplementedException) { } catch (StopProcessException) { return; } catch (System.Reflection.TargetInvocationException e) { if (e.InnerException.GetType().IsAssignableFrom(typeof(StopProcessException))) { return; } throw e; } }).Start(); } } }
internal static void callOtherMessageReceiver(List<PluginObject> plugins, string method, string JsonMessage, object[] objects = null) { if (RAPI.getIsDebugEnv()) Console.WriteLine("Message Caller : PluginsCaller -> callOtherMessageReceiver"); Type validType = typeof(IMemberJoinLeftListener); foreach (PluginObject pl in plugins) if (pl.IsImportant) try { pl.callMessage(method, objects, validType); } catch (NotImplementedException) { } catch (StopProcessException) { return; } catch (TargetInvocationException e) { if (e.InnerException.GetType().IsAssignableFrom(typeof(StopProcessException))) return; throw e; } catch (Exception e) { RAPI.GetExceptionListener().OnException(e, JsonMessage); } else new Task(() => { try { pl.callMessage(method, objects, validType); } catch (NotImplementedException) { } catch (StopProcessException) { } catch (TargetInvocationException e) { if (e.InnerException.GetType().IsAssignableFrom(typeof(StopProcessException))) return; throw e; } }).Start(); }
private void CallPlugins(TgBaseMessage message, string JsonMessage) { if (message.message != null) // 正常的消息 { new Thread(delegate() { try { new NormalMessageCaller().call(message.message, JsonMessage); } catch (StopProcessException) { } catch (System.Exception e) { RAPI.GetExceptionListener().OnException(e, JsonMessage); } }).Start(); } }
public CallbackMessage OnPrivateCommandReceive(TgMessage RawMessage, string JsonMessage, string Command) { try { if (SharedCommand(RawMessage, JsonMessage, Command)) { return(new CallbackMessage()); } return(new CallbackMessage()); } catch (StopProcessException) { return(new CallbackMessage() { StopProcess = true }); } catch (Exception e) { RAPI.GetExceptionListener().OnException(e, JsonMessage); throw e; } }
internal void NewRequest(string JsonMessage) { TgBaseMessage data = null; try { data = (TgBaseMessage) new DataContractJsonSerializer( typeof(TgBaseMessage) ).ReadObject( new MemoryStream( Encoding.UTF8.GetBytes(JsonMessage) ) ); } catch (System.Runtime.Serialization.SerializationException e) { RAPI.GetExceptionListener().OnJsonDecodeError(e, JsonMessage); return; } CallPlugins(data, JsonMessage); return; }
internal static string getHelpMessage(List <PluginObject> plugins, TgData.TgMessage RawMessage, string MessageType) { string msg = ""; foreach (PluginObject pl in plugins) { string pluginhelpmsg = null; try { pluginhelpmsg = pl.getHelpContent(RawMessage, MessageType); } catch (NotImplementedException) { } catch (Exception e) { RAPI.GetExceptionListener().OnException(e); } if (pluginhelpmsg != null || pluginhelpmsg != "") { msg += "Plugin: " + pl.PluginName + "\n" + pluginhelpmsg + "\n\n"; } } return(msg); }
internal static void PostToAPI(int uid, bool ban, int level, long expires, string reason = null) { try { string configPath; if (ApiURL == null) { configPath = Environment.GetEnvironmentVariable("CNBLACKLIST_CONFIGPATH"); if (configPath == "" || configPath == null) { configPath = "./plugincfg/soamchecker/api.json"; } string configContent = File.ReadAllText(configPath); PrivateApiConfig data = (PrivateApiConfig) new DataContractJsonSerializer( typeof(PrivateApiConfig) ).ReadObject( new MemoryStream( Encoding.UTF8.GetBytes(configContent) ) ); ApiURL = data.ApiURL; ApiKey = data.ApiKey; } } catch (Exception) { return; } string realBan; if (ban) { realBan = "true"; } else { realBan = "false"; } if (reason != null) { reason = "&reason=" + reason; } else { reason = ""; } try { string resultMsg = TgApi.getDefaultApiConnection().postWeb( ApiURL, "method=set_value&apikey=" + ApiKey + "&uid=" + uid + "&ban=" + realBan + "&level=" + level + "&expires=" + expires + reason ).Content; if (resultMsg.IndexOf("\"ok\": false") != -1) { throw new Exception("API result = false:\n\n" + resultMsg); } } catch (Exception e) { RAPI.GetExceptionListener().OnException(e); } }
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; } }
public CallbackMessage OnSupergroupCommandReceive(TgMessage RawMessage, string JsonMessage, string Command) { try { GroupCfg cfg = Temp.GetDatabaseManager().GetGroupConfig(RawMessage.chat.id); if (cfg.AdminOnly == 0 && TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.from.id) == false) { return(new CallbackMessage() { }); } if (SharedCommand(RawMessage, JsonMessage, Command)) { return(new CallbackMessage()); } switch (Command) { case "/soamenable": if (cfg.AdminOnly == 0 && TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.from.id) == false) { return new CallbackMessage() { StopProcess = true } } ; new SoamManager().SoamEnable(RawMessage); break; case "/soamdisable": if (cfg.AdminOnly == 0 && TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.from.id) == false) { return new CallbackMessage() { StopProcess = true } } ; new SoamManager().SoamDisable(RawMessage); break; case "/__get_exception": throw new Exception(); case "/soamstat": case "/soamstatus": if (cfg.AdminOnly == 0 && TgApi.getDefaultApiConnection().checkIsAdmin(RawMessage.chat.id, RawMessage.from.id) == false) { return new CallbackMessage() { StopProcess = true } } ; new SoamManager().SoamStatus(RawMessage); break; case "/bkick": 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; } }