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;
        }
Exemple #2
0
        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();
 }
Exemple #4
0
 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();
     }
 }
Exemple #5
0
 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;
     }
 }
Exemple #6
0
        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;
        }
Exemple #7
0
        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);
            }
        }
Exemple #9
0
        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;
            }
        }
Exemple #10
0
        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;
            }
        }