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 + "的加群请求"); } } } }
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); } }
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("获取视频失败"); } }
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; } } }
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); }
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); } } } } }
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); }