Exemple #1
0
 private void Event_OnMessage(string sender, RevMessageEvent e)
 {
     OnLog(e.post_type + "|" + e.Exit.ToString() + "|" + e.message);
     if (e.post_type == "message" && e.message != null && e.message.Length > 2 && e.message.Substring(0, 2) == "冰冰")
     {
         if (Robot.Admin.Contains(e.user_id.ToString()))
         {
             string message = e.message.Substring(2).Trim();
             switch (message)
             {
             case "资源负载":
                 e.Exit = true;
                 if (e.group_id > 0)
                 {
                     Cluster.Send(e.group_id, "[CQ:at,qq=" + e.user_id + "]正在统计,请稍候");
                 }
                 else
                 {
                     Friend.Send(e.user_id, "[CQ:at,qq=" + e.user_id + "]正在统计,请稍候");
                 }
                 UsageGet(e);
                 break;
             }
         }
     }
 }
        private void Event_OnMessage(string sender, RevMessageEvent e)
        {
            if (e.post_type == "message" && e.message_type == "group" && e.message != null && e.group_id > 0 && e.message.Length > 4 && e.message.Substring(0, 4) == ".自动化")
            {
                e.Exit = true;
                if (Robot.Admin.Contains(e.user_id.ToString()))
                {
                    string message = e.message.Substring(4).Trim();
                    message = System.Web.HttpUtility.HtmlDecode(message);
                    OnLog(message);
                    if (message == "停止")
                    {
                        if (thread.ContainsKey(e.group_id))
                        {
                            thread.Remove(e.group_id);
                        }
                        Cluster.Send(e.group_id, "停止成功");
                        return;
                    }
                    if (thread.ContainsKey(e.group_id))
                    {
                        Cluster.Send(e.group_id, "当前有任务在执行,请先停止");
                        return;
                    }

                    string time = new Regex(@"时间(?<TIME>\d+)秒").Match(message).Groups["TIME"].Value;
                    int    t    = 0;
                    if (time != null && time != "")
                    {
                        message = message.Replace("时间" + time + "秒", "").Trim();
                        try
                        {
                            t = Convert.ToInt32(time);
                        }
                        catch
                        {
                        }
                    }


                    if (message != "")
                    {
                        Thread threads = new Thread(new ParameterizedThreadStart(AutoSend));
                        thread.Add(e.group_id, threads);
                        Cluster.Send(e.group_id, "启动自动化成功," + (t > 0?(t + "秒执行一次") : "执行一次"));
                        threads.Start(new object[] { e, message, t });
                    }
                }
            }
        }
 private void MessageSend(RevMessageEvent e, string v)
 {
     if (e.message_type != null)
     {
         if (e.message_type == "private")
         {
             Friend.Send(e.user_id, v);
         }
         else
         {
             Cluster.Send(e.group_id, "[CQ:at,qq=" + e.user_id + "]" + v);
         }
     }
 }
        private void AutoSend(object obj)
        {
            object[]        o       = (object[])obj;
            RevMessageEvent e       = (RevMessageEvent)o[0];
            string          message = o[1].ToString();
            int             time    = Convert.ToInt32(o[2]);

            if (time > 0)
            {
                while (thread.ContainsKey(e.group_id))
                {
                    Cluster.Send(e.group_id, message);
                    Thread.Sleep(time * 1000);
                }
            }
            else
            {
                if (message == "发送消息")
                {
                    message = "这是测试【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "】";
                    Cluster.Send(e.group_id, "执行API:http://127.0.0.1:" + Robot.port + "/send_group_msg?group_id=" + e.group_id + "&message=" + Static.UrlEncode(message));
                    Thread.Sleep(100);
                }

                Cluster.Send(e.group_id, message);
            }

            try
            {
                if (thread.ContainsKey(e.group_id))
                {
                    thread.Remove(e.group_id);
                }
                //  Cluster.Send(e.group_id, "自动化已停止");
                OnLog("自动化已停止");
            }
            catch (ThreadAbortException ex)
            {
            }
            catch (Exception ex)
            {
            }
            finally
            {
            }
        }
 private void Event_OnMessage(string sender, RevMessageEvent e)
 {
     if (Config[0] == "true")
     {
         if (e.post_type == "request" && e.request_type == "friend")
         {
             e.Exit = true;
             Friend.Add(e.flag.ToString(), "0");
         }
     }
     if (Config[1] == "true")
     {
         if (e.post_type == "request" && e.request_type == "group" && e.sub_type == "invite")
         {
             e.Exit = true;
             Cluster.ClusterInviteMe(e.flag.ToString(), "0");
         }
     }
     if (Config[2] == "true")
     {
         if (e.post_type == "request" && e.request_type == "group" && e.sub_type == "add")
         {
             e.Exit = true;
             List <uint> Adm = new List <uint>();
             if (e.group_id > 0)
             {
                 Adm = Cluster.GetAdmin(e.group_id);
             }
             if (Adm.Contains(Robot.id))
             {
                 Cluster.ClusterRequestJoin(e.flag.ToString(), "0");
             }
             else
             {
                 OnLog("没有权限同意群" + Cluster.ClusterInfo(e.group_id).group_name + "的加群请求");
             }
         }
     }
 }
Exemple #6
0
        private void Event_OnFriend(string sender, RevMessageEvent e)
        {
            try
            {
                if (e.post_type == "message")
                {
                    if (e.message != null && e.group_id > 0)
                    {
                        if ((e.message == "开启" + this.PluginName || e.message == "关闭" + this.PluginName) && (Robot.Admin.Contains(e.user_id.ToString()) || (e.sender != null && e.sender.role != null && e.sender.role == "owner")))
                        {
                            OnLog(e.message);
                            e.Exit = true;
                            int index = 0;
                            if (e.message == "开启" + this.PluginName)
                            {
                                index = AddGroup(e.group_id);
                            }
                            if (e.message == "关闭" + this.PluginName)
                            {
                                index = DeleteGroup(e.group_id);
                            }
                            if (index == 0)
                            {
                                Cluster.Send(e.group_id, e.message + "失败");
                            }
                            else
                            {
                                Cluster.Send(e.group_id, e.message + "成功");
                            }
                            return;
                        }
                        if (!GroupData.Contains(e.group_id))
                        {
                            return;
                        }
                    }

                    if (e.message != null && ((e.message.IndexOf("车") > -1 && e.message.IndexOf("来") > -1) || (e.message.IndexOf("搞") > -1 && e.message.IndexOf("笑") > -1) || e.message.IndexOf("毕加猪") > -1 || e.message.IndexOf("bjz") > -1 || e.message.IndexOf("setu") > -1))
                    {
                        e.Exit = true;
                        if (e.message_type == "group" && e.group_id > 0)
                        {
                            if (conn.State != ConnectionState.Open)
                            {
                                conn.Open();
                            }
                            IDbCommand command = conn.CreateCommand();
                            command.CommandText = "SELECT * FROM GroupJoker WHERE gid=" + e.group_id;

                            string      id       = "";
                            IDataReader reader   = command.ExecuteReader();
                            long        LastTime = 0;
                            if (reader.Read())
                            {
                                LastTime = Convert.ToInt64(reader["t"]);
                            }
                            reader.Close();
                            long NowTime = Static.TimeStamp();
                            if (NowTime - LastTime < 30)
                            {
                                OnLog("时间不足30秒,不发送");
                                return;
                            }
                            command             = conn.CreateCommand();
                            command.CommandText = "REPLACE INTO GroupJoker (gid,t) VALUES (@gid,@t)";
                            DbParameter dbParameter = new DbParameter(command);
                            command.Parameters.Add(dbParameter.Parameter("@gid", e.group_id));
                            command.Parameters.Add(dbParameter.Parameter("@t", NowTime));
                            command.ExecuteNonQuery();
                        }
                        OnLog("正在获取视频");
                        Thread thread = new Thread(new ParameterizedThreadStart(GetVideo));
                        thread.Start(e);

                        /*string Video = GetVideo(e);
                         * if (Video != "")
                         * {
                         *  if(e.message_type == "private")
                         *  {
                         *      Friend.Send(e.user_id, "[CQ:video,file=file:///" + Video + "]");
                         *  }
                         *  if (e.message_type == "group" && e.group_id>0)
                         *  {
                         *      Cluster.Send(e.group_id, "[CQ:video,file=file:///" + Video + "]");
                         *  }
                         *
                         * }
                         * else
                         * {
                         *  OnLog("获取视频失败");
                         * }*/
                    }
                }
            }
            catch (Exception ex)
            {
                OnLog(ex.Message);
            }
        }
Exemple #7
0
        private void GetVideo(object obj)
        {
            RevMessageEvent e     = (RevMessageEvent)obj;
            string          fname = "";

            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                IDbCommand command = conn.CreateCommand();
                if (e.message != null && (e.message.IndexOf("毕加猪") > -1 || e.message.IndexOf("bjz") > -1))
                {
                    command.CommandText = "SELECT * FROM JokerList WHERE joker LIKE 'QVideo-%' ORDER BY RANDOM() limit 1";
                }
                else
                {
                    command.CommandText = "SELECT * FROM JokerList  ORDER BY RANDOM() limit 1";
                }

                string      id     = "";
                IDataReader reader = command.ExecuteReader();
                if (reader.Read())
                {
                    id = reader["joker"].ToString();
                }
                reader.Close();
                string DownUrl = "";
                if (id != "")
                {
                    OnLog("获取ID:" + id);
                    if (!File.Exists(Robot.path + @"JokerNetease\" + id + ".mp4"))
                    {
                        WebClient web = new WebClient();
                        web.Encoding = Encoding.UTF8;

                        if (id.Length > 7 && id.Substring(0, 7) == "QVideo-")
                        {
                            string vid       = id.Replace("QVideo-", "");
                            string VideoInfp = web.DownloadString("https://h5wx.video.qq.com/getinfo?callback=j&platform=11001&charge=0&otype=json&ehost=https%3A%2F%2Fview.inews.qq.com&sphls=0&sb=1&nocache=0&_rnd=1613111258363&guid=1613111258363&appVer=V2.0Build9496&vids=" + vid + "&defaultfmt=auto&&_qv_rmt=VEZfwXxMA12593l4u=&_qv_rmt2=48nK/4IM1535169lQ=&sdtfrom=v3110&_=1613111256247&jsonpCallback=j");
                            VideoInfp = VideoInfp.Substring(2);
                            VideoInfp = VideoInfp.Substring(0, VideoInfp.Length - 1);
                            VideoInfo v = JsonHelper.DeserializeObject <VideoInfo>(VideoInfp);
                            if (v.msg == null)
                            {
                                vi[] vData = v.vl.vi;
                                foreach (vi vv in vData)
                                {
                                    string fvkey  = vv.fvkey;
                                    int    br     = vv.br;
                                    string ti     = vv.ti;
                                    string DownUi = vv.ul.ui[0].url;
                                    DownUrl = DownUi + vv.fn + "?vkey=" + fvkey + "&br=" + br + "&platform=2&fmt=auto&level=0&sdtfrom=v3110&guid=1613111258363";
                                }
                            }
                            else
                            {
                                OnLog("获取地址失败:" + VideoInfp);
                                return;
                            }
                        }
                        else
                        {
                            web.Headers.Add("referer: https://c.m.163.com/news/v/" + id + ".html?spss=newsapp");
                            string data = web.DownloadString("https://gw.m.163.com/nc-gateway/api/v1/video/detail/" + id);
                            DownUrl = new Regex(@"""mp4Hd_url""\:""(?<URI>.+?)""", RegexOptions.IgnoreCase | RegexOptions.Multiline).Match(data).Groups["URI"].ToString();
                            if (DownUrl == "")
                            {
                                DownUrl = new Regex(@"""mp4_url""\:""(?<URI>.+?)""", RegexOptions.IgnoreCase | RegexOptions.Multiline).Match(data).Groups["URI"].ToString();
                            }
                        }



                        if (DownUrl != "")
                        {
                            if (e.message_type == "private")
                            {
                                Friend.Send(e.user_id, "获取地址成功,正在下载视频");
                            }
                            OnLog("获取地址成功:" + DownUrl);
                            DownLoad down = new DownLoad(DownUrl, Robot.path + @"JokerNetease\" + id + ".mp4");
                            if (down.errorCode == 0)
                            {
                                if (e.message_type == "private")
                                {
                                    Friend.Send(e.user_id, "下载文件成功,用时:" + down.Time + "秒,等待发送");
                                }
                                OnLog("下载文件成功,用时:" + down.Time + "秒");
                                fname = Robot.path + @"JokerNetease\" + id + ".mp4";
                            }
                            else
                            {
                                if (e.message_type == "private")
                                {
                                    Friend.Send(e.user_id, "下载文件失败:" + down.errorMessage);
                                }
                                OnLog("下载文件失败:" + down.errorMessage);
                            }
                        }
                        else
                        {
                            OnLog("获取地址失败:" + DownUrl);
                        }
                    }
                    else
                    {
                        if (e.message_type == "private")
                        {
                            Friend.Send(e.user_id, "获取文件成功,等待发送");
                        }
                        OnLog("获取文件成功,等待发送");
                        fname = Robot.path + @"JokerNetease\" + id + ".mp4";
                    }
                }
                else
                {
                    OnLog("获取ID:" + command.CommandText);
                }
            }
            catch (Exception ex)
            {
                OnLog(ex.Message);
            }


            string Video = fname;

            if (Video != "")
            {
                if (e.message_type == "private")
                {
                    Friend.Send(e.user_id, "[CQ:video,file=file:///" + Video + "]");
                }
                if (e.message_type == "group" && e.group_id > 0)
                {
                    Cluster.Send(e.group_id, "[CQ:video,file=file:///" + Video + "]");
                }
            }
            else
            {
                OnLog("获取视频失败");
            }
        }
Exemple #8
0
        private void UsageGet(RevMessageEvent e)
        {
            string                   Cpu      = "";
            List <string>            SendData = new List <string>();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor WHERE Name=\"_Total\"");
            var cpuItem = searcher.Get().Cast <ManagementObject>().Select(item => new { PercentProcessorTime = item["PercentProcessorTime"] }).First();

            if (cpuItem != null && cpuItem.PercentProcessorTime != null)
            {
                Cpu = cpuItem.PercentProcessorTime.ToString();
            }
            if (Cpu != "")
            {
                SendData.Add("CPU使用率:" + Cpu + "%");
            }
            string MemoryInfo        = "";
            int    MbDiv             = 1024 * 1024;
            long   availablebytes    = 0;
            long   PhysicalMemory    = 0;
            var    managementClassOs = new ManagementClass("Win32_OperatingSystem");

            foreach (var managementBaseObject in managementClassOs.GetInstances())
            {
                if (managementBaseObject["FreePhysicalMemory"] != null)
                {
                    availablebytes = 1024 * long.Parse(managementBaseObject["FreePhysicalMemory"].ToString()) / MbDiv;
                    break;
                }
            }

            var managementClass            = new ManagementClass("Win32_ComputerSystem");
            var managementObjectCollection = managementClass.GetInstances();

            foreach (var managementBaseObject in managementObjectCollection)
            {
                if (managementBaseObject["TotalPhysicalMemory"] != null)
                {
                    PhysicalMemory = long.Parse(managementBaseObject["TotalPhysicalMemory"].ToString()) / MbDiv;
                }
            }
            if (PhysicalMemory > 0)
            {
                MemoryInfo += "总内存" + PhysicalMemory + "M ";
            }
            if (availablebytes > 0)
            {
                MemoryInfo += "空闲内存" + availablebytes + "M ";
            }
            if (availablebytes > 0 && PhysicalMemory > 0)
            {
                MemoryInfo += "内存使用率" + decimal.Round((PhysicalMemory - availablebytes) * 100 / PhysicalMemory) + "%";
            }
            if (MemoryInfo != "")
            {
                SendData.Add(MemoryInfo);
            }
            int KbDiv = 1024;

            try
            {
                decimal BotMemoryInfo = Robot.process.WorkingSet64;
                if (BotMemoryInfo < 1024 * 1024)
                {
                    SendData.Add("Bot使用内存:" + decimal.Round((decimal)BotMemoryInfo / KbDiv, 2).ToString() + "K");
                }
                else
                {
                    SendData.Add("Bot使用内存:" + decimal.Round((decimal)BotMemoryInfo / MbDiv, 2).ToString() + "M");
                }
            }
            catch
            {
            }
            try
            {
                decimal UIMemoryInfo = Process.GetCurrentProcess().WorkingSet64;
                if (UIMemoryInfo < 1024 * 1024)
                {
                    SendData.Add("框架使用内存:" + decimal.Round((decimal)UIMemoryInfo / KbDiv, 2).ToString() + "K");
                }
                else
                {
                    SendData.Add("框架使用内存:" + decimal.Round((decimal)UIMemoryInfo / MbDiv, 2).ToString() + "M");
                }
            }
            catch
            {
            }

            DriveInfo[] allDirves = DriveInfo.GetDrives();

            int GbDiv = 1024 * 1024 * 1024;

            foreach (DriveInfo item in allDirves)
            {
                if (item.IsReady)
                {
                    SendData.Add(item.Name + "=>总空间:" + decimal.Round(item.TotalSize / GbDiv) + "G 可用空间:" + decimal.Round(item.AvailableFreeSpace / GbDiv) + "G 剩余百分比:" + decimal.Round(item.AvailableFreeSpace * 100 / item.TotalSize) + "%");
                }
            }


            if (e.group_id > 0)
            {
                Cluster.Send(e.group_id, string.Join("\n", SendData.ToArray()));
            }
            else
            {
                Friend.Send(e.user_id, string.Join("\n", SendData.ToArray()));
            }
        }
        private void Event_OnMessage(string sender, RevMessageEvent e)
        {
            if (e.message != null && e.message != "" && e.message.IndexOf(" ") > -1)
            {
                List <string> message = Regex.Split(e.message, "\\s+", RegexOptions.IgnoreCase).ToList <string>();
                string        action  = message[0].ToLower();
                if (action == "aes")
                {
                    if (message.Count != 4 && message.Count != 3)
                    {
                        MessageSend(e, "AES格式不正确,请输入 AES 字符串(加密/解密) 密钥(KEY) 偏移量(IV)");
                        return;
                    }
                    if (message.Count == 3)
                    {
                        message.Add("");
                    }


                    if (message[2].Length != 32 && message[2].Length != 16)
                    {
                        MessageSend(e, "AES密钥(KEY)不正确,请输入16位字符串(AES128)或者32位字符串(AES256)");
                        return;
                    }
                    if (message[3] != "" && message[3].Length != 32 && message[3].Length != 16 && message[3].Length != message[2].Length)
                    {
                        MessageSend(e, "AES偏移量(IV)不正确,请输入16位字符串(AES128)或者32位字符串(AES256)");
                        return;
                    }
                    int KeySize = message[2].Length == 16 ? 128 : 256;


                    string r = CryptoUtil.Decrypt(message[1], message[2], message[3], KeySize);
                    if (r != "")
                    {
                        if (message[3] == "")
                        {
                            MessageSend(e, "【" + message[1] + "】经AES-ECB" + KeySize + "解密后:\n" + r);
                        }
                        else
                        {
                            MessageSend(e, "【" + message[1] + "】经AES-CBC" + KeySize + "解密后:\n" + r);
                        }

                        return;
                    }
                    r = CryptoUtil.DecryptHex(message[1], message[2], message[3], KeySize);
                    if (r != "")
                    {
                        if (message[3] == "")
                        {
                            MessageSend(e, "【" + message[1] + "】经AES-ECB" + KeySize + "解密后:\n" + r);
                        }
                        else
                        {
                            MessageSend(e, "【" + message[1] + "】经AES-CBC" + KeySize + "解密后:\n" + r);
                        }

                        return;
                    }
                    r = CryptoUtil.Decrypt(message[1], message[2], message[3], KeySize, "CFB");
                    if (r != "")
                    {
                        MessageSend(e, "【" + message[1] + "】经AES-CFB" + KeySize + "解密后:\n" + r);
                        return;
                    }
                    r = CryptoUtil.DecryptHex(message[1], message[2], message[3], KeySize, "CFB");
                    if (r != "")
                    {
                        MessageSend(e, "【" + message[1] + "】经AES-CFB" + KeySize + "解密后:\n" + r);
                        return;
                    }


                    string revMessage = "";
                    string hexStr     = "";
                    if (message[3] == "")
                    {
                        r           = CryptoUtil.Encrypt(message[1], message[2], message[3], KeySize);
                        hexStr      = CryptoUtil.BaseToHex(r);
                        revMessage += "【" + message[1] + "】经AES-ECB" + KeySize + "加密后";
                        revMessage += "\nBase64:" + r;
                        if (hexStr != "")
                        {
                            revMessage += "\nHEX:" + hexStr;
                        }
                        MessageSend(e, revMessage);
                        return;
                    }
                    r           = CryptoUtil.Encrypt(message[1], message[2], message[3], KeySize);
                    hexStr      = CryptoUtil.BaseToHex(r);
                    revMessage += "【" + message[1] + "】经AES-CBC" + KeySize + "加密后";
                    revMessage += "\nBase64:" + r;
                    if (hexStr != "")
                    {
                        revMessage += "\nHEX:" + hexStr;
                    }
                    r           = CryptoUtil.Encrypt(message[1], message[2], message[3], KeySize, "CFB");
                    hexStr      = CryptoUtil.BaseToHex(r);
                    revMessage += "\n【" + message[1] + "】经AES-CFB" + KeySize + "加密后";
                    revMessage += "\nBase64:" + r;
                    if (hexStr != "")
                    {
                        revMessage += "\nHEX:" + hexStr;
                    }

                    MessageSend(e, revMessage);
                    return;
                }
                if (action == "md5")
                {
                    if (message.Count != 2)
                    {
                        MessageSend(e, "MD5格式不正确,请输入 MD5 待加密字符串");
                        return;
                    }
                    string r          = CryptoUtil.md5(message[1]);
                    string rHex       = CryptoUtil.MD5Hex(message[1]);
                    string revMessage = "【" + message[1] + "】经MD5加密后";
                    revMessage += "\n32位:" + r;
                    if (rHex != "")
                    {
                        revMessage += "\n16位:" + rHex;
                    }
                    MessageSend(e, revMessage);
                    return;
                }
                if (action == "base64")
                {
                    if (message.Count != 2)
                    {
                        MessageSend(e, "Base64格式不正确,请输入Base64 待加密/解密字符串");
                        return;
                    }
                    string r = CryptoUtil.Base64De(message[1]);
                    if (r != "")
                    {
                        MessageSend(e, "【" + message[1] + "】经Base64解密后:\n" + r);
                        return;
                    }
                    r = CryptoUtil.Base64(message[1]);
                    MessageSend(e, "【" + message[1] + "】经Base64加密后:\n" + r);
                    return;
                }
            }
        }
Exemple #10
0
        private string qcloudSend(string message, RevMessageEvent e)
        {
            string rev = "";

            try
            {
                string             service  = "tbp";
                string             endpoint = "tbp.tencentcloudapi.com";
                string             region   = "ap-guangzhou";
                string             action   = "TextProcess";
                string             version  = "2019-06-27";
                TextProcessRequest req      = new TextProcessRequest
                {
                    BotId      = QcloudBotId,
                    BotEnv     = "dev",
                    InputText  = message,
                    TerminalId = "bing_ice"
                };
                string   requestPayload             = JsonHelper.SerializeObject(req);
                DateTime date                       = DateTime.UtcNow;
                Dictionary <string, string> headers = Qcloud.BuildHeaders(aid, ak, service, endpoint, region, action, version, date, requestPayload);
                WebClient webClient                 = new WebClient();
                webClient.Encoding = Encoding.UTF8;
                foreach (KeyValuePair <string, string> kv in headers)
                {
                    webClient.Headers.Add(kv.Key + ": " + kv.Value);
                    Console.WriteLine(kv.Key + ": " + kv.Value);
                }

                string resp = webClient.UploadString("https://tbp.tencentcloudapi.com/", requestPayload);
                TextProcessResponse response = JsonHelper.DeserializeObject <TextProcessResponse>(resp);
                if (response.Response == null)
                {
                    OnLog("获取数据失败");
                    if (e != null)
                    {
                        Cluster.Send(e.group_id, "获取数据失败NULL");
                    }
                }
                else if (response.Response.Error != null)
                {
                    OnLog("获取数据失败:" + response.Response.Error.Message);
                    if (e != null)
                    {
                        Cluster.Send(e.group_id, "获取数据失败:" + response.Response.Error.Message);
                    }
                }
                else
                {
                    rev = response.Response.ResponseMessage.GroupList[0].Content;
                    OnLog("收到小冰回复:" + rev);
                }
            }
            catch (Exception ex)
            {
                OnLog(ex.ToString());
                if (e != null)
                {
                    Cluster.Send(e.group_id, ex.Message);
                }
            }
            return(rev);
        }
Exemple #11
0
        private void Event_OnMessage(string sender, RevMessageEvent e)
        {
            if (st == "")
            {
                SetTk();
            }
            if (e.post_type == "message" && e.message_type == "group" && e.group_id > 0 && e.message != null && (e.message == "开启小冰审核" || e.message == "关闭小冰审核" || (e.message.Length > 5 && e.message.Substring(0, 5) == "开启小冰 ") || e.message == "开启小冰" || e.message == "关闭小冰" || e.message == "小冰"))
            {
                if (Robot.Admin.Contains(e.user_id.ToString()) || (e.sender != null && e.sender.role != null && e.sender.role == "owner"))
                {
                    e.Exit = true;
                    if (e.message == "开启小冰")
                    {
                        File.WriteAllText(Robot.path + @"PluginBingIce\" + e.group_id, "微软小冰");
                        Cluster.Send(e.group_id, e.message + "成功");
                    }
                    else if (e.message == "关闭小冰")
                    {
                        File.Delete(Robot.path + @"PluginBingIce\" + e.group_id);
                        Cluster.Send(e.group_id, e.message + "成功");
                    }
                    else if (e.message == "开启小冰审核")
                    {
                        if (!TxtAi.Contains(e.group_id.ToString()))
                        {
                            TxtAi.Add(e.group_id.ToString());
                            File.WriteAllLines(Robot.path + @"PluginBingIce\txtai.plugin", TxtAi.ToArray());
                        }
                        Cluster.Send(e.group_id, e.message + "成功");
                    }
                    else if (e.message == "关闭小冰审核")
                    {
                        if (TxtAi.Contains(e.group_id.ToString()))
                        {
                            TxtAi.Remove(e.group_id.ToString());
                            File.WriteAllLines(Robot.path + @"PluginBingIce\txtai.plugin", TxtAi.ToArray());
                        }
                        Cluster.Send(e.group_id, e.message + "成功");
                    }
                    else if (e.message.Length > 5 && e.message.Substring(0, 5) == "开启小冰 ")
                    {
                        string bot = e.message.Substring(5);
                        if (!PluginType.Contains(bot))
                        {
                            Cluster.Send(e.group_id, e.message + "失败," + bot + "不存在->" + string.Join("|", PluginType.ToArray()));
                            return;
                        }
                        File.WriteAllText(Robot.path + @"PluginBingIce\" + e.group_id, bot);
                        Cluster.Send(e.group_id, e.message + "成功");
                    }
                    else
                    {
                        if (File.Exists(Robot.path + @"PluginBingIce\" + e.group_id))
                        {
                            string usingbot = File.ReadAllText(Robot.path + @"PluginBingIce\" + e.group_id);
                            string data     = "[CQ:at,qq=" + e.user_id + "]我在线,当前使用接口:" + usingbot + "\n相关指令:\n关闭请发【关闭小冰】";
                            foreach (string s in PluginType)
                            {
                                data += "\n开启" + s + "请发【开启小冰 " + s + "】";
                            }

                            Cluster.Send(e.group_id, data);
                        }
                        else
                        {
                            Cluster.Send(e.group_id, "[CQ:at,qq=" + e.user_id + "]我没在线,开启请发【开启小冰】");
                        }
                    }
                }
                return;
            }


            if (isRev == 0 && e.post_type == "message" && e.message_type == "group" && e.group_id > 0 && e.message != null)
            {
                if (!File.Exists(Robot.path + @"PluginBingIce\" + e.group_id))
                {
                    return;
                }
                string usingbot = File.ReadAllText(Robot.path + @"PluginBingIce\" + e.group_id);
                if (!PluginType.Contains(usingbot))
                {
                    return;
                }
                string message = e.message;


                if ((message.IndexOf("冰冰") > -1 && message.Substring(0, 2) == "冰冰") || (message.IndexOf(",qq=" + Robot.id) > -1))
                {
                    e.Exit  = true;
                    message = Regex.Replace(e.message, @"\[CQ\:(?<CQ>.*?)\,.*?\]", "");
                    message = message.Replace("冰冰", "").Trim();

                    if (message != "")
                    {
                        OnLog(message);


                        RevMessageEvent zj = null;
                        if (message.Length > 2 && message.Substring(0, 2) == "自检" && Robot.Admin.Contains(e.user_id.ToString()))
                        {
                            message = message.Replace("自检", "").Trim();
                            zj      = e;
                        }
                        string rev;
                        if (usingbot == "微软小冰")
                        {
                            rev = iceSend(message, zj);
                        }
                        else
                        {
                            rev = qcloudSend(message, zj);
                        }
                        if (rev != "")
                        {
                            Cluster.Send(e.group_id, rev);
                        }
                    }
                }
            }
        }
Exemple #12
0
        public string iceSend(string message, RevMessageEvent e = null)
        {
            if (WebCookie == "")
            {
                getCookieList();
            }
            string rev = "";

            if (message.Trim() != "")
            {
                try
                {
                    isRev = 1;
                    WebClient web = new WebClient();
                    web.Encoding = Encoding.UTF8;
                    web.Headers.Add("User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/88.0.4324.182");
                    web.Headers.Add("referer: " + referer);
                    web.Headers.Add("content-type: application/x-www-form-urlencoded");
                    web.Headers.Add("Cookie: " + WebCookie);
                    string data = web.UploadString("https://m.weibo.cn/msgDeal/sendMsg?", st + System.Web.HttpUtility.UrlEncode(message));

                    try
                    {
                        SendResult result = JsonHelper.DeserializeObject <SendResult>(data);
                        if (result.ok == 1)
                        {
                            OnLog("提交数据成功:" + message);
                            if (e != null)
                            {
                                Cluster.Send(e.group_id, "提交数据成功:" + message);
                            }
                            int i = 0;
                            while (i < 5)
                            {
                                WebClient client = new WebClient();
                                client.Encoding = Encoding.UTF8;
                                client.Headers.Add("User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/88.0.4324.182");
                                // client.Headers.Add("referer: " + referer);

                                client.Headers.Add("Cookie: " + WebCookie);
                                string r = client.DownloadString(messageUrl);

                                try
                                {
                                    SendResult rv = JsonHelper.DeserializeObject <SendResult>(r);
                                    if (rv.ok == 1 && rv.data != null)
                                    {
                                        if (rv.data.Count() > 0)
                                        {
                                            AskRev ask = rv.data[0];

                                            if (ask.sender_screen_name == "小冰")
                                            {
                                                rev = ask.text;
                                                OnLog("收到小冰回复:" + rev);

                                                rev = Regex.Replace(rev, @"\<.+?\>", "");
                                                if (e != null)
                                                {
                                                    Cluster.Send(e.group_id, "收到小冰回复:" + rev);
                                                }
                                                break;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        OnLog(r);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    OnLog(ex.Message);
                                }
                                i++;
                                Thread.Sleep(2000);
                            }
                        }
                        else
                        {
                            OnLog(data);
                            if (e != null)
                            {
                                Cluster.Send(e.group_id, "提交数据失败:" + data);
                            }
                            if (data.IndexOf("Tk err") > -1)
                            {
                                OnLog("原参数:" + st);
                                rev = "小冰正在设置参数,请等待设置完成";
                                SetTk();
                                OnLog("参数设置完成:" + st);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        if (e != null)
                        {
                            Cluster.Send(e.group_id, "提交数据失败:" + ex.Message);
                        }
                        OnLog(data + ex.ToString());
                    }
                    finally
                    {
                    }
                }
                catch (Exception ex)
                {
                    if (e != null)
                    {
                        Cluster.Send(e.group_id, "提交数据失败:" + ex.Message);
                    }
                    OnLog(ex.Message);
                }
                finally
                {
                }
            }
            isRev = 0;
            return(rev);
        }