using CsharpHttpHelper; using Newtonsoft.Json; using PCRobot.Entitys; using PCRobot.Pack; using PCRobot.Utils; using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Web; using System.Web.Caching; using System.Windows.Forms; namespace PCRobot.PCWechat { ///// ///// 参考文档: ///// https://www.showdoc.cc/wxtool ///// https://www.showdoc.cc/WeApiUltimate ///// 密码:784615627. ///// public class Wechat_Xiaoxie : BaseApi { public delegate void OnEvent(string Name, string Message); public static OnEvent ClickEvent; #region 静态函数 public static void Install() { if (IsInstall) return; #region 自动登录新建设备信息,注册表开关 try { if (Version == "3.4.0.38") { string Winrarpath = @"Software\Tencent\WeChat"; string key = "FakeDeviceId"; //yes为开,no为关 RegistryHelper.SetRegistryKey("HKEY_CURRENT_USER", Winrarpath, key, "no"); RegistryHelper.GetRegistryValue(Winrarpath, key); } } catch (Exception ex) { LogHelper.GetSingleObj().Error("自动登录新建设备信息", $"注册表操作异常:{ex.Message} - {ex.StackTrace}"); } #endregion ClickEvent?.Invoke("开始登录", "正在检测已登录微信,请稍等...."); try { //Thread.Sleep(5000); //DllPath = HttpExtend.MapFile($"WeChatHelper_{Version}.dll", "Bin"); m_AcceptCallbackFunc = WxAcceptCallback; m_RecvCallbackFunc = WxRecvCallback; m_CloseCallbackFunc = WxCloseCallback; UseUtf8(); // 初始化Callback InitWeChatSocket(m_AcceptCallbackFunc, m_RecvCallbackFunc, m_CloseCallbackFunc); DllPath = HttpExtend.MapFile($"WeChatHelper_{Version}.dll", "Bin"); KillPc(true); } catch (Exception) { } finally { IsInstall = true; ClickEvent?.Invoke("登录完成", ""); } } private static string DllPath; /// /// 微信WeChatWin.dll基址 /// //private static IntPtr BaseAddress; public delegate void AcceptCallbackFunc(uint dwClientId); public delegate void RecvCallbackFunc(uint dwClientId, IntPtr intPtr, uint dwSize); public delegate void CloseCallbackFunc(uint dwClientId); private static AcceptCallbackFunc m_AcceptCallbackFunc; private static RecvCallbackFunc m_RecvCallbackFunc; private static CloseCallbackFunc m_CloseCallbackFunc; // 引入DLL导出函数 [DllImport("Bin\\WeChatServer.dll")] public static extern bool InitWeChatSocket(AcceptCallbackFunc acceptCallback, RecvCallbackFunc recvCallback, CloseCallbackFunc closeCallback); [DllImport("Bin\\WeChatServer.dll")] public static extern uint InjectWeChat(byte[] strDllPath); //[DllImport("Bin\\WeChatServer.dll")] //public static extern bool SetLoginWxid(byte[] szWxid); //BOOL __stdcall UseUtf8(); [DllImport("Bin\\WeChatServer.dll")] public static extern bool UseUtf8(); [DllImport("Bin\\WeChatServer.dll")] public static extern bool GetUserWeChatVersion(StringBuilder v); [DllImport("Bin\\WeChatServer.dll")] public static extern uint InjectWeChat2(byte[] dllPath, byte[] wechatPath); [DllImport("Bin\\WeChatServer.dll")] public static extern uint InjectWeChatMultiOpen(byte[] dllPath, byte[] wechatPath); [DllImport("Bin\\WeChatServer.dll", EntryPoint = "SendWeChatData")] public static extern bool _SendWeChatData(uint dwClienId, byte[] strJsonData); public bool SendWeChatData(uint dwClienId, string strJsonData) { try { if (WechatClient.IsDebug) LogHelper.GetSingleObj().Debug("调试发送", $"{dwClienId} -> {strJsonData}"); if (User != null && !string.IsNullOrEmpty(User.Wxid)) { var json = HttpExtend.JsonToDictionary(strJsonData); var type = json["type"].ToString(); MsgType msgType; if (!Enum.TryParse(type, out msgType)) return false; switch (msgType) { //截取发送消息 - 为是否是辅助输入提供判断 case MsgType.MT_SEND_TEXTMSG: case MsgType.MT_SEND_CHATROOM_ATMSG: case MsgType.MT_SEND_CARDMSG: case MsgType.MT_SEND_XMLMSG: case MsgType.MT_SEND_IMGMSG: case MsgType.MT_SEND_FILEMSG: case MsgType.MT_SEND_VIDEOMSG: case MsgType.MT_SEND_GIFMSG: { json = json["data"] as Dictionary; string to_wxid = json["to_wxid"].ToString(); string message = string.Empty; if (json.ContainsKey("content")) message = json["content"].ToString(); else if (json.ContainsKey("card_wxid")) message = json["card_wxid"].ToString(); else if (json.ContainsKey("xml")) message = json["xml"].ToString(); else if (json.ContainsKey("file")) message = json["file"].ToString(); if (!string.IsNullOrEmpty(message)) Common.SetCache(User.Wxid, to_wxid, message); } break; } } return _SendWeChatData(dwClienId, Encoding.UTF8.GetBytes(strJsonData)); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, $"{ex.Message} - {ex.StackTrace}"); } return false; } //[DllImport("Bin\\WeChatServer.dll")] [DllImport("Bin\\WeChatServer.dll")] public static extern bool DestroyWeChat(); [DllImport("Bin\\WeChatServer.dll")] public static extern uint InjectWeChatPid(int dwPid, byte[] dllPath); /// /// 卸载安装 /// public static void UnInstall() { try { DestroyWeChat(); LogHelper.GetSingleObj().Info(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, "卸载成功"); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } // 注入成功回调 static void WxAcceptCallback(uint dwClientId) { LogHelper.GetSingleObj().Info(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, "注入成功:" + dwClientId); Console.WriteLine("注入成功:" + dwClientId); } #region 微信版本基础变量 //private const string Version = "2.9.5.41"; //private const int PcOffSet = 0x1769E00;//2.9.5.41 //private const string PcMd5 = "194F44DF80553326711A4F576FE7166E";//2.9.5.41 //private const string Version = "3.3.0.93"; //private const int PcOffSet = 0x1DAEB90;//3.3.0.93 //private const string PcMd5 = "5EE8A5B9D4EE63BE1813632D8A7B2E77";//3.3.0.93 private const string Version = "3.4.0.38"; private const int PcOffSet = 0x1DEE968;//3.4.0.38 private const string PcMd5 = "AB0916C9949178A786192B188892AE2C";//3.4.0.38 #endregion public override string GetVersion() { return Version; } /// /// 杀死注入 pc /// /// private static void KillPc(bool isInject = false) { Process[] MyProcesses = Process.GetProcesses(); var path1 = HttpExtend.MapPath("PCWechat"); var path2 = HttpExtend.MapPath("PCWechat\\" + Version); //var path3 = HttpExtend.MapPath("PCWechat\\" + "3.3.0.93");//退出上个版本的微信 foreach (Process MyProcess in MyProcesses) { try { var name = MyProcess.ProcessName.ToUpper(); if (name == "WECHAT" && MyProcess.MainModule.FileName.StartsWith(path1)) { try { #region 退掉这个版本的微信 //if (MyProcess.MainModule.FileName.StartsWith(path3)) //{ // try // { // LogHelper.GetSingleObj().Info("主动Q", "版本不对杀死进程:" + MyProcess.Id); // MyProcess.Kill(); // } // catch (Exception) // { } //} #endregion //判断微信版本 if (MyProcess.MainModule.FileName.StartsWith(path2)) { var id = MyProcess.Id; if (isInject) { var result = Task.Factory.StartNew(delegate { try { var WechatWinFile = HttpExtend.MapFile("WeChatWin.dll", $"PCWechat\\" + Version); var md5 = Common.GetMD5Hash(WechatWinFile); if (!File.Exists(WechatWinFile) || md5 != PcMd5.ToUpper()) { return false; } else { LogHelper.GetSingleObj().Info("系统", $"开始注入进程:{id}..."); uint uin = InjectWeChatPid(id, Encoding.UTF8.GetBytes(DllPath)); LogHelper.GetSingleObj().Info("系统", $"注入成功:{id},句柄ID:{uin}"); return true; } } catch (Exception) { } return false; }).Wait(30000); if (!result) { try { LogHelper.GetSingleObj().Info("系统c", "杀死进程:" + MyProcess.Id); MyProcess.Kill(); } catch (Exception) { } } } else { try { LogHelper.GetSingleObj().Info("主动d", "杀死进程:" + MyProcess.Id); MyProcess.Kill(); } catch (Exception) { } } Thread.Sleep(10); } } catch (Exception) { } } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } } public static uint StartWechat(string wxid, bool isError = false) { var path = string.Empty; var WechatWinFile = HttpExtend.MapFile("WeChatWin.dll", $"PCWechat\\" + Version); var md5 = Common.GetMD5Hash(WechatWinFile); if (!File.Exists(WechatWinFile) || md5.ToUpper() != PcMd5.ToUpper()) { if (isError) throw new Exception("易转发客户端微信版本不支持,请登录易转发端手动处理"); var rst = MessageBox.Show("您的微信版本暂时不支持,立即重新安装吗?", "版本不兼容", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (rst == DialogResult.Yes) { var f = new WechatUpdate(Version); f.ShowDialog(); if (!f.IsOk) return 0; } else return 0; } path = HttpExtend.MapFile("WeChat.exe", $"PCWechat\\" + Version); //WechatLoginHelper.BeginLogin(wxid); //var ss = SetLoginWxid(Encoding.UTF8.GetBytes("")); //返回dwClientId var pid = InjectWeChat2(Encoding.UTF8.GetBytes(DllPath), Encoding.UTF8.GetBytes(path)); //WechatLoginHelper.ClickLogin((int)pid); return pid; //return InjectWeChatMultiOpen(Encoding.UTF8.GetBytes(DllPath), Encoding.UTF8.GetBytes(path)); } /// /// 远程登录微信 /// public static List RemoteLoginCodes = new List(); /// /// 是否在获取二维码 /// private static string RemoteCache = "get_login_code_cache"; private static readonly object Friend_Lock = new object(); /// /// pc微信登录二维码 /// /// public static void LoginQrcode(string wxid, string ServerMsgID) { try { RemoteLoginCode result = null; try { StartWechat(wxid, true); } catch (Exception ex) { result = new RemoteLoginCode() { pid = -1, rType = RobotType.客户端微信, b64Md5 = ex.Message }; } if (result == null) { result = Task.Factory.StartNew(delegate () { var awaitTime = DateTime.Now.AddSeconds(10); do { Thread.Sleep(200); Cache cache = HttpRuntime.Cache; object item = cache[RemoteCache]; if (item != null) { cache.Remove(RemoteCache); var r = item as RemoteLoginCode; return r; } } while (awaitTime >= DateTime.Now); return null; }).Result; } var socketClient = EasySoc.GetSocket(); var msg = new CommonResult(); msg.RobotUsername = string.Empty; msg.RobotUsernick = string.Empty; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvLoginCode; msg.Data = result == null ? string.Empty : JsonConvert.SerializeObject(result); socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 等待登录结果 /// public static Dictionary WaitLoginResult = new Dictionary(); // 接收消息回调 static void WxRecvCallback(uint dwClient, IntPtr intPtr, uint dwSize) { try { byte[] body = new byte[dwSize]; Marshal.Copy(intPtr, body, 0, body.Length); var recvData = Encoding.UTF8.GetString(body).Replace("\0", "").Trim();//再转成UTF8 if (WechatClient.IsDebug) LogHelper.GetSingleObj().Debug("调试收到文本消息", $"{dwClient} -> {recvData}\r\n"); //Console.WriteLine($"{dwClient} -> {recvData}\r\n"); var dwClientid = dwClient; Task.Factory.StartNew(delegate () { try { //Console.WriteLine("收到消息:" + recvData); var json = HttpExtend.JsonToDictionary(recvData); var type = json["type"].ToString(); var data = json.ContainsKey("data") ? json["data"] as Dictionary : null; MsgType msgType; if (!Enum.TryParse(type, out msgType)) return; if (PCRobotForm.AnalysisTypes != null && PCRobotForm.AnalysisTypes.Count != 0) { if (PCRobotForm.AnalysisTypes.FirstOrDefault(f => f == msgType.ToString().ToUpper()) == null) return; } switch (msgType) { case MsgType.MT_SEND_XMLMSG: break; case MsgType.MT_DECRYPT_IMG_MSG: break; case MsgType.MT_DEBUG_LOG: break; case MsgType.MT_RECV_QRCODE_MSG: { //{"data":{"code":"http://weixin.qq.com/x/A98qrQOk3qB6L_fWPtxF","file":"C:\\Users\\????006\\AppData\\Local\\Temp\\qrcF451.tmp","pid":24088},"type":11087} if (!data.ContainsKey("file")) return; var file = data["file"].ToString(); var reg = Regex.Match(file, @"Temp\\(?<文件名>[a-z0-9A-Z]+.tmp)", RegexOptions.IgnoreCase); if (reg.Success) { var codeFile = HttpExtend.MapFile($"{reg.Groups["文件名"].Value}", Path.GetTempPath()); if (File.Exists(codeFile)) { var pid = int.Parse(data["pid"].ToString()); var codeFilePng = Path.ChangeExtension(codeFile, "png"); try { if (File.Exists(codeFilePng)) File.Delete(codeFilePng); File.Move(codeFile, codeFilePng); if (File.Exists(codeFilePng)) { var cfBase64 = Common.ConvertImageToBase64(Image.FromFile(codeFilePng)); var codeInfo = new RemoteLoginCode() { pid = pid, cImgB64 = cfBase64, b64Md5 = HttpHelper.ToMD5(cfBase64), rType = RobotType.客户端微信, t = HttpExtend.GetTimeStamp(DateTime.Now) }; Cache cache = HttpRuntime.Cache; //查找 md5 的缓存,不存在则返回null object item = cache[RemoteCache]; cache.Insert(RemoteCache, codeInfo, null, DateTime.Now.AddSeconds(3), Cache.NoSlidingExpiration); RemoteLoginCodes.Add(codeInfo); } } catch (Exception) { } } } } break; case MsgType.MT_USER_LOGIN://登陆消息 { WechatLoginHelper.EndBinginLogin(); var wxid = data["wxid"].ToString(); var user = WechatClient.GetUser(wxid, dwClientid, WechatType.Xiaoxie); user.Nickname = data["nickname"].ToString(); user.HeaderUrl = data["avatar"].ToString(); user.DBFile = data["wx_user_dir"].ToString(); user.Pid = int.Parse(data["pid"].ToString()); user.Phone = data["phone"].ToString(); user.Uin = GetUin(user.Pid); WechatClient.OnRefUserEvent(user, WaitLoginResult); //if (WechatClient.IsDebug) // LogHelper.GetSingleObj().Debug("调试登录", $"{wxid} - {user}"); } break; case MsgType.MT_USER_LOGOUT: { var wxid = data["wxid"].ToString(); var user = WechatClient.Users.FirstOrDefault(f => f.Key == wxid).Value; if (user != null) { LogHelper.GetSingleObj().Info("系统", $"LogOut事件退出,Uin:{user.Uin},微信:{user.Nickname}({wxid})"); WechatClient.RemoveUser(user); } //if (WechatClient.IsDebug) // LogHelper.GetSingleObj().Debug("调试注销", $"{wxid} - {user}"); } break; case MsgType.MT_SQL_QUERY: break; case MsgType.MT_DATA_OWNER_MSG: break; case MsgType.MT_DATA_WXID_MSG: { //{"data":{"account":"MOKA_1314_","avatar":"http://wx.qlogo.cn/mmhead/ver_1/UKuQPgzLzEY0UPqTgmqpSibLmx1BMibAlwJxOp4t8QksClGJP8tLHxUiaBDAax1Vf0Eiae6wKBIoT3ibAgOYTuuWiaVDiaiayiaaIZF46LcE5aBvTtSQ/132","city":"Chengdu","country":"CN","nickname":"进销存","province":"Sichuan","remark":"","sex":2,"wxid":"wxid_va4xpj22"},"type":11029} lock (Friend_Lock) { var wxid = data["wxid"]?.ToString(); if (Common.IsGzh(wxid, WechatClient.IsGzh)) return; var f = new FriendInfo(); f.account = data["account"]?.ToString(); f.wxid = wxid; f.nickname = data["nickname"]?.ToString(); f.remark = data["remark"]?.ToString(); f.avatar = data["avatar"]?.ToString(); f.city = data["city"]?.ToString(); f.country = data["country"]?.ToString(); f.province = data["province"]?.ToString(); f.sex = int.Parse(data["sex"]?.ToString()); var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; var friend = user.Friends.FirstOrDefault(z => z.wxid == f.wxid); if (friend != null) if (!user.Friends.TryTake(out friend)) return; user.Friends.Add(f); } } break; case MsgType.MT_DATA_FRIENDS_MSG: { var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; var client = WechatClient.GetApi(user) as Wechat_Xiaoxie; if (!user.IsGetFriend) return; try { var _data = json.ContainsKey("data") ? json["data"] as ArrayList : null; if (_data == null) return; for (int i = 0; i < _data.Count; i++) { var item = _data[i] as Dictionary; var wxid = item["wxid"]?.ToString(); if (Common.IsGzh(wxid, WechatClient.IsGzh)) continue; var f = new FriendInfo(); f.wxid = wxid; f.account = item["account"]?.ToString(); f.nickname = item["nickname"]?.ToString(); f.remark = item["remark"]?.ToString(); f.avatar = item["avatar"]?.ToString(); f.sex = int.Parse(item["sex"]?.ToString()); f.city = item["city"]?.ToString(); var friend = user.Friends.FirstOrDefault(z => z.wxid == f.wxid); if (friend == null) user.Friends.Add(f); } } catch (Exception ex) { } finally { user.IsGetFriend = false; } } break; case MsgType.MT_DATA_CHATROOMS_MSG: { if (data == null) { lock (Friend_Lock) { //{"data":[{"avatar":"http://wx.qlogo.cn/mmcrhead/iahdQicCC5VBRq5vMm7FxlfPct57WiadZ0NEnMUeicvXyS0fh73Hibw0QkkDMw9RQMETbWENFia9NQlmpibkH0bKsOothztfu8waTFy/0","is_manager":0,"manager_wxid":"wxid_yeh4ssxdjpqv12","member_list":["wxid_yeh4ssxdjpqv12","wujiahua0876","wxid_aiwyq8o6iqja12","wxid_lzssz365bwl222"],"nickname":"成都测试群","total_member":4,"wxid":"24444455370@chatroom"}],"type":11031} var _data = json.ContainsKey("data") ? json["data"] as ArrayList : null; if (_data == null) return; var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; for (int i = 0; i < _data.Count; i++) { Thread.Sleep(1000); //{"avatar":"http://wx.qlogo.cn/mmcrhead/00GYaClAoOpPmXm2NY7u8dZ0mXndbaJvesrlr88KhsUXaPTGvDE8Rt5wpSv9qtHLZJSIHLNBbxEhwFBnbV9FmE6O2fAmlMW1/0","is_manager":0,"manager_wxid":"wzm881101","member_list":["wzmdd2562","wxid_axvwtp4221","huih2861","a30432165487","wangs381015","wxid_vy1kfbt22","wiujihcj056"],"nickname":"吃卤蛋不吐卤蛋壳群","total_member":7,"wxid":"6975286487@chatroom"} var item = _data[i] as Dictionary; var f = new FriendInfo(); f.avatar = item["avatar"]?.ToString(); f.wxid = item["wxid"]?.ToString(); f.nickname = item["nickname"]?.ToString(); f.remark = item["nickname"]?.ToString(); f.manager_wxid = item["manager_wxid"]?.ToString(); f.is_manager = int.Parse(item["is_manager"]?.ToString()); f.member_list = string.Join(",", (string[])(item["member_list"] as ArrayList).ToArray(typeof(string))); var group = user.Groups.FirstOrDefault(z => z.wxid == f.wxid); if (group == null) { //群不存在,去获取群成员信息 var _json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_CHATROOM_MEMBERS_MSG, data = new { room_wxid = f.wxid } }); _SendWeChatData(dwClientid, Encoding.UTF8.GetBytes(_json)); group = new GroupInfo() { wxid = f.wxid, nickname = f.nickname, avatar = f.avatar, total_member = f.member_list.Length, friends = new List() }; user.Groups.Add(group); } else group.total_member = f.member_list.Length; var friend = user.Friends.FirstOrDefault(z => z.wxid == f.wxid); if (friend == null) user.Friends.Add(f); } } } } break; case MsgType.MT_DATA_CHATROOM_MEMBERS_MSG: { lock (Friend_Lock) { var group_wxid = data["group_wxid"].ToString(); var total = data["total"].ToString(); var member_list = data["member_list"] as ArrayList; if (member_list == null) return; var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; var group = user.Groups.FirstOrDefault(z => z.wxid == group_wxid); if (group == null) { group = new GroupInfo() { wxid = group_wxid, total_member = member_list.Count, friends = new List() }; user.Groups.Add(group); } else group.total_member = member_list.Count; for (int i = 0; i < member_list.Count; i++) { //{"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/klibauQfLYtmfniaYAzsV9l6V4cSHmdDhniaTmJ6aGo0z035JTkB5QWrOUbAPnJnP4YXTMuKKmwNBMNv2Fbj5ia9icNicYeXGXbbsRiagGFKryASro/132","city":"","country":"","nickname":"陈建","province":"","remark":"","sex":0,"wxid":"wxid_e1j30jf2k5zdk022"} var item = member_list[i] as Dictionary; var f = new FriendInfo(); f.account = item["account"]?.ToString(); f.avatar = item["avatar"]?.ToString(); f.city = item["city"]?.ToString(); f.country = item["country"]?.ToString(); f.nickname = item["nickname"]?.ToString(); f.province = item["province"]?.ToString(); f.remark = item["remark"]?.ToString(); f.sex = int.Parse(item["sex"]?.ToString()); f.wxid = item["wxid"]?.ToString(); var friend = group.friends.FirstOrDefault(z => z.wxid == f.wxid); if (friend == null) group.friends.Add(f); } } #region xx //List> nmss = new List>(); //List mis = new List(); //var count = 20; //var rem = member_list.Count % count; //var num = member_list.Count / count; //for (int i = 0; i < member_list.Count; i++) //{ // var item = member_list[i] as Dictionary; // var account = item["account"]?.ToString(); // var avatar = item["avatar"]?.ToString(); // var city = item["city"]?.ToString(); // var country = item["country"]?.ToString(); // var nickname = item["nickname"]?.ToString(); // var province = item["province"]?.ToString(); // var remark = item["remark"]?.ToString(); // var sex = item["sex"]?.ToString(); // var wxid = item["wxid"]?.ToString(); // nmWxidInfo MemberInfo = new nmWxidInfo(); // MemberInfo.Wxid = wxid; // MemberInfo.WxNo = account; // MemberInfo.Nick = nickname; // MemberInfo.Mark = remark; // MemberInfo.HeadIMG = avatar; // mis.Add(MemberInfo); // if (mis.Count >= count) // { // nmss.Add(mis); // mis = new List(); // } // else if (nmss.Count == num && mis.Count == rem) // { // nmss.Add(mis); // } //} //var socketClient = EasySoc.GetSocket(); //var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); //if (user == null) return; //foreach (var item in nmss) //{ // WechatGroupMember msg = new WechatGroupMember(); // msg.RobotUsername = user.Wxid; // msg.RobotUsernick = user.Nickname; // msg.RobotType = RobotType.客户端微信; // msg.Cmd = PCRobotCMD.rcvGroupMember; // nmGroupInfo group = new nmGroupInfo(); // group.Count = int.Parse(total); // group.GroupID = group_wxid; // group.List = item; // msg.Message = HttpHelper.ObjectToJson(new Dictionary() { { "data", group } }); // socketClient.Send(msg); // Thread.Sleep(5); //} #endregion } break; case MsgType.MT_DATA_PUBLICS_MSG: { } break; case MsgType.MT_UPDATE_WXID_MSG: { } break; case MsgType.MT_UPDATE_ROOM_MEMBER_MSG: { } break; case MsgType.MT_RECV_LINK_MSG: { //if (WechatClient.IsDebug) // LogHelper.GetSingleObj().Debug("调试收到链接", $"{dwClientid} -> {recvData}"); var is_pc = data["is_pc"]?.ToString(); var from_wxid = data["from_wxid"].ToString(); if (Common.IsGzh(from_wxid, WechatClient.IsGzh)) return; var raw_msg = data["raw_msg"].ToString(); var room_wxid = data["room_wxid"].ToString(); var to_wxid = data["to_wxid"].ToString(); var wx_type = int.Parse(data["wx_type"].ToString()); var wx_sub_type = int.Parse(data["wx_sub_type"].ToString()); if (!WechatClient.IsAuxiliaryInput(from_wxid, to_wxid, raw_msg)) { Console.WriteLine("此消息被过滤,因为是机器人自己发送的:" + raw_msg); return; } var ass = WechatClient.IsAssistance(from_wxid, to_wxid, dwClientid); if (ass.type == WechatClient.AssistanceType.终止) return; //if (!string.IsNullOrWhiteSpace(raw_msg)) //{ // var reg = Regex.Match(raw_msg, "(?<链接>.*)"); // if (reg.Success) // { // raw_msg = reg.Groups["链接"].Value; // } //} var socketClient = EasySoc.GetSocket(); WechatReceiveMsg wmsg = new WechatReceiveMsg(); wmsg.Cmd = PCRobotCMD.rcvTxt; wmsg.IsSend = ass.type == WechatClient.AssistanceType.辅助; wmsg.RobotUsername = ass.robotName; wmsg.RobotUsernick = ass.robotNick; wmsg.RobotType = RobotType.客户端微信; wmsg.FromMessageType = WechatMsgType.文本; if (room_wxid.Contains("@chatroom")) wmsg.FromGroupid = room_wxid; wmsg.FromUsername = ass.fromName; wmsg.FromUsernick = ass.fromNick; wmsg.FromMessage = raw_msg; socketClient.Send(wmsg); } break; case MsgType.MT_RECV_TEXT_MSG: { //if (WechatClient.IsDebug) // LogHelper.GetSingleObj().Debug("调试收到文本消息", $"{dwClientid} -> {recvData}"); var at_user_list = data["at_user_list"] as ArrayList; var from_wxid = data["from_wxid"].ToString(); var msg = data["msg"].ToString(); var msg_temp = string.Copy(msg); #region 替换@里面的用户昵称 if (at_user_list != null && at_user_list.Count != 0) { var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; var client_temp = WechatClient.GetApi(user) as Wechat_Xiaoxie; foreach (string username in at_user_list) { var firent = user.Friends.FirstOrDefault(f => f.wxid == username); if (firent == null) { client_temp.GetWxidInfo(username); Thread.Sleep(1000); firent = user.Friends.FirstOrDefault(f => f.wxid == username); } if (firent != null) msg_temp = msg_temp.Replace("@" + firent.nickname + " ", "{$@}"); } } #endregion if (Common.IsGzh(from_wxid, WechatClient.IsGzh)) return; var room_wxid = data["room_wxid"].ToString(); var to_wxid = data["to_wxid"].ToString(); var wx_type = int.Parse(data["wx_type"].ToString()); var socketClient = EasySoc.GetSocket(); if (!WechatClient.IsAuxiliaryInput(from_wxid, to_wxid, msg_temp)) { Console.WriteLine("此消息被过滤,因为是机器人自己发送的:" + msg_temp); return; } var ass = WechatClient.IsAssistance(from_wxid, to_wxid, dwClientid); if (ass.type == WechatClient.AssistanceType.终止) return; WechatReceiveMsg wmsg = new WechatReceiveMsg(); wmsg.Cmd = PCRobotCMD.rcvTxt; wmsg.IsSend = ass.type == WechatClient.AssistanceType.辅助; wmsg.RobotUsername = ass.robotName; wmsg.RobotUsernick = ass.robotNick; wmsg.RobotType = RobotType.客户端微信; wmsg.FromMessageType = WechatMsgType.文本; if (room_wxid.Contains("@chatroom") || room_wxid.Contains("@im.chatroom")) { wmsg.FromGroupid = room_wxid; wmsg.FromUsername = from_wxid; wmsg.FromUsernick = from_wxid == ass.robotName ? ass.robotNick : string.Empty; } else { wmsg.FromUsername = ass.fromName; wmsg.FromUsernick = ass.fromNick; } wmsg.FromMessage = msg; socketClient.Send(wmsg); //从网络上下载群成员(刷新) //var _json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_UPDATE_ROOM_MEMBER_MSG, data = new { room_wxid = "24444455370@chatroom" } }); //_SendWeChatData(dwClientid, Encoding.UTF8.GetBytes(_json)); //获取群成员列表 //var _json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_CHATROOM_MEMBERS_MSG, data = new { room_wxid = "24444455370@chatroom" } }); //_SendWeChatData(dwClientid, Encoding.UTF8.GetBytes(_json)); } break; case MsgType.MT_ZOMBIE_CHECK_MSG: { //if (data == null) return; //if (data.ContainsKey("errcode")) //{ // var status = int.Parse(data["status"].ToString()); // var wxid = data["wxid"].ToString(); // var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); // var firend = user.Friends.FirstOrDefault(f => f.wxid == wxid); // if (firend == null) return; // firend.is_zombie = status; //} } break; case MsgType.MT_SEND_CARD_XMLMSG: { } break; case MsgType.MT_RECV_PICTURE_MSG: case MsgType.MT_RECV_VOICE_MSG: case MsgType.MT_RECV_FRIEND_MSG: case MsgType.MT_RECV_CARD_MSG: case MsgType.MT_RECV_VIDEO_MSG: case MsgType.MT_RECV_EMOJI_MSG: case MsgType.MT_RECV_LOCATION_MSG: case MsgType.MT_RECV_FILE_MSG: { var from_wxid = data["from_wxid"].ToString(); if (Common.IsGzh(from_wxid, WechatClient.IsGzh)) return; var raw_msg = data["raw_msg"].ToString(); var room_wxid = data["room_wxid"].ToString(); var to_wxid = data["to_wxid"].ToString(); var wx_type = int.Parse(data["wx_type"].ToString()); if (!WechatClient.IsAuxiliaryInput(from_wxid, to_wxid, raw_msg)) { Console.WriteLine("此消息被过滤,因为是机器人自己发送的:" + raw_msg); return; } var socketClient = EasySoc.GetSocket(); if (wx_type == 3 || wx_type == 34 || wx_type == 43 || wx_type == 49)//图片、语音、视频、文件 { var ass = WechatClient.IsAssistance(from_wxid, to_wxid, dwClientid); if (ass.type == WechatClient.AssistanceType.终止) return; var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; var client = WechatClient.GetApi(user); WechatReceiveMsg msg = new WechatReceiveMsg(); msg.Cmd = PCRobotCMD.rcvFile; msg.IsSend = false; if (wx_type == 3)//图片 { //var image_thumb = data["image_thumb"].ToString(); var image = data["image"].ToString(); #region 等待下载 long size = -1L; var reg = Regex.Match(raw_msg, @"hdlength=\""(\d+?)\"""); if (reg.Success) size = long.Parse(reg.Groups[1].Value); else { reg = Regex.Match(raw_msg, @"\slength=\""(\d+?)\"""); if (reg.Success) size = long.Parse(reg.Groups[1].Value); else { } } var waitTime = DateTime.Now.AddSeconds(10); do { Thread.Sleep(200); var size_temp = new FileInfo(image).Length; if (File.Exists(image) && size == size_temp) break; } while (waitTime >= DateTime.Now); #endregion msg.Cmd = PCRobotCMD.rcvImg; msg.IsSend = ass.type == WechatClient.AssistanceType.辅助; var path = Common.CacheFilePath(ass.robotName, ass.fromName, "IMAGE", data["msgid"].ToString(), "jpg"); #region 等待图片解密 //int i = 0; //do //{ // i++; // client.DecryptImage(image, path); // var failureTime = DateTime.Now.AddSeconds(2); // do // { // Thread.Sleep(200); // if (File.Exists(path)) break; // } while (failureTime >= DateTime.Now); // if (File.Exists(path)) // break; //} while (4 >= i); DecodeImage(image, byte.Parse(data["xor_key"].ToString()), path); if (!string.IsNullOrWhiteSpace(path) && File.Exists(path)) { } else path = image; #endregion msg.FromMessage = $"[图片={path}]"; msg.FromMessageType = WechatMsgType.图片; msg.FileCDNXML = raw_msg; } else if (wx_type == 34)//语音 { //msg.FromMessage = string.Empty;//$"[语音={FilePath}]";//TODO 语音文件 //msg.FromMessageType = WechatMsgType.语音; return; } else if (wx_type == 43)//视频 { //var video = data["video"].ToString(); //msg.FromMessage = $"[视频={video}]"; //msg.FromMessageType = WechatMsgType.视频; return; } else if (wx_type == 49)//文件 { //msg.FromMessage = string.Empty;//$"[文件={FilePath}]";//TODO 文件 //msg.FromMessageType = WechatMsgType.文件; return; } msg.IsSend = false; msg.RobotUsername = ass.robotName; msg.RobotUsernick = ass.robotNick; msg.RobotType = RobotType.客户端微信; if (room_wxid.Contains("@chatroom")) msg.FromGroupid = room_wxid; msg.FromUsername = from_wxid; //msg.FromUsernick = string.Empty;//TODO 昵称没有获取 socketClient.Send(msg); } else if (wx_type == 37)//接收到好友申请请求 { WechatApplyFriend wXApply = new WechatApplyFriend(); wXApply.Cmd = PCRobotCMD.applyFriend; wXApply.RobotUsername = to_wxid; wXApply.RobotUsernick = WechatClient.GetUser(to_wxid)?.Nickname; wXApply.RobotType = RobotType.客户端微信; var reg = Regex.Match(raw_msg, @"content=""(?<申请文本>[^""]*?)"""); if (reg.Success) wXApply.Message = reg.Groups["申请文本"].Value; reg = Regex.Match(raw_msg, @"sourceusername=""(?<账号>[^""]*?)"" sourcenickname=""(?<昵称>[^""]*?)"""); if (reg.Success) { wXApply.OldFriendWxid = reg.Groups["账号"].Value; wXApply.OldFriendNick = reg.Groups["昵称"].Value; } reg = Regex.Match(raw_msg, @"fromusername=""(?<账号>[^""]*?)"""); if (reg.Success) { if (!string.IsNullOrWhiteSpace(reg.Groups["账号"].Value)) wXApply.NewFriendWxid = reg.Groups["账号"].Value; else { reg = Regex.Match(raw_msg, @"alias=""(?<账号>[^""]*?)"""); if (reg.Success) wXApply.NewFriendWxid = reg.Groups["账号"].Value; } } reg = Regex.Match(raw_msg, @"fromnickname=""(?<昵称>[^""]*?)"""); if (reg.Success) wXApply.NewFriendNick = reg.Groups["昵称"].Value; wXApply.Token = raw_msg;//TODO 这里好像要获取raw_msg 中 v1的值 socketClient.Send(wXApply); } //名片 else if (wx_type == 42) { } //接收表情 else if (wx_type == 47) { } //接收位置消息 else if (wx_type == 48) { } } break; case MsgType.MT_RECV_WCPAY_MSG: { var from_wxid = data["from_wxid"].ToString(); if (Common.IsGzh(from_wxid, WechatClient.IsGzh)) return; var raw_msg = data["raw_msg"].ToString(); var to_wxid = data["to_wxid"].ToString(); var wx_type = data["wx_type"].ToString(); var wx_sub_type = data["wx_sub_type"].ToString(); var socketClient = EasySoc.GetSocket(); if (raw_msg.IndexOf("微信转账") != -1 && raw_msg.IndexOf("收到转账") != -1) { string State = Common.StringMid(raw_msg, "", ""); string Transid = Common.StringMid(raw_msg, "transferid>"); int dwTime = 0; int.TryParse(Common.StringMid(raw_msg, ""), out dwTime); if (State == "1" && Transid != string.Empty) { WechatReicevePay reicevePay = new WechatReicevePay(); var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; reicevePay.RobotUsername = user.Wxid; reicevePay.RobotUsernick = user.Nickname; reicevePay.RobotType = RobotType.客户端微信; reicevePay.FromUsername = from_wxid; reicevePay.FromUsernick = string.Empty;//TODO 没有获取昵称 reicevePay.Cmd = PCRobotCMD.receivePay; reicevePay.Invalidtime = dwTime.ToString(); reicevePay.Transferid = Transid; var reg = Regex.Match(raw_msg, "收到转账(?<金额>.+)元"); if (reg.Success) reicevePay.Money = double.Parse(reg.Groups["金额"].Value); if (reicevePay.RobotUsernick == null) reicevePay.RobotUsernick = string.Empty; socketClient.Send(reicevePay); return; } } } break; case MsgType.MT_RECV_SYSTEM_MSG: { //{"data":{"from_wxid":"wxid_lzssz365bwl222","is_pc":0,"msgid":"9071106463111673540","raw_msg":"\"先森吳\"邀请\"查优惠小助手(语馨)\"加入了群聊","room_wxid":"24444455370@chatroom","timestamp":1585398781,"to_wxid":"24444455370@chatroom","wx_type":10000},"type":11058} if (data != null && data.ContainsKey("raw_msg")) { var socketClient = EasySoc.GetSocket(); var raw_msg = data["raw_msg"].ToString(); var room_wxid = data["room_wxid"].ToString(); var from_wxid = data["from_wxid"].ToString(); //新人入群 if (!string.IsNullOrWhiteSpace(room_wxid) && room_wxid.Contains("@chatroom")) { //var reg1 = Regex.Match(raw_msg, @"""(?<邀请人昵称>.*)""邀请""(?<新人昵称>.*)""加入了群聊"); //var reg2 = Regex.Match(raw_msg, @"你邀请""(?<新人昵称>.*)""加入了群聊"); //var reg3 = Regex.Match(raw_msg, @"""(?<新人昵称>.*)""通过扫描""(?<邀请人昵称>.*)""分享的二维码加入群聊"); //var reg4 = Regex.Match(raw_msg, @"""(?<新人昵称>.*)""通过扫描你分享的二维码加入群聊"); //if (reg1.Success || reg2.Success || reg3.Success || reg4.Success) //{ // var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); // if (user == null) // return; // WechatNewMemer newMember = new WechatNewMemer(); // newMember.Cmd = PCRobotCMD.newMember; // newMember.RobotType = RobotType.客户端微信; // newMember.RobotUsername = user.Wxid; // newMember.RobotUsernick = user.Nickname; // if (reg1.Success) // { // newMember.SourceNick = reg1.Groups["邀请人昵称"].Value; // newMember.MemberNick = reg1.Groups["新人昵称"].Value; // } // else if (reg2.Success) // { // newMember.SourceNick = newMember.RobotUsernick; // newMember.MemberNick = reg2.Groups["新人昵称"].Value; // } // else if (reg3.Success) // { // newMember.SourceNick = reg3.Groups["邀请人昵称"].Value; // newMember.MemberNick = reg3.Groups["新人昵称"].Value; // } // else if (reg4.Success) // { // newMember.SourceNick = newMember.RobotUsernick; // newMember.MemberNick = reg4.Groups["新人昵称"].Value; // } // if (room_wxid.Contains("@chatroom")) // { // newMember.GroupId = room_wxid; // newMember.GroupNick = string.Empty; // } // socketClient.Send(newMember); //} } else//新增好友 { //#region 添加好友成功 //var reg1 = Regex.Match(raw_msg, "^你已添加了(.*?),现在可以开始聊天了。$"); //var reg2 = Regex.Match(raw_msg, "^(.*?)刚刚把你添加到通讯录,现在可以开始聊天了。$"); //if (reg1.Success || reg2.Success) //{ // var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); // if (user == null) // return; // WechatNewFriend msg = new WechatNewFriend(); // msg.Cmd = PCRobotCMD.newfriend; // msg.RobotUsername = user.Wxid; // msg.RobotUsernick = user.Nickname; // msg.RobotType = RobotType.客户端微信; // msg.FromUserName = from_wxid; // msg.FromUserNick = reg1.Success ? reg1.Groups[1].Value : reg2.Groups[1].Value; // socketClient.Send(msg); //} //#endregion #region 检测僵尸粉 //{"data":{"from_wxid":"wujiahua0876","is_pc":0,"msgid":"3624674612069828076","raw_msg":"先森吳开启了朋友验证,你还不是他(她)朋友。请先发送朋友验证请求,对方验证通过后,才能聊天。发送朋友验证","room_wxid":"","timestamp":1585125257,"to_wxid":"wxid_lzssz365bwl222","wx_type":10000},"type":11058} //{"data":{"from_wxid":"wxid_89qxkbyaxrok22","is_pc":0,"msgid":"7401397021380323657","raw_msg":"消息已发出,但被对方拒收了。","room_wxid":"","timestamp":1603436524,"to_wxid":"wujiahua0876","wx_type":10000},"type":11058} if (raw_msg.Contains("开启了朋友验证") || raw_msg.Contains("但被对方拒收了"))//这里说明是僵尸粉 { LogHelper.GetSingleObj().Debug("调试清粉", $"{JsonConvert.SerializeObject(data)}"); var wxid = data["from_wxid"].ToString(); var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); var firend = user.Friends.FirstOrDefault(f => f.wxid == wxid); if (firend == null) return; if (raw_msg.Contains("但被对方拒收了")) firend.is_zombie = 2;//拉黑了 else firend.is_zombie = 1;//单向好友 //var socketClient = EasySoc.GetSocket(); WechatContact msg = new WechatContact(); msg.RobotUsername = user.Wxid; msg.RobotUsernick = user.Nickname; msg.RobotType = RobotType.客户端微信; msg.Cmd = PCRobotCMD.rcvContactList; msg.Message = HttpHelper.ObjectToJson(new Dictionary>() { { "data", new List() { firend } } }); socketClient.Send(msg); } //{"data":{"from_wxid":"wxid_2ufntuf4purl22","is_pc":0,"msgid":"1580248074267233434","raw_msg":"由于名片类型或场景原因,暂不支持转发该名片。","room_wxid":"","timestamp":1585125880,"to_wxid":"wxid_lzssz365bwl222","wx_type":10000},"type":11058} else if (raw_msg.Contains("暂不支持转发该名片"))//这里说明是好友 { LogHelper.GetSingleObj().Debug("调试清粉_", $"{JsonConvert.SerializeObject(data)}"); var wxid = data["from_wxid"].ToString(); var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); var firend = user.Friends.FirstOrDefault(f => f.wxid == wxid); if (firend == null) return; firend.is_zombie = 0; } else { } #endregion } } } break; case MsgType.MT_RECV_REVOKE_MSG: { //私聊用户撤回消息 //{"data":{"from_wxid":"wujiahua0876","is_pc":0,"msgid":"3768878978337666344","raw_msg":"\n\t\n\t\twujiahua0876\n\t\t1097101643\n\t\t5572791720720581005\n\t\t\n\t\n\n","room_wxid":"","timestamp":1586758499,"to_wxid":"wxid_lzssz365bwl222","wx_type":10002},"type":11059} //私聊用户机器人自己撤回消息 //{"data":{"from_wxid":"wxid_lzssz365bwl222","is_pc":0,"msgid":"1526645333654331593","raw_msg":"wujiahua087617163236505998900618590839539","room_wxid":"","timestamp":1586758971,"to_wxid":"wujiahua0876","wx_type":10002},"type":11059} var from_wxid = string.Empty; if (data.ContainsKey("from_wxid")) from_wxid = data["from_wxid"]?.ToString(); var raw_msg = string.Empty; if (data.ContainsKey("raw_msg")) { raw_msg = data["raw_msg"]?.ToString(); } var to_wxid = string.Empty; if (data.ContainsKey("to_wxid")) to_wxid = data["to_wxid"]?.ToString(); } break; case MsgType.MT_RECV_OTHER_MSG: break; case MsgType.MT_RECV_OTHER_APP_MSG: case MsgType.MT_RECV_MINIAPP_MSG: { //if (WechatClient.IsDebug) // LogHelper.GetSingleObj().Debug("调试收到小程序消息", $"{dwClientid} -> {recvData}"); if (data == null) return; var wx_type = data["wx_type"]?.ToString();//微信原始类型,值为 49 if (wx_type == "49") { var wx_sub_type = data["wx_sub_type"]?.ToString();//微信原始应用子类型,值为 36 if (wx_sub_type == "1" || wx_sub_type == "36" || wx_sub_type == "33" || wx_sub_type == "3" || wx_sub_type == "19") { var from_wxid = data["from_wxid"]?.ToString();//发送者的wxid if (Common.IsGzh(from_wxid, WechatClient.IsGzh)) return; var is_pc = data["is_pc"]?.ToString(); var raw_msg = data["raw_msg"]?.ToString(); var msgid = data["msgid"]?.ToString();// 接收到的消息id var room_wxid = data["room_wxid"]?.ToString();//群聊的wxid var to_wxid = data["to_wxid"]?.ToString();//接收者的wxid var socketClient = EasySoc.GetSocket(); if (!WechatClient.IsAuxiliaryInput(from_wxid, to_wxid, raw_msg)) { Console.WriteLine("此消息被过滤,因为是机器人自己发送的:" + raw_msg); return; } var ass = WechatClient.IsAssistance(from_wxid, to_wxid, dwClientid); if (ass.type == WechatClient.AssistanceType.终止) return; //if (!string.IsNullOrWhiteSpace(raw_msg)) //{ // var reg = Regex.Match(raw_msg, @"(?<链接>.*)"); // if (reg.Success) // raw_msg = reg.Groups["链接"].Value; //} WechatReceiveMsg wmsg = new WechatReceiveMsg(); wmsg.Cmd = PCRobotCMD.rcvTxt; wmsg.IsSend = ass.type == WechatClient.AssistanceType.辅助; wmsg.RobotUsername = ass.robotName; wmsg.RobotUsernick = ass.robotNick; wmsg.RobotType = RobotType.客户端微信; wmsg.FromMessageType = WechatMsgType.文本; if (room_wxid.Contains("@chatroom")) { wmsg.FromGroupid = room_wxid; wmsg.FromUsername = from_wxid; wmsg.FromUsernick = from_wxid == ass.robotName ? ass.robotNick : string.Empty; } else { wmsg.FromUsername = ass.fromName; wmsg.FromUsernick = ass.fromNick; } wmsg.FromMessage = raw_msg; socketClient.Send(wmsg); } } } break; case MsgType.MT_CHECK_URL_STATUS_MSG: { //if (CheckUrlCache.Count > 500) CheckUrlCache.Clear(); //{"data":{"status":-2005,"url":"https://ycs9d.kuaizhan.com/?id=07E4060844959"},"type":11123} if (data["status"] != null) { var url = data["url"]?.ToString(); if (!string.IsNullOrWhiteSpace(url)) { //CheckUrlCache.Add(url.Trim(), int.Parse(data["status"].ToString())); Cache cache = HttpRuntime.Cache; //查找 md5 的缓存,不存在则返回null object item = cache[url.Trim()]; cache.Insert(url.Trim(), int.Parse(data["status"].ToString()), null, DateTime.Now.AddSeconds(8), Cache.NoSlidingExpiration); } } } break; //case MsgType.MT_CHECK_URL_STATUS2_MSG: // { // if (data.ContainsKey("baseResponse")) // { // var baseResponse = data["baseResponse"] as Dictionary; // if (baseResponse.ContainsKey("ret")) // { // var ret = baseResponse["ret"].ToString(); // Cache cache = HttpRuntime.Cache; // //查找 md5 的缓存,不存在则返回null // object item = cache[url.Trim()]; // cache.Insert(url.Trim(), int.Parse(ret), null, DateTime.Now.AddSeconds(8), Cache.NoSlidingExpiration); // } // } // } // break; case MsgType.MT_ROOM_ADD_MEMBER_NOTIFY_MSG://群成员新增通知 { //{"data":{"avatar":"","is_manager":1,"manager_wxid":"wxid_tnizkijej5uq22","member_list":[{"avatar":"http://wx.qlogo.cn/mmhead/ver_1/MpicosfFj1KMvlSPoxWHjUfT2KGqJvEKrDkDCUiaQp4ryYkv3NMdsYofXUVvgalGx0ylia2swn2MMNWwiaWWEUl4QvQayM2Y28pAaxShUZUH5ms/132","invite_by":"wujiahua0876","nickname":"A083赚钱鸭💯(葫芦娃)","wxid":"wxid_5fn1vpyjpfj022"}],"nickname":"111111","room_wxid":"24466267291@chatroom","total_member":5},"type":11098} if (data == null) return; var socketClient = EasySoc.GetSocket(); var avatar = data["avatar"].ToString();//头像 var is_manager = data["is_manager"].ToString();// var manager_wxid = data["manager_wxid"].ToString();//管理账号 var room_nick = data["nickname"].ToString();//群昵称 var room_wxid = data["room_wxid"].ToString();//群账号 var total_member = int.Parse(data["total_member"].ToString());//群人数 var member_list = data["member_list"] as ArrayList; if (member_list != null && member_list.Count != 0) { var member = member_list[0] as Dictionary; var avatar_user = member["avatar"].ToString();//头像 var invite_by = member["invite_by"].ToString();//邀请者wxid var nickname = member["nickname"].ToString();//新用户昵称 var wxid = member["wxid"].ToString();//新用户账号 var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; WechatNewMemer newMember = new WechatNewMemer(); newMember.Cmd = PCRobotCMD.newMember; newMember.RobotType = RobotType.客户端微信; newMember.RobotUsername = user.Wxid; newMember.RobotUsernick = user.Nickname; //if (reg1.Success) //{ // newMember.SourceNick = reg1.Groups["邀请人昵称"].Value; // newMember.MemberNick = reg1.Groups["新人昵称"].Value; //} //else if (reg2.Success) //{ // newMember.SourceNick = newMember.RobotUsernick; // newMember.MemberNick = reg2.Groups["新人昵称"].Value; //} //else if (reg3.Success) //{ // newMember.SourceNick = reg3.Groups["邀请人昵称"].Value; // newMember.MemberNick = reg3.Groups["新人昵称"].Value; //} //else if (reg4.Success) //{ // newMember.SourceNick = newMember.RobotUsernick; // newMember.MemberNick = reg4.Groups["新人昵称"].Value; //} newMember.SourceNick = string.Empty; newMember.SourceName = (string.IsNullOrWhiteSpace(invite_by) || invite_by == user.Wxid) ? string.Empty : invite_by; newMember.MemberNick = nickname; newMember.MemberName = wxid; newMember.GroupId = room_wxid; newMember.GroupNick = room_nick; newMember.TotalMember = total_member; socketClient.Send(newMember); } } break; case MsgType.MT_ROOM_DEL_MEMBER_NOTIFY_MSG://群成员删除/退出通知 { } break; case MsgType.MT_ROOM_CREATE_NOTIFY_MSG://通过接口创建群聊的通知 { //{"data":{"avatar":"http://wx.qlogo.cn/mmcrhead/MvMkWKHbPUVricNicF781PXeuPMW2vHEywf6lkuMfLgHN4IlRAyPiaDX8AG9d9XEa1ibiaMXBr83ibDVmgCT70qkHXPN9SFn5iaHC7y/0","is_manager":1,"manager_wxid":"wxid_tnizkijej5uq22","member_list":[{"avatar":"http://wx.qlogo.cn/mmhead/ver_1/CVGILsl6SCMBjjCuyxUOZXNRgeiaPx4EwT1WMqCDz9qp3XcuzuVm3SHuPuial3wOMVUSbbJujBtUqPkB3Uz1ruTVzibqZ74FTnBKibNCq67qBcE/132","invite_by":"wxid_tnizkijej5uq22","nickname":"小张晚安","wxid":"wxid_uwbxwbt4ihjd22"},{"avatar":"http://wx.qlogo.cn/mmhead/ver_1/cstPo5zCEb794wfD44BbnoQicfDOeOzkB3BficFYticVmQy7umm4SArThiaia6f6ZJFriaewskJ3foyuxrEVYic7NicwXQ/132","invite_by":"wxid_tnizkijej5uq22","nickname":"先森吳","wxid":"wujiahua0876"},{"avatar":"http://wx.qlogo.cn/mmhead/ver_1/tbfVwxp5B5WkAx7KxDCTia8kzWgMIj3bqA1QaoHxXvQTwS5aRw6h9WjTQMWBhD6fkt4XjUxURDDGF5aBek8xSnY4kqPIQ9T4oweMyaKLSwnM/132","invite_by":"","nickname":"Coco","wxid":"wxid_tnizkijej5uq22"}],"nickname":"","room_wxid":"24652183014@chatroom","total_member":3},"type":11100} if (data == null) return; var wxids = new List(); var member_list = data["member_list"] as ArrayList; for (int i = 0; i < member_list.Count; i++) { //{"avatar":"http://wx.qlogo.cn/mmhead/ver_1/CVGILsl6SCMBjjCuyxUOZXNRgeiaPx4EwT1WMqCDz9qp3XcuzuVm3SHuPuial3wOMVUSbbJujBtUqPkB3Uz1ruTVzibqZ74FTnBKibNCq67qBcE/132","invite_by":"wxid_tnizkijej5uq22","nickname":"小安","wxid":"wxid_uwbxwbt4ihjd22"} var m = member_list[i] as Dictionary; if (m == null) continue; wxids.Add(m["wxid"]?.ToString()); } var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; var client = WechatClient.GetApi(user); wxids.Sort(StringComparer.CurrentCulture); var md5Text = Common.GetMD5(string.Join(",", wxids)); Cache cache = HttpRuntime.Cache; //查找 md5 的缓存,不存在则返回null object item = cache[md5Text]; cache.Insert(md5Text, data["room_wxid"].ToString(), null, DateTime.Now.AddSeconds(8), Cache.NoSlidingExpiration); } break; case MsgType.MT_ROOM_DEL_NOTIFY_MSG://群成员删除通知 { } break; case MsgType.MT_CONTACT_ADD_NOITFY_MSG://好友新增通知 { //{"data":{"account":"dx21101","avatar":"http://wx.qlogo.cn/mmhead/ver_1/we0fG4Y8r0NjN7GUSHFXCu0qicqZf2KKHBeRKIByBNAvvJ8KcgeaomwSju0AqUicJztS6oiaEzDVJiblnZmrJQTibDdPyk7fwzwPbS5JxwibS6POI/0","city":"","country":"","nickname":"秒单客-小张","remark":"","sex":1,"wxid":"wxid_g9r17s6hdb6w22"},"type":11102} var socketClient = EasySoc.GetSocket(); //var account = data["account"].ToString();//新用户账号 //var avatar = data["avatar"].ToString();//新用户头像 var nickname = data["nickname"].ToString();//新用户昵称 //var sex = int.Parse(data["sex"].ToString());//性别 var wxid = data["wxid"].ToString();//新用户微信id #region 添加好友成功 var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; var msg = new WechatNewFriend(); msg.Cmd = PCRobotCMD.newfriend; msg.RobotUsername = user.Wxid; msg.RobotUsernick = user.Nickname; msg.RobotType = RobotType.客户端微信; msg.FromUserName = wxid; msg.FromUserNick = nickname; socketClient.Send(msg); #endregion } break; case MsgType.MT_CONTACT_DEL_NOTIFY_MSG://群成员删除通知 { } break; case MsgType.MT_SNS_TIMELINE_MSG://获取朋友圈首页 { #region 数据 //{"data":{"advertiseCount":1,"advertiseList":[{"adInfo":{"string":"\n\n\t51Hky7pHhu%2BI0D6z6NGPpR15cypIpKvA%2B/WmCm0cjdoElUITIAFetWDTQN4vCIoS6ghxwuN0AHfz/Dd5uv0MOe0BAnqUde7RfcpcLvnU4pKwzvPOf09bD57/YLjKvDkkbHks%2BFQ8yTrjpqCQtrqKXVDJrR%2B/6t2%2BIcLfsbPDz%2B6jDc8gjbkn6ADHUW7tOArlAowZ3aNCjtfk5fBHzow8vwBuatiNIeQQySyetV69UB2exOBcR42IFoB%2BgD0ygOTBlYMnaiQtzS0upkBl4NSPHN9xen3lITxROz3Bj6ZRkqrlzrEJjj%2B%2BX0NTbO/ZduF8Fnsq47hKzFn3RzMmrMiMmRT%2BiJpTD3Tz/rwtYsS3tGTCmbneafTW0o%2B9uinX5C2QK45tKlFSDlAlYqEtepY51N2mrvp5aK8wd1A1dotcSJdRCv%2Bibez/B8KZud5p9NbSvb9U/x10HSpgNsWnqqfBc6UOyLTOR6sULIq3RYG3hO4ttiHsTqJ19OXmIJ18uKdRAwm0W%2B1UgpgsirdFgbeE7i22IexOonX0eoikpovBL67pm9Ry5rKfmdqujuKJIrqR7yAiM9QkVyqfLisGkW2BGdifn1WRZE2eZtz1TIwtr5RIz4fr%2BzWthJ%2B8b4mUiIvRnrvbxY2kLOMTQyaDsIwWCrVVcQmRZEtem7CV9y12Npy2t0P5SYgr9G%2B5LOMNBx0okUHnjJOesdHfVxBOI3ioGMEqURMdxzGKUPEh9cdQZT13OIB60lApJboBtPiusgt2pGeKIWX2go19ctm1ASL/nffmXkqCH/XmhdQh01bx83nD%2BNuVWBsGt7Z9yUJAhgfU2HILNweMjSHCmbneafTW0pglqgouP3YMJyDHsaOablYrOJ7sA5PLjhGJilyjGpsHWO0hq0fn1/6LGFYxykl1OjPcIHGFfpCHLlbaL5ZjZUhhz/C8BOcXNC6vq3hZ1wVbOWBOpKjp0CGTuQXg3A4f0G8kXEJdvrlDsxGnYDSTXSrxeCw34BZX0wRD99w7JmukOIQEjoOL%2BMDlCU9gndnYr00zc1cEpTNCjhbE8KAYJBZdF2AjSLljq1308TAxRKbRrFcgG%2BJiF686OhCWD1v6PpvXQtcAwKCuVWFqytU8Snl/XGkfveCEdkXHGR%2B5wQVpN8L6zzMEG%2BrGdae643cmQb9QbyClCgocIhr5xdxaJXPYn59VkWRNnrbPaWePalQctVk7VbyIJUOzQwHaGlZwKOw/ReHEmsuRdunnXbmrEQRK31EdpPUtw%2BrkaExxbpeSMYgHQ4BoIWvqWUJyOKxwPFyEo3Cvbyx3zs8YEIDR6RYMyvLMeZ593lX52lJXIuf7ZRO6kWIOBbYENyusw81Q0PWttkAUANcUYTIqQmpJ%2Bl18qm66d0POojRw0yPqMI/iLYxfYPjGjxhb1M2zfU9m6L39x5/vp8yN12xfT20Zd3eyVauOFxOb9E3aTDebYH0%2BxbxNh/vbG4SZj9HCaNr0679ITrLZHYXBMDckEiDLDwR8Kw37v7qSMMW8TYf72xuEmY/Rwmja9Ou/SE6y2R2FwX8i5x5zY5Tl5uNpEpeEFoAqMk%2BZ6vqgE02GIVVhiy4hc5/GHP79qRrm42kSl4QWgCoyT5nq%2BqATdoRifFt8u0d30DLV9rACLenS8pBrppyFKjJPmer6oBPjILouBe1NDxY74ukW5A91YGOCIYWrgLdFGxIyh6vP7RAgb9YYpXW87wJPd786IpFTQpa3wkYMP8KZud5p9NbSAzTjUvENRy8XeTjKE1qKCzYwKm%2BvgnNWRTCLfefMjKvCmbneafTW0gM041LxDUcvxxDLN%2BQh1dSf3TphpbYWRLoHQm6WpwmDgyX2IiPt3jiN3ZxN%2BdG6zHs8QtlMdETD2u/GbqAmsR47GXT6%2Bd9vzfByhJ%2BosnjffLJWXJQXjVhUDTGN5mqOpQk1YhZbSJ7Gl3YPDnKBt%2BrT/HSDJ%2Bl2Rgf0drS1gCA4TsUAXLNhv0/py7JV78weUyrsXfLMLC3iynBrDlriy8KB/M/vFXqo7T6zykyz/ykKHC9fpUczj0/%2BiYQb3B2u4h%2B9QlK5J0kaYbM9DtGs1EUIRKIqCLzwHz3wEe%2BlG/jvSp462KvE8TSFOCswenppPI1a65q11Y%2BlO8ydxJ0yKldx4NgHf19YAWnJZAl%2BTTbsgLcaCUPrWS5lz1ndLvPYPcbyJmoyss54YkoMCaTa42hTuW08DkxX84NfS0ImGwrDzyMDV8pAyc7VLiJ3BxfADIWMj9C3nfYHWkD5oDTvOHbrCS0oVJZ1y61s4g4lI3FyoWh1%2Bszkttr3tqOGmeY5mCk2pNpt19zSXB4%2B2Et6MfY5rX9USLkHs0PPXGYe6wXuyT4Luymi/Txdbmkt1cP7P6F2o6H5ahvnzLtULV02HVfYj7vBsaMStTPgp8Bsmt1Dyphn5nqGAASmhUDfXW24V7WKihAkyAHELyMNe%2BsOg6bsTHBBKNGKPGzR5p2LY9gYFVY5/qmRA5d8MkAWlZENvXpAfbBdhejCJLU4lQBGZ0eDGmGOZuaA%2BQ6RMJncv%2BR%2BTAP9TvkNsP5x7Yko/BM2IAtCWoMdFGbhobUaNtVkkvCOc%2BwkwlIOXrrn2yrxTx37JNMsN7RFYiEZJNViWH7dXQlLiz9MOANT8H5t5HmgKEctOb1WDmztxkdBkLAejjMY20ZfUiVjwKSEkrrfw03HXk/sbeLtUsrb7nfeb7wpBi2sU7b8X6/dzpHX9DXDm2i1pOR5s/Ng0yeD/6qROyXiFZLD66XRp7//JznTqFw2TWYDkazuFWAyB7ElWqOVd/DOs%2BCAoORBxxiRhbApMiOYRyTumUb%2B%2B6Zl4qOepsczZ29vS6uVWWJ0p0rEOI2RhVZ7btZ%2Ba3lZVRIf/hRMwBoyRlWyRWLyfEmArfOGNYSa4BdrmxeeV0tdIpmLBesqH%2BfzlDeIDk7mYMk0FEAe2cpwAcbBhbqspuYIxkrOTmw00bthKfiRChNDe%2BQee7ugp8pqvuhoz7xLRUD1lTtlqG/NViTumUb%2B%2B6Zl2S6T12VBePmOOxGKAf3beJ%2BnBqYMHgKRlN2Tkq4GQ/YgJNrT9CcDRl8GQ1XD0o6U3YyDCdZIJrEUeI/uSzP6ju5XimNM1qfeiTty4z6jWFh99u%2BfIUuDvxOIp4XGKpLpJ07p9SXuh1Zy%2Bo/31T9J1fWVO2Wob81W5KyA3Dyc2bO1jtlhgW9eAI47EYoB/dt4FQiAo2J5oyUX0qTwlZ90N6Lln5bTToih/GwuFeIuyfUpNqTabdfc0rQ0s06SldO6V93k1aTZhOJHm3uL1CBBMvhQgjxSWRtrp3DKjyMPfVpYPVWi5Ngj3Y5aIpCQuZXtqruCuUkaNnhqKrfImYGgGKmrjkQD2h3urPY6VezxI9OHcs%2BXYnYPN4PKT1x7h8SO2qEn264xwBl1V6YUdN1FXoZsAsPrnFzWcz5uqxEiT0sch%2BHvj9RxWk0HOHHe5NbmAMHuVM8G7t4hl1NT6tf4sD/1uHZDwAxdwJtX0l2GsaAX7It4cWddtlJ5lscfXYNcmftrlkis981E5N9H4zW918IEMg6uvzSz4T8Zay2P9sMQsCF%2Ba3w6VCY0ZuwxbJqN1QaGDzVOAqmJCgwXZe3RYp2/gyNcSjjkQtBUKhqP42BdVQgg%2BXSnthkM2BlKHdHbibjVedFgMtLy4jXQ0jD%2BwHpBztRpAg5ko9PX7d2z/pJt8YzG3w6JRH3V0XrfkwE0SMU46R%2BTSPmgMgjWPkNxa/m2uLgcrsVBMP%2BUoqGYb3MkzDDj01vctVPDoYnTPiyDmvPETC4UzEm8QE4WG1lCfhu527VjTlnq5vxoaY1zSczQop6cs4IaeerPjfv89hzROCUFTWY7AHyfUqeJVK%2BiPZ0ftd7A5I84adtGjRGgLam9vDrIGEgOytifn1WRZE2e7RfKdpxHe8YH986M%2BW1VEiSf6o6x3ZW13hrLgQASU4k2M2CmUcOsa56My716C8yACOene86zrRIbOKlmWY/LpTTFFDj2FS/wRUBIA92e/K3PY4bY3rnNirArVpfolQpqUdeELefv5t1ECPZk5I8tozTqrC6wrFRARf3dlHL0WpRZQzOkMnGblx51W2kSUpSu2/Hd91eDSEOBXvE/kanskVWtaO29jtIzaXdOdbo2JtGAJYzJ7QD93xQpz87qAUQXCBXuJQSB/bEiwpxez/q1U6KDkxquq0XUF9zkWsYKUjFogJilTpoYvjDtoQVtApmBOA2f7el/VIHnxuCNmQlqQFxZQwbWI4tu5EfUvvFSANAk4jag8a4HYuF8%2B8esOKs2PSsBnhQzc%2BY22OtuD3yCNeLZ5n1B5za16svARkdgiGtPGEKwhyvAcMPUfhiL7RxZprDKae8MX1PVHECjLItG2MDR7ZczhqZvA9CHH0GAbafIYSkOszxrBPPpNff7dYiB/j%2BMzZCgR4yfQ7CoDU3lRIFM7BEAf4od%2B3kzeNkAy7ZaAGZftgda2Ih%2BPdTIb6Hv5zgI2didIUjziKQ0Glppdv14mXUNSx8Osti8pEcBeFN3//o3aeh8wYx6bDo/zqIDhFnZE/QS%2BoLSkKdNBK1wPJao/BgEj8GEjOIqWUvm8R5dhNriF5xeYZcXmxbjnwREWQWbbbrLMFFLc7NK/Ol0iNdgpgmBjesJ%2BsrXt0d88f9txZDbMh0kQhWdc/B2bqPntbxWBM3n63FNQKwW6Ch81DpIHjAOJ9YxiEO6FohEbrgLoWfT/TU1eJfHWjklbn6GnbsY4E7mMRoJV7VKXV/GuPP7un5EV%2BwrNpNp0v%2BSybnvKAAEqdQL5cZuKVZMfIOOtopdZisTxabiDXUYViRIoVzvUrdfVGeQVdKAmHLZYjaWnzKUIgF8oyIi091o1BkDsWY8sbUptYLfqFIQR4BMl3xYuum%2BKt3/56SzrDXXPYI7Gb%2BAbdrUFEVeL/LdryKoWtq7jM1hSu5MhS5SOEuoFMbt5EuW5vdTKNlfgWJWsvkZsZNg2uPG%2Bt2HCI3m2MTqvavmupGW%2BmkwK7pwPy56I/8unXh6QMpuq9ifhaOLpfBQK/BLOuTqjqKOZ8yeTW/pJR30DlpUK8Pb1t0/oVUCHbFxhM2uqKlaHAGgTp817xa1p9a9sWAD9g==\n\t4\n\t720\n\t720\n\t3547325421|wx0tld43lkkrodqq|3547325421|1|1626955012|0|2|6041365717172948||AgIylt4GK8nVeUcuI+4pKmMsArrIRywgjntIrbYMoUfG0o+2+yULEOc9S+J+Wk6PLDoh6IKmSjk=|3400866612|21\n\t1\n\thttps://as.weixin.qq.com/cgi-bin/redirect?tid=3400866612&token=e8d51e642ec1fa8166c546c1f303cf95&wx_aid=3547325421&wx_traceid=wx0tld43lkkrodqq00&wx_uid=19681428\n\t4\n\t\n\t\t\n\t\t\t0\n\t\t\t最近有719人购买\n\t\t\t最近有719人购买\n\t\t\t最近有719人购买\n\t\t\n\t\t1\n\t\t1800\n\t\t\n\t\t\tgh_85ea230f6b61@app\n\t\t\t/pages/shop/index.html?storeId=2393731723\n\t\t\t\n\t\t\t1\n\t\t\n\t\n\t\n\t\twx0tld43lkkrodqq\n\t\t3547325421\n\t\n\n\n"},"snsAdObject":{"adXml":{"string":"1AlphaDog阿尔法机器狗19681428011平价阿尔法机器狗来喽时代的风景,AI相伴立即购买4gh_85ea230f6b61@app/pages/shop/index.html?storeId=23937317231新品推荐限量抢购IP联名活动1https://as.weixin.qq.com/cgi-bin/redirect?tid=3400866612&token=e8d51e642ec1fa8166c546c1f303cf9510广告廣告Ad赞助商提供的广告信息贊助商提供的廣告信息Sponsored storyclassify_zh_CNzh_CNclassify_zh_TWzh_TWclassify_enen_USnickname_zh_CNnickname_zh_CNnickname_zh_TWnickname_zh_TWnickname_ennickname_enhttps://mp.weixin.qq.com/promotion/res/htmledition/mobile/html/feedback.html投诉投訴Report654315520385879808https://wxa.wxs.qq.com/canvas-luodiye/h5/wxupdate.html"},"snsObject":{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1621049336,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13598347436105209699,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD4xMzU5ODM0NzQzNjEwNTIwOTY5OTwvaWQ+PGNyZWF0ZVRpbWU+MTYyMTA0OTMzNjwvY3JlYXRlVGltZT48dXNlcm5hbWU+Z2hfMWNmYmQ1NjAzNzliPC91c2VybmFtZT48Y29udGVudERlc2M+5pe25Luj55qE6aOO5pmv77yMQUnnm7jkvLQ8L2NvbnRlbnREZXNjPjxjb250ZW50RGVzY1Nob3dUeXBlPjA8L2NvbnRlbnREZXNjU2hvd1R5cGU+PGNvbnRlbnREZXNjU2NlbmU+MzwvY29udGVudERlc2NTY2VuZT48cHJpdmF0ZT4wPC9wcml2YXRlPjxDb250ZW50T2JqZWN0Pjx0aXRsZT48L3RpdGxlPjxkZXNjcmlwdGlvbj48L2Rlc2NyaXB0aW9uPjxjb250ZW50VXJsPjwvY29udGVudFVybD48Y29udGVudFN0eWxlPjE8L2NvbnRlbnRTdHlsZT48bWVkaWFMaXN0PjxtZWRpYT48aWQ+MTM1OTkwODQ4MTQ2ODQ0NjA5NDA8L2lkPjxwcml2YXRlPjA8L3ByaXZhdGU+PHR5cGU+MjwvdHlwZT48c3ViVHlwZT4wPC9zdWJUeXBlPjx0aXRsZT48L3RpdGxlPjxkZXNjcmlwdGlvbj48L2Rlc2NyaXB0aW9uPjx1c2VyRGF0YT48L3VzZXJEYXRhPjxsb3dCYW5kVXJsIHR5cGU9IjEiPjwvbG93QmFuZFVybD48dXJsIHR5cGU9IjEiPmh0dHA6Ly93eHNuc2R5dGh1bWIud3hzLnFxLmNvbS8xNDEvMjAyMDQvc25zY29zZG93bmxvYWQvU0gvcmVzZXJ2ZWQvNjA5ZjNlOTQwMDBjOTk1ZDAwMDAwMDAwOWEyMDlkMDkwMDAwMDA4ZDAwMDA0ZWVjP209NzA3YzBiMmVjNDY1OTNiZDQ3NjJlZjRkYWY0MmE4OGYmYW1wO2NrPTcwN2MwYjJlYzQ2NTkzYmQ0NzYyZWY0ZGFmNDJhODhmPC91cmw+PHRodW1iIHR5cGU9IjEiPmh0dHA6Ly93eHNuc2R5dGh1bWIud3hzLnFxLmNvbS8xNDEvMjAyMDQvc25zY29zZG93bmxvYWQvU0gvcmVzZXJ2ZWQvNjA5ZjNlOTQwMDBjOTk1ZDAwMDAwMDAwOWEyMDlkMDkwMDAwMDA4ZDAwMDA0ZWVjP209NzA3YzBiMmVjNDY1OTNiZDQ3NjJlZjRkYWY0MmE4OGYmYW1wO2NrPTcwN2MwYjJlYzQ2NTkzYmQ0NzYyZWY0ZGFmNDJhODhmPC90aHVtYj48c2l6ZSBoZWlnaHQ9IjQ1MCIgd2lkdGg9IjgwMCIgdG90YWxTaXplPSI2NTEzMCI+PC9zaXplPjwvbWVkaWE+PC9tZWRpYUxpc3Q+PGNvbnRlbnRTdWJTdHlsZT44PC9jb250ZW50U3ViU3R5bGU+PC9Db250ZW50T2JqZWN0PjwvVGltZWxpbmVPYmplY3Q+","iLen":1152},"objectOperations":{"buffer":"CAI=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"gh_1cfbd560379b","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0}}}],"baseResponse":{"ret":0},"controlFlag":2,"delAdvertiseCount":0,"firstPageMd5":"6935ad04c4ed4552","max_id":"13647311131165143274","newRequestTime":1626954952,"objectCount":10,"objectCountForSameMd5":10,"objectList":[{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1626886264,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13647311131165143274,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"为美好的世界献上祝福","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY0NzMxMTEzMTE2NTE0MzI3NF1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfbWp6ZWg0cWo5aGlvMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjY4ODYyNjRdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGFwcEluZm8+PGlkPjwhW0NEQVRBW3d4YWI5YjcxYWQyYjkwZmYzNF1dPjwvaWQ+PHZlcnNpb24+MjY8L3ZlcnNpb24+PGFwcE5hbWU+PCFbQ0RBVEFb5b6u5L+h6K+75LmmXV0+PC9hcHBOYW1lPjxpbnN0YWxsVXJsPjwvaW5zdGFsbFVybD48ZnJvbVVybD48L2Zyb21Vcmw+PGNsaWNrYWJsZT4wPC9jbGlja2FibGU+PC9hcHBJbmZvPjxjb250ZW50RGVzYz48L2NvbnRlbnREZXNjPjxjb250ZW50YXR0cj48IVtDREFUQVswXV0+PC9jb250ZW50YXR0cj48c291cmNlVXNlck5hbWU+PC9zb3VyY2VVc2VyTmFtZT48c291cmNlTmlja05hbWU+PC9zb3VyY2VOaWNrTmFtZT48c3RhdGlzdGljc0RhdGE+PC9zdGF0aXN0aWNzRGF0YT48d2VhcHBJbmZvPjxhcHBVc2VyTmFtZT48L2FwcFVzZXJOYW1lPjxwYWdlUGF0aD48L3BhZ2VQYXRoPjx2ZXJzaW9uPjwhW0NEQVRBWzBdXT48L3ZlcnNpb24+PGRlYnVnTW9kZT48IVtDREFUQVswXV0+PC9kZWJ1Z01vZGU+PHNoYXJlQWN0aW9uSWQ+PC9zaGFyZUFjdGlvbklkPjxpc0dhbWU+PCFbQ0RBVEFbMF1dPjwvaXNHYW1lPjxtZXNzYWdlRXh0cmFEYXRhPjwvbWVzc2FnZUV4dHJhRGF0YT48c3ViVHlwZT48IVtDREFUQVswXV0+PC9zdWJUeXBlPjxwcmVsb2FkUmVzb3VyY2VzPjwvcHJlbG9hZFJlc291cmNlcz48L3dlYXBwSW5mbz48Y2FudmFzSW5mb1htbD48L2NhbnZhc0luZm9YbWw+PENvbnRlbnRPYmplY3Q+PGNvbnRlbnRTdHlsZT48IVtDREFUQVsxXV0+PC9jb250ZW50U3R5bGU+PGNvbnRlbnRTdWJTdHlsZT48IVtDREFUQVswXV0+PC9jb250ZW50U3ViU3R5bGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PGNvbnRlbnRVcmw+PC9jb250ZW50VXJsPjxtZWRpYUxpc3Q+PG1lZGlhPjxpZD48IVtDREFUQVsxMzY0NzMxMTEzMTczNDA2MTI3N11dPjwvaWQ+PHR5cGU+PCFbQ0RBVEFbMl1dPjwvdHlwZT48dGl0bGU+PC90aXRsZT48ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj48cHJpdmF0ZT48IVtDREFUQVswXV0+PC9wcml2YXRlPjx1cmwgdHlwZT0iMSIgbWQ1PSJmMjhmNTgyNjE4NmU2ZTZmMWY4NTVjYzAxMjU4MDIzYiI+PCFbQ0RBVEFbaHR0cDovL3N6bW1zbnMucXBpYy5jbi9tbXNucy9hRnJXNFBWVjRwS1NuU3ExcURRVWMxWExOTUNpY2pnaWNhbTdwTlVoN1AyanUxZFJheDdIaWJROHV2YlRvdDRYeHk0UVhmR1RMSFZvbFEvMF1dPjwvdXJsPjx0aHVtYiB0eXBlPSIxIj48IVtDREFUQVtodHRwOi8vc3ptbXNucy5xcGljLmNuL21tc25zL2FGclc0UFZWNHBLU25TcTFxRFFVYzFYTE5NQ2ljamdpY2FtN3BOVWg3UDJqdTFkUmF4N0hpYlE4dXZiVG90NFh4eTRRWGZHVExIVm9sUS8xNTBdXT48L3RodW1iPjx2aWRlb0R1cmF0aW9uPjwhW0NEQVRBWzAuMF1dPjwvdmlkZW9EdXJhdGlvbj48c2l6ZSB0b3RhbFNpemU9IjY1Mjg5LjAiIHdpZHRoPSIxMDgwLjAiIGhlaWdodD0iMTY0OC4wIj48L3NpemU+PC9tZWRpYT48L21lZGlhTGlzdD48L0NvbnRlbnRPYmplY3Q+PGFjdGlvbkluZm8+PGFwcE1zZz48bWVkaWFUYWdOYW1lPjwvbWVkaWFUYWdOYW1lPjxtZXNzYWdlRXh0PjwvbWVzc2FnZUV4dD48bWVzc2FnZUFjdGlvbj48L21lc3NhZ2VBY3Rpb24+PGFwcGlkPnd4YWI5YjcxYWQyYjkwZmYzNDwvYXBwaWQ+PC9hcHBNc2c+PHNjZW5lPjA8L3NjZW5lPjx0eXBlPjA8L3R5cGU+PHVybD48L3VybD48bmV3V29yZGluZ0tleT48L25ld1dvcmRpbmdLZXk+PG5ld3R5cGU+MDwvbmV3dHlwZT48aW5zdGFsbGVkV29yZGluZz48L2luc3RhbGxlZFdvcmRpbmc+PHVuaW5zdGFsbGVkV29yZGluZz48L3VuaW5zdGFsbGVkV29yZGluZz48L2FjdGlvbkluZm8+PHN0YXRFeHRTdHI+PCFbQ0RBVEFbR2hRS0VuZDRZV0k1WWpjeFlXUXlZamt3Wm1Zek5BPT1dXT48L3N0YXRFeHRTdHI+PGxvY2F0aW9uIHBvaUNsYXNzaWZ5SWQ9IiIgcG9pTmFtZT0iIiBwb2lBZGRyZXNzPSIiIHBvaUNsYXNzaWZ5VHlwZT0iMCIgY2l0eT0iIj48L2xvY2F0aW9uPjxwdWJsaWNVc2VyTmFtZT48L3B1YmxpY1VzZXJOYW1lPjxzdHJlYW12aWRlbz48c3RyZWFtdmlkZW91cmw+PC9zdHJlYW12aWRlb3VybD48c3RyZWFtdmlkZW90aHVtYnVybD48L3N0cmVhbXZpZGVvdGh1bWJ1cmw+PHN0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW93ZWJ1cmw+PC9zdHJlYW12aWRlbz48L1RpbWVsaW5lT2JqZWN0Pg==","iLen":2449},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_mjzeh4qj9hio22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1626788321,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13646489531181052217,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"小张晚安","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY0NjQ4OTUzMTE4MTA1MjIxN11dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfdXdieHdidDRpaGpkMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjY3ODgzMjFdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBW+WPr+S4jeaYr+WYm++8jOWPiOeqgeeEtuS6huS4gOS4i+S4i1vml7rmn7RdW+aXuuaftF1dXT48L2NvbnRlbnREZXNjPjxjb250ZW50YXR0cj48IVtDREFUQVswXV0+PC9jb250ZW50YXR0cj48c291cmNlVXNlck5hbWU+PC9zb3VyY2VVc2VyTmFtZT48c291cmNlTmlja05hbWU+PC9zb3VyY2VOaWNrTmFtZT48c3RhdGlzdGljc0RhdGE+PC9zdGF0aXN0aWNzRGF0YT48d2VhcHBJbmZvPjxhcHBVc2VyTmFtZT48L2FwcFVzZXJOYW1lPjxwYWdlUGF0aD48L3BhZ2VQYXRoPjx2ZXJzaW9uPjwhW0NEQVRBWzBdXT48L3ZlcnNpb24+PGRlYnVnTW9kZT48IVtDREFUQVswXV0+PC9kZWJ1Z01vZGU+PHNoYXJlQWN0aW9uSWQ+PC9zaGFyZUFjdGlvbklkPjxpc0dhbWU+PCFbQ0RBVEFbMF1dPjwvaXNHYW1lPjxtZXNzYWdlRXh0cmFEYXRhPjwvbWVzc2FnZUV4dHJhRGF0YT48c3ViVHlwZT48IVtDREFUQVswXV0+PC9zdWJUeXBlPjxwcmVsb2FkUmVzb3VyY2VzPjwvcHJlbG9hZFJlc291cmNlcz48L3dlYXBwSW5mbz48Y2FudmFzSW5mb1htbD48L2NhbnZhc0luZm9YbWw+PENvbnRlbnRPYmplY3Q+PGNvbnRlbnRTdHlsZT48IVtDREFUQVsxXV0+PC9jb250ZW50U3R5bGU+PGNvbnRlbnRTdWJTdHlsZT48IVtDREFUQVswXV0+PC9jb250ZW50U3ViU3R5bGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PGNvbnRlbnRVcmw+PC9jb250ZW50VXJsPjxtZWRpYUxpc3Q+PG1lZGlhPjxpZD48IVtDREFUQVsxMzY0NjQ4OTUzMTgxNjk0ODAyNl1dPjwvaWQ+PHR5cGU+PCFbQ0RBVEFbMl1dPjwvdHlwZT48dGl0bGU+PC90aXRsZT48ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj48cHJpdmF0ZT48IVtDREFUQVswXV0+PC9wcml2YXRlPjx1cmwgdHlwZT0iMSIgbWQ1PSJkNTBkOWM5M2Q1NTk5NjkzMjQ2ZTBiZTc1NDZlMmM5OSI+PCFbQ0RBVEFbaHR0cDovL3N6bW1zbnMucXBpYy5jbi9tbXNucy9WRWRvamliZXZqUlBDdjlNM0FuSFM4NGI5d21MZDhSRG5yTjhqWlRqNnVYdHF0aWNyWUl2REFMQXBqZ0g0WWZES0JnampUVkh6WDdPVS8wXV0+PC91cmw+PHRodW1iIHR5cGU9IjEiPjwhW0NEQVRBW2h0dHA6Ly9zem1tc25zLnFwaWMuY24vbW1zbnMvVkVkb2ppYmV2alJQQ3Y5TTNBbkhTODRiOXdtTGQ4UkRuck44alpUajZ1WHRxdGljcllJdkRBTEFwamdINFlmREtCZ2pqVFZIelg3T1UvMTUwXV0+PC90aHVtYj48dmlkZW9EdXJhdGlvbj48IVtDREFUQVswLjBdXT48L3ZpZGVvRHVyYXRpb24+PHNpemUgdG90YWxTaXplPSI0NDUzOC4wIiB3aWR0aD0iMTA4MC4wIiBoZWlnaHQ9IjIzNDAuMCI+PC9zaXplPjwvbWVkaWE+PC9tZWRpYUxpc3Q+PC9Db250ZW50T2JqZWN0PjxhY3Rpb25JbmZvPjxhcHBNc2c+PG1lZGlhVGFnTmFtZT48L21lZGlhVGFnTmFtZT48bWVzc2FnZUV4dD48L21lc3NhZ2VFeHQ+PG1lc3NhZ2VBY3Rpb24+PC9tZXNzYWdlQWN0aW9uPjwvYXBwTXNnPjwvYWN0aW9uSW5mbz48YXBwSW5mbz48aWQ+PC9pZD48L2FwcEluZm8+PGxvY2F0aW9uIHBvaUNsYXNzaWZ5SWQ9IiIgcG9pTmFtZT0iIiBwb2lBZGRyZXNzPSIiIHBvaUNsYXNzaWZ5VHlwZT0iMCIgY2l0eT0iIj48L2xvY2F0aW9uPjxwdWJsaWNVc2VyTmFtZT48L3B1YmxpY1VzZXJOYW1lPjxzdHJlYW12aWRlbz48c3RyZWFtdmlkZW91cmw+PC9zdHJlYW12aWRlb3VybD48c3RyZWFtdmlkZW90aHVtYnVybD48L3N0cmVhbXZpZGVvdGh1bWJ1cmw+PHN0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW93ZWJ1cmw+PC9zdHJlYW12aWRlbz48L1RpbWVsaW5lT2JqZWN0Pg==","iLen":2077},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_uwbxwbt4ihjd22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1626542926,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13644431003338420534,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"小张晚安","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY0NDQzMTAwMzMzODQyMDUzNF1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfdXdieHdidDRpaGpkMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjY1NDI5MjZdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBW+aYr+WTquS4quS6uua4o+WcqOWPkeiqk++8jOaQnuW+l+S7iuaZmuWPiOaYr+aatOmbqO+8jOWPiOaYr+aJk+mbt+eahFvml7rmn7RdW+aXuuaftF1dXT48L2NvbnRlbnREZXNjPjxjb250ZW50YXR0cj48IVtDREFUQVswXV0+PC9jb250ZW50YXR0cj48c291cmNlVXNlck5hbWU+PC9zb3VyY2VVc2VyTmFtZT48c291cmNlTmlja05hbWU+PC9zb3VyY2VOaWNrTmFtZT48c3RhdGlzdGljc0RhdGE+PC9zdGF0aXN0aWNzRGF0YT48d2VhcHBJbmZvPjxhcHBVc2VyTmFtZT48L2FwcFVzZXJOYW1lPjxwYWdlUGF0aD48L3BhZ2VQYXRoPjx2ZXJzaW9uPjwhW0NEQVRBWzBdXT48L3ZlcnNpb24+PGRlYnVnTW9kZT48IVtDREFUQVswXV0+PC9kZWJ1Z01vZGU+PHNoYXJlQWN0aW9uSWQ+PC9zaGFyZUFjdGlvbklkPjxpc0dhbWU+PCFbQ0RBVEFbMF1dPjwvaXNHYW1lPjxtZXNzYWdlRXh0cmFEYXRhPjwvbWVzc2FnZUV4dHJhRGF0YT48c3ViVHlwZT48IVtDREFUQVswXV0+PC9zdWJUeXBlPjxwcmVsb2FkUmVzb3VyY2VzPjwvcHJlbG9hZFJlc291cmNlcz48L3dlYXBwSW5mbz48Y2FudmFzSW5mb1htbD48L2NhbnZhc0luZm9YbWw+PENvbnRlbnRPYmplY3Q+PGNvbnRlbnRTdHlsZT48IVtDREFUQVsyXV0+PC9jb250ZW50U3R5bGU+PGNvbnRlbnRTdWJTdHlsZT48IVtDREFUQVswXV0+PC9jb250ZW50U3ViU3R5bGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PGNvbnRlbnRVcmw+PC9jb250ZW50VXJsPjwvQ29udGVudE9iamVjdD48YWN0aW9uSW5mbz48YXBwTXNnPjxtZWRpYVRhZ05hbWU+PC9tZWRpYVRhZ05hbWU+PG1lc3NhZ2VFeHQ+PC9tZXNzYWdlRXh0PjxtZXNzYWdlQWN0aW9uPjwvbWVzc2FnZUFjdGlvbj48L2FwcE1zZz48L2FjdGlvbkluZm8+PGFwcEluZm8+PGlkPjwvaWQ+PC9hcHBJbmZvPjxsb2NhdGlvbiBwb2lDbGFzc2lmeUlkPSIiIHBvaU5hbWU9IiIgcG9pQWRkcmVzcz0iIiBwb2lDbGFzc2lmeVR5cGU9IjAiIGNpdHk9IiI+PC9sb2NhdGlvbj48cHVibGljVXNlck5hbWU+PC9wdWJsaWNVc2VyTmFtZT48c3RyZWFtdmlkZW8+PHN0cmVhbXZpZGVvdXJsPjwvc3RyZWFtdmlkZW91cmw+PHN0cmVhbXZpZGVvdGh1bWJ1cmw+PC9zdHJlYW12aWRlb3RodW1idXJsPjxzdHJlYW12aWRlb3dlYnVybD48L3N0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW8+PC9UaW1lbGluZU9iamVjdD4=","iLen":1496},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_uwbxwbt4ihjd22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1626442781,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13643590928611357004,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"小张晚安","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY0MzU5MDkyODYxMTM1NzAwNF1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfdXdieHdidDRpaGpkMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjY0NDI3ODFdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBW+S7iuaZmuaciOS6rvCfjJkg5b6I5byv77yM5Lq65rKh5byv5bCx5aW9W+aXuuaftF1b5pe65p+0XV1dPjwvY29udGVudERlc2M+PGNvbnRlbnRhdHRyPjwhW0NEQVRBWzBdXT48L2NvbnRlbnRhdHRyPjxzb3VyY2VVc2VyTmFtZT48L3NvdXJjZVVzZXJOYW1lPjxzb3VyY2VOaWNrTmFtZT48L3NvdXJjZU5pY2tOYW1lPjxzdGF0aXN0aWNzRGF0YT48L3N0YXRpc3RpY3NEYXRhPjx3ZWFwcEluZm8+PGFwcFVzZXJOYW1lPjwvYXBwVXNlck5hbWU+PHBhZ2VQYXRoPjwvcGFnZVBhdGg+PHZlcnNpb24+PCFbQ0RBVEFbMF1dPjwvdmVyc2lvbj48ZGVidWdNb2RlPjwhW0NEQVRBWzBdXT48L2RlYnVnTW9kZT48c2hhcmVBY3Rpb25JZD48L3NoYXJlQWN0aW9uSWQ+PGlzR2FtZT48IVtDREFUQVswXV0+PC9pc0dhbWU+PG1lc3NhZ2VFeHRyYURhdGE+PC9tZXNzYWdlRXh0cmFEYXRhPjxzdWJUeXBlPjwhW0NEQVRBWzBdXT48L3N1YlR5cGU+PHByZWxvYWRSZXNvdXJjZXM+PC9wcmVsb2FkUmVzb3VyY2VzPjwvd2VhcHBJbmZvPjxjYW52YXNJbmZvWG1sPjwvY2FudmFzSW5mb1htbD48Q29udGVudE9iamVjdD48Y29udGVudFN0eWxlPjwhW0NEQVRBWzFdXT48L2NvbnRlbnRTdHlsZT48Y29udGVudFN1YlN0eWxlPjwhW0NEQVRBWzBdXT48L2NvbnRlbnRTdWJTdHlsZT48dGl0bGU+PC90aXRsZT48ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj48Y29udGVudFVybD48L2NvbnRlbnRVcmw+PG1lZGlhTGlzdD48bWVkaWE+PGlkPjwhW0NEQVRBWzEzNjQzNTkwOTI5MjEzMjM5NjQxXV0+PC9pZD48dHlwZT48IVtDREFUQVsyXV0+PC90eXBlPjx0aXRsZT48L3RpdGxlPjxkZXNjcmlwdGlvbj48L2Rlc2NyaXB0aW9uPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PHVybCB0eXBlPSIxIiBtZDU9ImEwYzA1NTljMTE3MDUwOTIxM2YyNGMwNWMwMmVjODRkIj48IVtDREFUQVtodHRwOi8vc3ptbXNucy5xcGljLmNuL21tc25zL1ZFZG9qaWJldmpSUEN2OU0zQW5IUzh3UFEzaWJKZGRHRXI4SThOYU9WNnJFWHhtNmtLeG9Ob0xjdTVIMVZBN3hpY3BpYTZCZDJORHFNQ2svMF1dPjwvdXJsPjx0aHVtYiB0eXBlPSIxIj48IVtDREFUQVtodHRwOi8vc3ptbXNucy5xcGljLmNuL21tc25zL1ZFZG9qaWJldmpSUEN2OU0zQW5IUzh3UFEzaWJKZGRHRXI4SThOYU9WNnJFWHhtNmtLeG9Ob0xjdTVIMVZBN3hpY3BpYTZCZDJORHFNQ2svMTUwXV0+PC90aHVtYj48dmlkZW9EdXJhdGlvbj48IVtDREFUQVswLjBdXT48L3ZpZGVvRHVyYXRpb24+PHNpemUgdG90YWxTaXplPSI3MTYzNy4wIiB3aWR0aD0iOTc4LjAiIGhlaWdodD0iMTE2NC4wIj48L3NpemU+PC9tZWRpYT48L21lZGlhTGlzdD48L0NvbnRlbnRPYmplY3Q+PGFjdGlvbkluZm8+PGFwcE1zZz48bWVkaWFUYWdOYW1lPjwvbWVkaWFUYWdOYW1lPjxtZXNzYWdlRXh0PjwvbWVzc2FnZUV4dD48bWVzc2FnZUFjdGlvbj48L21lc3NhZ2VBY3Rpb24+PC9hcHBNc2c+PC9hY3Rpb25JbmZvPjxhcHBJbmZvPjxpZD48L2lkPjwvYXBwSW5mbz48bG9jYXRpb24gcG9pQ2xhc3NpZnlJZD0iIiBwb2lOYW1lPSIiIHBvaUFkZHJlc3M9IiIgcG9pQ2xhc3NpZnlUeXBlPSIwIiBjaXR5PSIiPjwvbG9jYXRpb24+PHB1YmxpY1VzZXJOYW1lPjwvcHVibGljVXNlck5hbWU+PHN0cmVhbXZpZGVvPjxzdHJlYW12aWRlb3VybD48L3N0cmVhbXZpZGVvdXJsPjxzdHJlYW12aWRlb3RodW1idXJsPjwvc3RyZWFtdmlkZW90aHVtYnVybD48c3RyZWFtdmlkZW93ZWJ1cmw+PC9zdHJlYW12aWRlb3dlYnVybD48L3N0cmVhbXZpZGVvPjwvVGltZWxpbmVPYmplY3Q+","iLen":2085},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_uwbxwbt4ihjd22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1626348290,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13642798280310927692,"isNotRichText":1,"likeCount":1,"likeFlag":0,"likeUserList":[{"commentFlag":0,"commentId":0,"commentId2":0,"content":"","createTime":1626351692,"deleteFlag":0,"isNotRichText":0,"nickname":"Mr.Y","replyCommentId":0,"replyCommentId2":0,"replyUsername":"","source":0,"type":1,"username":"wxid_ocmmotiznvw122"}],"likeUserListCount":1,"nickname":"小张晚安","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY0Mjc5ODI4MDMxMDkyNzY5Ml1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfdXdieHdidDRpaGpkMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjYzNDgyOTBdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBW+imgeW+l+eRn+W+l+eRn++8jOWHj+S4gOWNiuebruagh+S6hlvml7rmn7RdW+aXuuaftF1dXT48L2NvbnRlbnREZXNjPjxjb250ZW50YXR0cj48IVtDREFUQVswXV0+PC9jb250ZW50YXR0cj48c291cmNlVXNlck5hbWU+PC9zb3VyY2VVc2VyTmFtZT48c291cmNlTmlja05hbWU+PC9zb3VyY2VOaWNrTmFtZT48c3RhdGlzdGljc0RhdGE+PC9zdGF0aXN0aWNzRGF0YT48d2VhcHBJbmZvPjxhcHBVc2VyTmFtZT48L2FwcFVzZXJOYW1lPjxwYWdlUGF0aD48L3BhZ2VQYXRoPjx2ZXJzaW9uPjwhW0NEQVRBWzBdXT48L3ZlcnNpb24+PGRlYnVnTW9kZT48IVtDREFUQVswXV0+PC9kZWJ1Z01vZGU+PHNoYXJlQWN0aW9uSWQ+PC9zaGFyZUFjdGlvbklkPjxpc0dhbWU+PCFbQ0RBVEFbMF1dPjwvaXNHYW1lPjxtZXNzYWdlRXh0cmFEYXRhPjwvbWVzc2FnZUV4dHJhRGF0YT48c3ViVHlwZT48IVtDREFUQVswXV0+PC9zdWJUeXBlPjxwcmVsb2FkUmVzb3VyY2VzPjwvcHJlbG9hZFJlc291cmNlcz48L3dlYXBwSW5mbz48Y2FudmFzSW5mb1htbD48L2NhbnZhc0luZm9YbWw+PENvbnRlbnRPYmplY3Q+PGNvbnRlbnRTdHlsZT48IVtDREFUQVsxXV0+PC9jb250ZW50U3R5bGU+PGNvbnRlbnRTdWJTdHlsZT48IVtDREFUQVswXV0+PC9jb250ZW50U3ViU3R5bGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PGNvbnRlbnRVcmw+PC9jb250ZW50VXJsPjxtZWRpYUxpc3Q+PG1lZGlhPjxpZD48IVtDREFUQVsxMzY0Mjc5ODI4MTAzODMxMTc2Ml1dPjwvaWQ+PHR5cGU+PCFbQ0RBVEFbMl1dPjwvdHlwZT48dGl0bGU+PC90aXRsZT48ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj48cHJpdmF0ZT48IVtDREFUQVswXV0+PC9wcml2YXRlPjx1cmwgdHlwZT0iMSIgbWQ1PSI0NmE0OGE0YzgzOTNhMDA0NWZjZTUzZGU4ZmEzODg0OSI+PCFbQ0RBVEFbaHR0cDovL3N6bW1zbnMucXBpYy5jbi9tbXNucy9WRWRvamliZXZqUlBDdjlNM0FuSFM4OFRoT0dJczEwSGdDMEtLUDRidUJIQnh1eUhXa3BBT0VudnpvSmtyZElEbkJ3N2JRNjVSZ0VnLzBdXT48L3VybD48dGh1bWIgdHlwZT0iMSI+PCFbQ0RBVEFbaHR0cDovL3N6bW1zbnMucXBpYy5jbi9tbXNucy9WRWRvamliZXZqUlBDdjlNM0FuSFM4OFRoT0dJczEwSGdDMEtLUDRidUJIQnh1eUhXa3BBT0VudnpvSmtyZElEbkJ3N2JRNjVSZ0VnLzE1MF1dPjwvdGh1bWI+PHZpZGVvRHVyYXRpb24+PCFbQ0RBVEFbMC4wXV0+PC92aWRlb0R1cmF0aW9uPjxzaXplIHRvdGFsU2l6ZT0iOTM3MzEuMCIgd2lkdGg9IjE0NDAuMCIgaGVpZ2h0PSIxMDgwLjAiPjwvc2l6ZT48L21lZGlhPjwvbWVkaWFMaXN0PjwvQ29udGVudE9iamVjdD48YWN0aW9uSW5mbz48YXBwTXNnPjxtZWRpYVRhZ05hbWU+PC9tZWRpYVRhZ05hbWU+PG1lc3NhZ2VFeHQ+PC9tZXNzYWdlRXh0PjxtZXNzYWdlQWN0aW9uPjwvbWVzc2FnZUFjdGlvbj48L2FwcE1zZz48L2FjdGlvbkluZm8+PGFwcEluZm8+PGlkPjwvaWQ+PC9hcHBJbmZvPjxsb2NhdGlvbiBwb2lDbGFzc2lmeUlkPSIiIHBvaU5hbWU9IiIgcG9pQWRkcmVzcz0iIiBwb2lDbGFzc2lmeVR5cGU9IjAiIGNpdHk9IiI+PC9sb2NhdGlvbj48cHVibGljVXNlck5hbWU+PC9wdWJsaWNVc2VyTmFtZT48c3RyZWFtdmlkZW8+PHN0cmVhbXZpZGVvdXJsPjwvc3RyZWFtdmlkZW91cmw+PHN0cmVhbXZpZGVvdGh1bWJ1cmw+PC9zdHJlYW12aWRlb3RodW1idXJsPjxzdHJlYW12aWRlb3dlYnVybD48L3N0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW8+PC9UaW1lbGluZU9iamVjdD4=","iLen":2075},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_uwbxwbt4ihjd22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1626277124,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13642201292100546882,"isNotRichText":1,"likeCount":1,"likeFlag":0,"likeUserList":[{"commentFlag":0,"commentId":0,"commentId2":0,"content":"","createTime":1626277179,"deleteFlag":0,"isNotRichText":0,"nickname":"为美好的世界献上祝福","replyCommentId":0,"replyCommentId2":0,"replyUsername":"","source":0,"type":1,"username":"wxid_mjzeh4qj9hio22"}],"likeUserListCount":1,"nickname":"小张晚安","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY0MjIwMTI5MjEwMDU0Njg4Ml1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfdXdieHdidDRpaGpkMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjYyNzcxMjRdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBW+WNp+anve+8jOaUtuWIsOS6humihOitpuitpuWRilvmg4rmgZBdW+aDiuaBkF1dXT48L2NvbnRlbnREZXNjPjxjb250ZW50YXR0cj48IVtDREFUQVswXV0+PC9jb250ZW50YXR0cj48c291cmNlVXNlck5hbWU+PC9zb3VyY2VVc2VyTmFtZT48c291cmNlTmlja05hbWU+PC9zb3VyY2VOaWNrTmFtZT48c3RhdGlzdGljc0RhdGE+PC9zdGF0aXN0aWNzRGF0YT48d2VhcHBJbmZvPjxhcHBVc2VyTmFtZT48L2FwcFVzZXJOYW1lPjxwYWdlUGF0aD48L3BhZ2VQYXRoPjx2ZXJzaW9uPjwhW0NEQVRBWzBdXT48L3ZlcnNpb24+PGRlYnVnTW9kZT48IVtDREFUQVswXV0+PC9kZWJ1Z01vZGU+PHNoYXJlQWN0aW9uSWQ+PC9zaGFyZUFjdGlvbklkPjxpc0dhbWU+PCFbQ0RBVEFbMF1dPjwvaXNHYW1lPjxtZXNzYWdlRXh0cmFEYXRhPjwvbWVzc2FnZUV4dHJhRGF0YT48c3ViVHlwZT48IVtDREFUQVswXV0+PC9zdWJUeXBlPjxwcmVsb2FkUmVzb3VyY2VzPjwvcHJlbG9hZFJlc291cmNlcz48L3dlYXBwSW5mbz48Y2FudmFzSW5mb1htbD48L2NhbnZhc0luZm9YbWw+PENvbnRlbnRPYmplY3Q+PGNvbnRlbnRTdHlsZT48IVtDREFUQVsyXV0+PC9jb250ZW50U3R5bGU+PGNvbnRlbnRTdWJTdHlsZT48IVtDREFUQVswXV0+PC9jb250ZW50U3ViU3R5bGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PGNvbnRlbnRVcmw+PC9jb250ZW50VXJsPjwvQ29udGVudE9iamVjdD48YWN0aW9uSW5mbz48YXBwTXNnPjxtZWRpYVRhZ05hbWU+PC9tZWRpYVRhZ05hbWU+PG1lc3NhZ2VFeHQ+PC9tZXNzYWdlRXh0PjxtZXNzYWdlQWN0aW9uPjwvbWVzc2FnZUFjdGlvbj48L2FwcE1zZz48L2FjdGlvbkluZm8+PGFwcEluZm8+PGlkPjwvaWQ+PC9hcHBJbmZvPjxsb2NhdGlvbiBwb2lDbGFzc2lmeUlkPSIiIHBvaU5hbWU9IiIgcG9pQWRkcmVzcz0iIiBwb2lDbGFzc2lmeVR5cGU9IjAiIGNpdHk9IiI+PC9sb2NhdGlvbj48cHVibGljVXNlck5hbWU+PC9wdWJsaWNVc2VyTmFtZT48c3RyZWFtdmlkZW8+PHN0cmVhbXZpZGVvdXJsPjwvc3RyZWFtdmlkZW91cmw+PHN0cmVhbXZpZGVvdGh1bWJ1cmw+PC9zdHJlYW12aWRlb3RodW1idXJsPjxzdHJlYW12aWRlb3dlYnVybD48L3N0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW8+PC9UaW1lbGluZU9iamVjdD4=","iLen":1457},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_uwbxwbt4ihjd22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1626099336,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13640709903944790348,"isNotRichText":1,"likeCount":1,"likeFlag":0,"likeUserList":[{"commentFlag":0,"commentId":0,"commentId2":0,"content":"","createTime":1626134130,"deleteFlag":0,"isNotRichText":0,"nickname":"Mr.Y","replyCommentId":0,"replyCommentId2":0,"replyUsername":"","source":0,"type":1,"username":"wxid_ocmmotiznvw122"}],"likeUserListCount":1,"nickname":"小张晚安","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY0MDcwOTkwMzk0NDc5MDM0OF1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfdXdieHdidDRpaGpkMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjYwOTkzMzZdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBW+S5n+eul+aYr+S4izcw5LqGW+aXuuaftF1b5pe65p+0XV1dPjwvY29udGVudERlc2M+PGNvbnRlbnRhdHRyPjwhW0NEQVRBWzBdXT48L2NvbnRlbnRhdHRyPjxzb3VyY2VVc2VyTmFtZT48L3NvdXJjZVVzZXJOYW1lPjxzb3VyY2VOaWNrTmFtZT48L3NvdXJjZU5pY2tOYW1lPjxzdGF0aXN0aWNzRGF0YT48L3N0YXRpc3RpY3NEYXRhPjx3ZWFwcEluZm8+PGFwcFVzZXJOYW1lPjwvYXBwVXNlck5hbWU+PHBhZ2VQYXRoPjwvcGFnZVBhdGg+PHZlcnNpb24+PCFbQ0RBVEFbMF1dPjwvdmVyc2lvbj48ZGVidWdNb2RlPjwhW0NEQVRBWzBdXT48L2RlYnVnTW9kZT48c2hhcmVBY3Rpb25JZD48L3NoYXJlQWN0aW9uSWQ+PGlzR2FtZT48IVtDREFUQVswXV0+PC9pc0dhbWU+PG1lc3NhZ2VFeHRyYURhdGE+PC9tZXNzYWdlRXh0cmFEYXRhPjxzdWJUeXBlPjwhW0NEQVRBWzBdXT48L3N1YlR5cGU+PHByZWxvYWRSZXNvdXJjZXM+PC9wcmVsb2FkUmVzb3VyY2VzPjwvd2VhcHBJbmZvPjxjYW52YXNJbmZvWG1sPjwvY2FudmFzSW5mb1htbD48Q29udGVudE9iamVjdD48Y29udGVudFN0eWxlPjwhW0NEQVRBWzFdXT48L2NvbnRlbnRTdHlsZT48Y29udGVudFN1YlN0eWxlPjwhW0NEQVRBWzBdXT48L2NvbnRlbnRTdWJTdHlsZT48dGl0bGU+PC90aXRsZT48ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj48Y29udGVudFVybD48L2NvbnRlbnRVcmw+PG1lZGlhTGlzdD48bWVkaWE+PGlkPjwhW0NEQVRBWzEzNjQwNzA5OTA0NjgyODU2Nzc0XV0+PC9pZD48dHlwZT48IVtDREFUQVsyXV0+PC90eXBlPjx0aXRsZT48L3RpdGxlPjxkZXNjcmlwdGlvbj48L2Rlc2NyaXB0aW9uPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PHVybCB0eXBlPSIxIiBtZDU9IjQzNjdkOTU4Yzc1MjJkY2E3NWZiNmM4MzY2ODYxZGQzIj48IVtDREFUQVtodHRwOi8vc3ptbXNucy5xcGljLmNuL21tc25zL1ZFZG9qaWJldmpST056ajFQdTJtSTB2QmNPVzkzTnRVUDU4UWtONFM4d2VTa3RIS2lhdzM1YUFPUjNObGV2Z2hBYndTRU43ZTY3ZVljLzBdXT48L3VybD48dGh1bWIgdHlwZT0iMSI+PCFbQ0RBVEFbaHR0cDovL3N6bW1zbnMucXBpYy5jbi9tbXNucy9WRWRvamliZXZqUk9OemoxUHUybUkwdkJjT1c5M050VVA1OFFrTjRTOHdlU2t0SEtpYXczNWFBT1IzTmxldmdoQWJ3U0VON2U2N2VZYy8xNTBdXT48L3RodW1iPjx2aWRlb0R1cmF0aW9uPjwhW0NEQVRBWzAuMF1dPjwvdmlkZW9EdXJhdGlvbj48c2l6ZSB0b3RhbFNpemU9IjE2OTMxLjAiIHdpZHRoPSI3MjYuMCIgaGVpZ2h0PSIyOTkuMCI+PC9zaXplPjwvbWVkaWE+PC9tZWRpYUxpc3Q+PC9Db250ZW50T2JqZWN0PjxhY3Rpb25JbmZvPjxhcHBNc2c+PG1lZGlhVGFnTmFtZT48L21lZGlhVGFnTmFtZT48bWVzc2FnZUV4dD48L21lc3NhZ2VFeHQ+PG1lc3NhZ2VBY3Rpb24+PC9tZXNzYWdlQWN0aW9uPjwvYXBwTXNnPjwvYWN0aW9uSW5mbz48YXBwSW5mbz48aWQ+PC9pZD48L2FwcEluZm8+PGxvY2F0aW9uIHBvaUNsYXNzaWZ5SWQ9IiIgcG9pTmFtZT0iIiBwb2lBZGRyZXNzPSIiIHBvaUNsYXNzaWZ5VHlwZT0iMCIgY2l0eT0iIj48L2xvY2F0aW9uPjxwdWJsaWNVc2VyTmFtZT48L3B1YmxpY1VzZXJOYW1lPjxzdHJlYW12aWRlbz48c3RyZWFtdmlkZW91cmw+PC9zdHJlYW12aWRlb3VybD48c3RyZWFtdmlkZW90aHVtYnVybD48L3N0cmVhbXZpZGVvdGh1bWJ1cmw+PHN0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW93ZWJ1cmw+PC9zdHJlYW12aWRlbz48L1RpbWVsaW5lT2JqZWN0Pg==","iLen":2056},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_uwbxwbt4ihjd22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1626020250,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13640046480797544764,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"小张晚安","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY0MDA0NjQ4MDc5NzU0NDc2NF1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfdXdieHdidDRpaGpkMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjYwMjAyNTBdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBW+S9oOiLpeacquWHuueOsO+8jOa4uOaIj+S4jeWNuOi9ve+8gV1dPjwvY29udGVudERlc2M+PGNvbnRlbnRhdHRyPjwhW0NEQVRBWzBdXT48L2NvbnRlbnRhdHRyPjxzb3VyY2VVc2VyTmFtZT48L3NvdXJjZVVzZXJOYW1lPjxzb3VyY2VOaWNrTmFtZT48L3NvdXJjZU5pY2tOYW1lPjxzdGF0aXN0aWNzRGF0YT48L3N0YXRpc3RpY3NEYXRhPjx3ZWFwcEluZm8+PGFwcFVzZXJOYW1lPjwvYXBwVXNlck5hbWU+PHBhZ2VQYXRoPjwvcGFnZVBhdGg+PHZlcnNpb24+PCFbQ0RBVEFbMF1dPjwvdmVyc2lvbj48ZGVidWdNb2RlPjwhW0NEQVRBWzBdXT48L2RlYnVnTW9kZT48c2hhcmVBY3Rpb25JZD48L3NoYXJlQWN0aW9uSWQ+PGlzR2FtZT48IVtDREFUQVswXV0+PC9pc0dhbWU+PG1lc3NhZ2VFeHRyYURhdGE+PC9tZXNzYWdlRXh0cmFEYXRhPjxzdWJUeXBlPjwhW0NEQVRBWzBdXT48L3N1YlR5cGU+PHByZWxvYWRSZXNvdXJjZXM+PC9wcmVsb2FkUmVzb3VyY2VzPjwvd2VhcHBJbmZvPjxjYW52YXNJbmZvWG1sPjwvY2FudmFzSW5mb1htbD48Q29udGVudE9iamVjdD48Y29udGVudFN0eWxlPjwhW0NEQVRBWzFdXT48L2NvbnRlbnRTdHlsZT48Y29udGVudFN1YlN0eWxlPjwhW0NEQVRBWzBdXT48L2NvbnRlbnRTdWJTdHlsZT48dGl0bGU+PC90aXRsZT48ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj48Y29udGVudFVybD48L2NvbnRlbnRVcmw+PG1lZGlhTGlzdD48bWVkaWE+PGlkPjwhW0NEQVRBWzEzNjQwMDQ2NDgxNTA3OTU0OTk1XV0+PC9pZD48dHlwZT48IVtDREFUQVsyXV0+PC90eXBlPjx0aXRsZT48L3RpdGxlPjxkZXNjcmlwdGlvbj48L2Rlc2NyaXB0aW9uPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PHVybCB0eXBlPSIxIiBtZDU9Ijg4NDJkMGU0YjU2ZWZjMzhkZjVhMTlkMjgxMzA2OTYyIj48IVtDREFUQVtodHRwOi8vc3ptbXNucy5xcGljLmNuL21tc25zL1ZFZG9qaWJldmpST056ajFQdTJtSTBqYmliM292bmlieG8xcTJpYm9taWNCbnZhU2dNRjRuRmtpYWZCYWJ0RlEyaEJYbGZCTUxnMmliZjg1VmsvMF1dPjwvdXJsPjx0aHVtYiB0eXBlPSIxIj48IVtDREFUQVtodHRwOi8vc3ptbXNucy5xcGljLmNuL21tc25zL1ZFZG9qaWJldmpST056ajFQdTJtSTBqYmliM292bmlieG8xcTJpYm9taWNCbnZhU2dNRjRuRmtpYWZCYWJ0RlEyaEJYbGZCTUxnMmliZjg1VmsvMTUwXV0+PC90aHVtYj48dmlkZW9EdXJhdGlvbj48IVtDREFUQVswLjBdXT48L3ZpZGVvRHVyYXRpb24+PHNpemUgdG90YWxTaXplPSIxMDk5Ny4wIiB3aWR0aD0iMjM0LjAiIGhlaWdodD0iNDQwLjAiPjwvc2l6ZT48L21lZGlhPjwvbWVkaWFMaXN0PjwvQ29udGVudE9iamVjdD48YWN0aW9uSW5mbz48YXBwTXNnPjxtZWRpYVRhZ05hbWU+PC9tZWRpYVRhZ05hbWU+PG1lc3NhZ2VFeHQ+PC9tZXNzYWdlRXh0PjxtZXNzYWdlQWN0aW9uPjwvbWVzc2FnZUFjdGlvbj48L2FwcE1zZz48L2FjdGlvbkluZm8+PGFwcEluZm8+PGlkPjwvaWQ+PC9hcHBJbmZvPjxsb2NhdGlvbiBwb2lDbGFzc2lmeUlkPSIiIHBvaU5hbWU9IiIgcG9pQWRkcmVzcz0iIiBwb2lDbGFzc2lmeVR5cGU9IjAiIGNpdHk9IiI+PC9sb2NhdGlvbj48cHVibGljVXNlck5hbWU+PC9wdWJsaWNVc2VyTmFtZT48c3RyZWFtdmlkZW8+PHN0cmVhbXZpZGVvdXJsPjwvc3RyZWFtdmlkZW91cmw+PHN0cmVhbXZpZGVvdGh1bWJ1cmw+PC9zdHJlYW12aWRlb3RodW1idXJsPjxzdHJlYW12aWRlb3dlYnVybD48L3N0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW8+PC9UaW1lbGluZU9iamVjdD4=","iLen":2069},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_uwbxwbt4ihjd22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1625753812,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13637811438959997245,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"小张晚安","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzYzNzgxMTQzODk1OTk5NzI0NV1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfdXdieHdidDRpaGpkMjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjU3NTM4MTJdXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBW+ivpeatu++8jOi3keS6huW/q+S4pOWFrOmHjOiuoeatpeWZqOaJjeW8gOWni+iuoeaVsO+8jOaIkeivtOaAjuS5iOi3keS6humCo+S5iOS5he+8jOi/mOayoeS4gOWFrOmHjOWSqVvoi6bmtqldW+iLpua2qV3vvIzmi7/lh7rmiYvmnLrkuIDnnIvvvIzmsqHorqHmraXvvIzmraPluLjmg4XlhrXml6nkupTlhazph4zkuoZb5pOm5rGXXVvmk6bmsZddXV0+PC9jb250ZW50RGVzYz48Y29udGVudGF0dHI+PCFbQ0RBVEFbMF1dPjwvY29udGVudGF0dHI+PHNvdXJjZVVzZXJOYW1lPjwvc291cmNlVXNlck5hbWU+PHNvdXJjZU5pY2tOYW1lPjwvc291cmNlTmlja05hbWU+PHN0YXRpc3RpY3NEYXRhPjwvc3RhdGlzdGljc0RhdGE+PHdlYXBwSW5mbz48YXBwVXNlck5hbWU+PC9hcHBVc2VyTmFtZT48cGFnZVBhdGg+PC9wYWdlUGF0aD48dmVyc2lvbj48IVtDREFUQVswXV0+PC92ZXJzaW9uPjxkZWJ1Z01vZGU+PCFbQ0RBVEFbMF1dPjwvZGVidWdNb2RlPjxzaGFyZUFjdGlvbklkPjwvc2hhcmVBY3Rpb25JZD48aXNHYW1lPjwhW0NEQVRBWzBdXT48L2lzR2FtZT48bWVzc2FnZUV4dHJhRGF0YT48L21lc3NhZ2VFeHRyYURhdGE+PHN1YlR5cGU+PCFbQ0RBVEFbMF1dPjwvc3ViVHlwZT48cHJlbG9hZFJlc291cmNlcz48L3ByZWxvYWRSZXNvdXJjZXM+PC93ZWFwcEluZm8+PGNhbnZhc0luZm9YbWw+PC9jYW52YXNJbmZvWG1sPjxDb250ZW50T2JqZWN0Pjxjb250ZW50U3R5bGU+PCFbQ0RBVEFbMV1dPjwvY29udGVudFN0eWxlPjxjb250ZW50U3ViU3R5bGU+PCFbQ0RBVEFbMF1dPjwvY29udGVudFN1YlN0eWxlPjx0aXRsZT48L3RpdGxlPjxkZXNjcmlwdGlvbj48L2Rlc2NyaXB0aW9uPjxjb250ZW50VXJsPjwvY29udGVudFVybD48bWVkaWFMaXN0PjxtZWRpYT48aWQ+PCFbQ0RBVEFbMTM2Mzc4MTE0Mzk0MzkwNjU0MjhdXT48L2lkPjx0eXBlPjwhW0NEQVRBWzJdXT48L3R5cGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PHByaXZhdGU+PCFbQ0RBVEFbMF1dPjwvcHJpdmF0ZT48dXJsIHR5cGU9IjEiIG1kNT0iMGFkNGZmNWNjZDBhOWU1ODYxMjE3ODk1N2MwMmIzZTQiPjwhW0NEQVRBW2h0dHA6Ly9zem1tc25zLnFwaWMuY24vbW1zbnMvVkVkb2ppYmV2alJQQ3Y5TTNBbkhTODhuQTRTVTB4VWROMkhSbllqdGlhOEFVUGROR0EyMEQxS0FDd0JNN0VZNjlrT2g2MUZZQ0l2bWcvMF1dPjwvdXJsPjx0aHVtYiB0eXBlPSIxIj48IVtDREFUQVtodHRwOi8vc3ptbXNucy5xcGljLmNuL21tc25zL1ZFZG9qaWJldmpSUEN2OU0zQW5IUzg4bkE0U1UweFVkTjJIUm5ZanRpYThBVVBkTkdBMjBEMUtBQ3dCTTdFWTY5a09oNjFGWUNJdm1nLzE1MF1dPjwvdGh1bWI+PHZpZGVvRHVyYXRpb24+PCFbQ0RBVEFbMC4wXV0+PC92aWRlb0R1cmF0aW9uPjxzaXplIHRvdGFsU2l6ZT0iNzUxODEuMCIgd2lkdGg9Ijk3OC4wIiBoZWlnaHQ9IjExNjQuMCI+PC9zaXplPjwvbWVkaWE+PC9tZWRpYUxpc3Q+PC9Db250ZW50T2JqZWN0PjxhY3Rpb25JbmZvPjxhcHBNc2c+PG1lZGlhVGFnTmFtZT48L21lZGlhVGFnTmFtZT48bWVzc2FnZUV4dD48L21lc3NhZ2VFeHQ+PG1lc3NhZ2VBY3Rpb24+PC9tZXNzYWdlQWN0aW9uPjwvYXBwTXNnPjwvYWN0aW9uSW5mbz48YXBwSW5mbz48aWQ+PC9pZD48L2FwcEluZm8+PGxvY2F0aW9uIHBvaUNsYXNzaWZ5SWQ9IiIgcG9pTmFtZT0iIiBwb2lBZGRyZXNzPSIiIHBvaUNsYXNzaWZ5VHlwZT0iMCIgY2l0eT0iIj48L2xvY2F0aW9uPjxwdWJsaWNVc2VyTmFtZT48L3B1YmxpY1VzZXJOYW1lPjxzdHJlYW12aWRlbz48c3RyZWFtdmlkZW91cmw+PC9zdHJlYW12aWRlb3VybD48c3RyZWFtdmlkZW90aHVtYnVybD48L3N0cmVhbXZpZGVvdGh1bWJ1cmw+PHN0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW93ZWJ1cmw+PC9zdHJlYW12aWRlbz48L1RpbWVsaW5lT2JqZWN0Pg==","iLen":2221},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_uwbxwbt4ihjd22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1625569697,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13636266972566990992,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"#A02选购助手","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzYzNjI2Njk3MjU2Njk5MDk5Ml1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d4aWRfMHV3YnpnaWxmbWg4MjJdXT48L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjwhW0NEQVRBWzE2MjU1Njk2OTddXT48L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4wPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjwhW0NEQVRBWzBdXT48L3ByaXZhdGU+PGNvbnRlbnREZXNjPjwhW0NEQVRBWzQ3LjXlhYU1MOivnei0uSAgOTXlhYUxMDDor53otLlb5pe65p+0XSAK4pSB4pSB5omr56CB5YWF5YC84pSB4pSBCiAgICDkuInnvZHpg73lj6/ku6XvvIzliLDotKblv6tdXT48L2NvbnRlbnREZXNjPjxjb250ZW50YXR0cj48IVtDREFUQVswXV0+PC9jb250ZW50YXR0cj48c291cmNlVXNlck5hbWU+PC9zb3VyY2VVc2VyTmFtZT48c291cmNlTmlja05hbWU+PC9zb3VyY2VOaWNrTmFtZT48c3RhdGlzdGljc0RhdGE+PC9zdGF0aXN0aWNzRGF0YT48d2VhcHBJbmZvPjxhcHBVc2VyTmFtZT48L2FwcFVzZXJOYW1lPjxwYWdlUGF0aD48L3BhZ2VQYXRoPjx2ZXJzaW9uPjwhW0NEQVRBWzBdXT48L3ZlcnNpb24+PGRlYnVnTW9kZT48IVtDREFUQVswXV0+PC9kZWJ1Z01vZGU+PHNoYXJlQWN0aW9uSWQ+PC9zaGFyZUFjdGlvbklkPjxpc0dhbWU+PCFbQ0RBVEFbMF1dPjwvaXNHYW1lPjxtZXNzYWdlRXh0cmFEYXRhPjwvbWVzc2FnZUV4dHJhRGF0YT48c3ViVHlwZT48IVtDREFUQVswXV0+PC9zdWJUeXBlPjxwcmVsb2FkUmVzb3VyY2VzPjwvcHJlbG9hZFJlc291cmNlcz48L3dlYXBwSW5mbz48Y2FudmFzSW5mb1htbD48L2NhbnZhc0luZm9YbWw+PENvbnRlbnRPYmplY3Q+PGNvbnRlbnRTdHlsZT48IVtDREFUQVsxXV0+PC9jb250ZW50U3R5bGU+PGNvbnRlbnRTdWJTdHlsZT48IVtDREFUQVswXV0+PC9jb250ZW50U3ViU3R5bGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PGNvbnRlbnRVcmw+PC9jb250ZW50VXJsPjxtZWRpYUxpc3Q+PG1lZGlhPjxpZD48IVtDREFUQVsxMzYzNjI2Njk3MzA0NjEyNDY3OF1dPjwvaWQ+PHR5cGU+PCFbQ0RBVEFbMl1dPjwvdHlwZT48dGl0bGU+PC90aXRsZT48ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj48cHJpdmF0ZT48IVtDREFUQVswXV0+PC9wcml2YXRlPjx1cmwgbWQ1PSJiNzFjZjEyNDAzNzZlYjc4YzQwNjY0NmQ2NmZiYzY5MiIgdHlwZT0iMSI+PCFbQ0RBVEFbaHR0cDovL3NobW1zbnMucXBpYy5jbi9tbXNucy9qaExkS0Jvb1VIOVdNZW5RRGhXeDZlRmpNMHh4SlhVZW91a2VpY01QTWtrMzl2RjNYaE9SNDRZd1JGUWljTkE1NDZpYWdOU3BIaWM2YzNFLzBdXT48L3VybD48dGh1bWIgdHlwZT0iMSI+PCFbQ0RBVEFbaHR0cDovL3NobW1zbnMucXBpYy5jbi9tbXNucy9qaExkS0Jvb1VIOVdNZW5RRGhXeDZlRmpNMHh4SlhVZW91a2VpY01QTWtrMzl2RjNYaE9SNDRZd1JGUWljTkE1NDZpYWdOU3BIaWM2YzNFLzE1MF1dPjwvdGh1bWI+PHZpZGVvRHVyYXRpb24+PCFbQ0RBVEFbMC4wXV0+PC92aWRlb0R1cmF0aW9uPjxzaXplIGhlaWdodD0iMTkyMC4wIiB3aWR0aD0iMTA4MC4wIiB0b3RhbFNpemU9IjUxMzc0LjAiPjwvc2l6ZT48L21lZGlhPjxtZWRpYT48aWQ+PCFbQ0RBVEFbMTM2MzYyNjY5NzMwNDY2NDg5NjNdXT48L2lkPjx0eXBlPjwhW0NEQVRBWzJdXT48L3R5cGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PHByaXZhdGU+PCFbQ0RBVEFbMF1dPjwvcHJpdmF0ZT48dXJsIG1kNT0iNzIxZTY5MzdiMzBiOGUxYmY2MjBmNzY0ZWI4ZDgyYWQiIHR5cGU9IjEiPjwhW0NEQVRBW2h0dHA6Ly9zaG1tc25zLnFwaWMuY24vbW1zbnMvamhMZEtCb29VSDlXTWVuUURoV3g2ZUZqTTB4eEpYVWVEUkRHU2R0TWRVVTRpYkZ3NUpVN3QzaE1EYTlDdEFXQ3lFZWljS1JtMlVrbXcvMF1dPjwvdXJsPjx0aHVtYiB0eXBlPSIxIj48IVtDREFUQVtodHRwOi8vc2htbXNucy5xcGljLmNuL21tc25zL2poTGRLQm9vVUg5V01lblFEaFd4NmVGak0weHhKWFVlRFJER1NkdE1kVVU0aWJGdzVKVTd0M2hNRGE5Q3RBV0N5RWVpY0tSbTJVa213LzE1MF1dPjwvdGh1bWI+PHZpZGVvRHVyYXRpb24+PCFbQ0RBVEFbMC4wXV0+PC92aWRlb0R1cmF0aW9uPjxzaXplIGhlaWdodD0iMjM0MC4wIiB3aWR0aD0iMTA4MC4wIiB0b3RhbFNpemU9Ijc2Mzc4LjAiPjwvc2l6ZT48L21lZGlhPjwvbWVkaWFMaXN0PjwvQ29udGVudE9iamVjdD48YWN0aW9uSW5mbz48YXBwTXNnPjxtZWRpYVRhZ05hbWU+PC9tZWRpYVRhZ05hbWU+PG1lc3NhZ2VFeHQ+PC9tZXNzYWdlRXh0PjxtZXNzYWdlQWN0aW9uPjwvbWVzc2FnZUFjdGlvbj48L2FwcE1zZz48L2FjdGlvbkluZm8+PGFwcEluZm8+PGlkPjwvaWQ+PC9hcHBJbmZvPjxsb2NhdGlvbiBwb2lDbGFzc2lmeUlkPSIiIHBvaU5hbWU9IiIgcG9pQWRkcmVzcz0iIiBwb2lDbGFzc2lmeVR5cGU9IjAiIGNpdHk9IiI+PC9sb2NhdGlvbj48cHVibGljVXNlck5hbWU+PC9wdWJsaWNVc2VyTmFtZT48c3RyZWFtdmlkZW8+PHN0cmVhbXZpZGVvdXJsPjwvc3RyZWFtdmlkZW91cmw+PHN0cmVhbXZpZGVvdGh1bWJ1cmw+PC9zdHJlYW12aWRlb3RodW1idXJsPjxzdHJlYW12aWRlb3dlYnVybD48L3N0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW8+PC9UaW1lbGluZU9iamVjdD4=","iLen":2717},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_0uwbzgilfmh822","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0}],"recCount":0,"serverConfig":{"copyAndPasteWordLimit":100,"postMentionLimit":10},"session":{"buffer":"CIS65YcGEAEY6uHUgq2lv7K9ASDq4dSCraW/sr0BMIS65YcGSk8I/rLN8KwvEAoYhLrlhwYiIgjjrpTrop7C27wBEAQYBCDq4dSCraW/sr0BKIS65YcGMAEqGgjq4dSCraW/sr0BEJDh/JGEkvCevQEYCiABUIS65YcGYIS65YcG","iLen":129}},"type":11145} #endregion var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; var client = WechatClient.GetApi(user) as Wechat_Xiaoxie; if (!user.IsGetCircle) return; try { //var _data = json.ContainsKey("data") ? json["data"] as Dictionary : null; //if (_data == null) return; //foreach (KeyValuePair item in _data) //{ // var wxid = item["wxid"]?.ToString(); //} //for (int i = 0; i < _data.Count; i++) //{ // var item = _data[i] as Dictionary; // var wxid = item["wxid"]?.ToString(); //} user.CircleData = recvData; } catch (Exception ex) { } finally { user.IsGetCircle = false; } } break; case MsgType.MT_SNS_AUTO_AUTH_MINIAPP_LOGIN://小程序自动授权登录 { //{"data":{"appid":"wxde8ac0a21135c07d","code":"051QFNkl2pCwt748wlol2XID1B4QFNk8"},"type":11136} var appid = data["appid"].ToString(); var code = data["code"].ToString(); var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; if (user.AutoAuthLoginMiNiApps.ContainsKey(appid)) user.AutoAuthLoginMiNiApps.Remove(appid); user.AutoAuthLoginMiNiApps.Add(appid, code); } break; case MsgType.MT_SNS_POST_MSG://发送朋友圈 { #region 数据结构 /* {"data":{"baseResponse":{"ret":0},"snsObject":{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1627522835,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13652651078544265545,"isNotRichText":0,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"、","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD4xMzY1MjY1MTA3ODU0NDI2NTU0NTwvaWQ+PHVzZXJuYW1lPnd4aWRfdnY3cmV2N2E0eHBqMjI8L3VzZXJuYW1lPjxjcmVhdGVUaW1lPjE2Mjc1MjI4MzU8L2NyZWF0ZVRpbWU+PGNvbnRlbnREZXNjU2hvd1R5cGU+MDwvY29udGVudERlc2NTaG93VHlwZT48Y29udGVudERlc2NTY2VuZT4zPC9jb250ZW50RGVzY1NjZW5lPjxwcml2YXRlPjA8L3ByaXZhdGU+PGNvbnRlbnREZXNjPui/meS4quS9oOiCr+WumuS4jeefpemBk+aIkeeOsOWcqOaDs+eahEE8L2NvbnRlbnREZXNjPjxzaWdodEZvbGRlZD4wPC9zaWdodEZvbGRlZD48c2hvd0ZsYWc+MDwvc2hvd0ZsYWc+PGFwcEluZm8+PGlkPjwvaWQ+PHZlcnNpb24+PC92ZXJzaW9uPjxhcHBOYW1lPjwvYXBwTmFtZT48aW5zdGFsbFVybD48L2luc3RhbGxVcmw+PGZyb21Vcmw+PC9mcm9tVXJsPjxpc0ZvcmNlVXBkYXRlPjA8L2lzRm9yY2VVcGRhdGU+PC9hcHBJbmZvPjxzb3VyY2VVc2VyTmFtZT48L3NvdXJjZVVzZXJOYW1lPjxzb3VyY2VOaWNrTmFtZT48L3NvdXJjZU5pY2tOYW1lPjxzdGF0aXN0aWNzRGF0YT48L3N0YXRpc3RpY3NEYXRhPjxzdGF0RXh0U3RyPjwvc3RhdEV4dFN0cj48Q29udGVudE9iamVjdD48Y29udGVudFN0eWxlPjI8L2NvbnRlbnRTdHlsZT48dGl0bGU+PC90aXRsZT48ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj48bWVkaWFMaXN0PjwvbWVkaWFMaXN0Pjxjb250ZW50VXJsPjwvY29udGVudFVybD48L0NvbnRlbnRPYmplY3Q+PGFjdGlvbkluZm8+PGFwcE1zZz48bWVzc2FnZUFjdGlvbj48L21lc3NhZ2VBY3Rpb24+PC9hcHBNc2c+PC9hY3Rpb25JbmZvPjxsb2NhdGlvbiBwb2lDbGFzc2lmeUlkPSIiIHBvaU5hbWU9IiIgcG9pQWRkcmVzcz0iIiBwb2lDbGFzc2lmeVR5cGU9IjAiIGNpdHk9IiI+PC9sb2NhdGlvbj48cHVibGljVXNlck5hbWU+PC9wdWJsaWNVc2VyTmFtZT48c3RyZWFtdmlkZW8+PHN0cmVhbXZpZGVvdXJsPjwvc3RyZWFtdmlkZW91cmw+PHN0cmVhbXZpZGVvdGh1bWJ1cmw+PC9zdHJlYW12aWRlb3RodW1idXJsPjxzdHJlYW12aWRlb3dlYnVybD48L3N0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW8+PC9UaW1lbGluZU9iamVjdD4=","iLen":1112},"objectOperations":{"buffer":"","iLen":0},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wxid_vv7rev7a4xpj22","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0},"spamTips":""},"type":11148} */ #endregion if (data.ContainsKey("snsObject")) { var snsObject = data["snsObject"] as Dictionary; if (snsObject.ContainsKey("id")) { var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; user.SendCircleId = snsObject["id"].ToString(); } } } break; case MsgType.MT_SNS_COMMENT_MSG://朋友圈评论 { } break; case MsgType.MT_SNS_LIKE_MSG://朋友圈点赞 { } break; case MsgType.MT_SNS_UPLOAD_IMAGE_MSG://朋友圈上传图片 { //{"data":{"baseResponse":{"ret":0},"bufferUrl":{"type":1,"url":"http://mmsns.qpic.cn/mmsns/PiajxSqBRaELvAyQVFmJhGxEyianCKF1vsqwWh9GicmTGYkibHF8s3Pu0RAQNicdgRVsn/0"},"clientId":"wxid_vv7rev7a4xpj22_1627486860","id":0,"path":"D:\\PCRobot\\bin\\Debug\\Cache\\0728114016639.png","startPos":16627,"thumbUrlCount":1,"thumbUrls":[{"type":1,"url":"http://mmsns.qpic.cn/mmsns/PiajxSqBRaELvAyQVFmJhGxEyianCKF1vsqwWh9GicmTGYkibHF8s3Pu0RAQNicdgRVsn/150"}],"totalLen":16627,"type":2},"type":11149} //{"data":{"baseResponse":{"ret":0},"bufferUrl":{"type":1,"url":"http://mmsns.qpic.cn/mmsns/PiajxSqBRaELvAyQVFmJhGxEyianCKF1vsqwWh9GicmTGa9quIRWhDvpnuvgkSLwxaz/0"},"clientId":"wxid_vv7rev7a4xpj22_1627491212","id":0,"path":"","startPos":59023,"thumbUrlCount":1,"thumbUrls":[{"type":1,"url":"http://mmsns.qpic.cn/mmsns/PiajxSqBRaELvAyQVFmJhGxEyianCKF1vsqwWh9GicmTGa9quIRWhDvpnuvgkSLwxaz/150"}],"totalLen":59023,"type":2},"type":11149} //{"data":{"baseResponse":{"ret":0},"bufferUrl":{"type":1,"url":"http://mmsns.qpic.cn/mmsns/PiajxSqBRaELvAyQVFmJhGytHnYnRDfnZ3JnOPBfd4kopkfT9Kic2vlQibkXia04Zweib/0"},"clientId":"wxid_vv7rev7a4xpj22_1627523859","id":0,"path":"D:\\公司项目\\fl_system\\PCRobot\\bin\\Debug\\Cache\\0729095735481.jpg","startPos":47326,"thumbUrlCount":1,"thumbUrls":[{"type":1,"url":"http://mmsns.qpic.cn/mmsns/PiajxSqBRaELvAyQVFmJhGytHnYnRDfnZ3JnOPBfd4kopkfT9Kic2vlQibkXia04Zweib/150"}],"totalLen":47326,"type":2},"type":11149} LogHelper.GetSingleObj().Info(new StackTrace().GetFrame(0).GetMethod().Name, $"正在上传朋友圈图片:" + recvData); var upLoadImage = JsonConvert.DeserializeObject(recvData); if (upLoadImage != null) { if (upLoadImage.data.startPos == upLoadImage.data.totalLen) { var path = upLoadImage.data.path; var url = upLoadImage.data.bufferUrl.url; if (!string.IsNullOrWhiteSpace(path) && !string.IsNullOrWhiteSpace(url)) { var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; if (user.UpLoadImages.ContainsKey(path)) user.UpLoadImages.Remove(path); user.UpLoadImages.Add(path, url); } else { } } } } break; case MsgType.MT_SNS_TIMELINE_USER_MSG://获取指定用户的朋友圈 { #region 数据样式 /* {"data":{"baseResponse":{"ret":207},"continueId":0,"firstPageMd5":"b7e1f61580104448","limitedId":0,"newRequestTime":1627613128,"objectCount":1,"objectCountForSameMd5":1,"objectList":[{"blackListCount":0,"commentCount":0,"commentUserListCount":0,"createTime":1627612789,"deleteFlag":0,"extFlag":1,"groupCount":0,"groupUserCount":0,"id":13653405663930290388,"isNotRichText":1,"likeCount":0,"likeFlag":0,"likeUserListCount":0,"nickname":"先森吳","noChange":0,"objectDesc":{"buffer":"PFRpbWVsaW5lT2JqZWN0PjxpZD48IVtDREFUQVsxMzY1MzQwNTY2MzkzMDI5MDM4OF1dPjwvaWQ+PHVzZXJuYW1lPjwhW0NEQVRBW3d1amlhaHVhMDg3Nl1dPjwvdXNlcm5hbWU+PGNyZWF0ZVRpbWU+PCFbQ0RBVEFbMTYyNzYxMjc4OV1dPjwvY3JlYXRlVGltZT48Y29udGVudERlc2NTaG93VHlwZT4wPC9jb250ZW50RGVzY1Nob3dUeXBlPjxjb250ZW50RGVzY1NjZW5lPjA8L2NvbnRlbnREZXNjU2NlbmU+PHByaXZhdGU+PCFbQ0RBVEFbMF1dPjwvcHJpdmF0ZT48Y29udGVudERlc2M+PCFbQ0RBVEFb5L2g6IKv5a6a5LiN55+l6YGT5oiR546w5Zyo5oOz6KGo6L6+5LuA5LmIXV0+PC9jb250ZW50RGVzYz48Y29udGVudGF0dHI+PCFbQ0RBVEFbMF1dPjwvY29udGVudGF0dHI+PHNvdXJjZVVzZXJOYW1lPjwvc291cmNlVXNlck5hbWU+PHNvdXJjZU5pY2tOYW1lPjwvc291cmNlTmlja05hbWU+PHN0YXRpc3RpY3NEYXRhPjwvc3RhdGlzdGljc0RhdGE+PHdlYXBwSW5mbz48YXBwVXNlck5hbWU+PC9hcHBVc2VyTmFtZT48cGFnZVBhdGg+PC9wYWdlUGF0aD48dmVyc2lvbj48IVtDREFUQVswXV0+PC92ZXJzaW9uPjxkZWJ1Z01vZGU+PCFbQ0RBVEFbMF1dPjwvZGVidWdNb2RlPjxzaGFyZUFjdGlvbklkPjwvc2hhcmVBY3Rpb25JZD48aXNHYW1lPjwhW0NEQVRBWzBdXT48L2lzR2FtZT48bWVzc2FnZUV4dHJhRGF0YT48L21lc3NhZ2VFeHRyYURhdGE+PHN1YlR5cGU+PCFbQ0RBVEFbMF1dPjwvc3ViVHlwZT48cHJlbG9hZFJlc291cmNlcz48L3ByZWxvYWRSZXNvdXJjZXM+PC93ZWFwcEluZm8+PGNhbnZhc0luZm9YbWw+PC9jYW52YXNJbmZvWG1sPjxDb250ZW50T2JqZWN0Pjxjb250ZW50U3R5bGU+PCFbQ0RBVEFbMV1dPjwvY29udGVudFN0eWxlPjxjb250ZW50U3ViU3R5bGU+PCFbQ0RBVEFbMF1dPjwvY29udGVudFN1YlN0eWxlPjx0aXRsZT48L3RpdGxlPjxkZXNjcmlwdGlvbj48L2Rlc2NyaXB0aW9uPjxjb250ZW50VXJsPjwvY29udGVudFVybD48bWVkaWFMaXN0PjxtZWRpYT48aWQ+PCFbQ0RBVEFbMTM2NTM0MDU2NjQ1NTkyMzkzODZdXT48L2lkPjx0eXBlPjwhW0NEQVRBWzJdXT48L3R5cGU+PHRpdGxlPjwvdGl0bGU+PGRlc2NyaXB0aW9uPjwvZGVzY3JpcHRpb24+PHByaXZhdGU+PCFbQ0RBVEFbMF1dPjwvcHJpdmF0ZT48dXJsIHR5cGU9IjEiIG1kNT0iNDI1YTRiODEyNjQ2NzQwY2Y3MzlmYWI4Y2E2ZGIyNWUiPjwhW0NEQVRBW2h0dHA6Ly9zaG1tc25zLnFwaWMuY24vbW1zbnMvaWNySERtdkRpYjB4bUhUbkFPODJKSVVjaDFUVmUySWFtbDdYWHdaSlVuUWpZU3dsSjVNa09iQXlYRkpUbVNTbk5DZmNITFgyNE9RUncvMF1dPjwvdXJsPjx0aHVtYiB0eXBlPSIxIj48IVtDREFUQVtodHRwOi8vc2htbXNucy5xcGljLmNuL21tc25zL2ljckhEbXZEaWIweG1IVG5BTzgySklVY2gxVFZlMklhbWw3WFh3WkpVblFqWVN3bEo1TWtPYkF5WEZKVG1TU25OQ2ZjSExYMjRPUVJ3LzE1MF1dPjwvdGh1bWI+PHZpZGVvRHVyYXRpb24+PCFbQ0RBVEFbMC4wXV0+PC92aWRlb0R1cmF0aW9uPjxzaXplIHRvdGFsU2l6ZT0iMTAxOTIuMCIgd2lkdGg9IjEwODAuMCIgaGVpZ2h0PSIyMzQwLjAiPjwvc2l6ZT48L21lZGlhPjwvbWVkaWFMaXN0PjwvQ29udGVudE9iamVjdD48YWN0aW9uSW5mbz48YXBwTXNnPjxtZWRpYVRhZ05hbWU+PC9tZWRpYVRhZ05hbWU+PG1lc3NhZ2VFeHQ+PC9tZXNzYWdlRXh0PjxtZXNzYWdlQWN0aW9uPjwvbWVzc2FnZUFjdGlvbj48L2FwcE1zZz48L2FjdGlvbkluZm8+PGFwcEluZm8+PGlkPjwvaWQ+PC9hcHBJbmZvPjxsb2NhdGlvbiBwb2lDbGFzc2lmeUlkPSIiIHBvaU5hbWU9IiIgcG9pQWRkcmVzcz0iIiBwb2lDbGFzc2lmeVR5cGU9IjAiIGNpdHk9IiI+PC9sb2NhdGlvbj48cHVibGljVXNlck5hbWU+PC9wdWJsaWNVc2VyTmFtZT48c3RyZWFtdmlkZW8+PHN0cmVhbXZpZGVvdXJsPjwvc3RyZWFtdmlkZW91cmw+PHN0cmVhbXZpZGVvdGh1bWJ1cmw+PC9zdHJlYW12aWRlb3RodW1idXJsPjxzdHJlYW12aWRlb3dlYnVybD48L3N0cmVhbXZpZGVvd2VidXJsPjwvc3RyZWFtdmlkZW8+PC9UaW1lbGluZU9iamVjdD4=","iLen":2060},"objectOperations":{"buffer":"CAA=","iLen":2},"preDownloadInfo":{"noPreDownloadRange":"","preDownloadNetType":0,"preDownloadPercent":0},"referId":0,"referUsername":"","snsRedEnvelops":{"reportId":0,"reportKey":0,"resourceId":0,"rewardCount":0},"username":"wujiahua0876","weAppInfo":{"appId":0,"mapPoiId":"","redirectUrl":"","score":0,"showType":0,"userName":""},"withUserCount":0,"withUserListCount":0}],"objectTotalCount":5,"retTips":"朋友仅展示最近一个月的朋友圈","serverConfig":{"copyAndPasteWordLimit":100,"postMentionLimit":10},"snsUserInfo":{"snsBgImgId":"http://szmmsns.qpic.cn/mmsns/icrHDmvDib0xnEAtnSHHGziac6GNMlhWZK61YORztv9pl7x3AeNWibkAcdJstckibqwBFVFcFO9ovscc/0","snsBgObjectId":13404086805597261983,"snsFlag":1,"snsFlagEx":6273}},"type":11150} */ #endregion var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie); if (user == null) return; if (data.ContainsKey("objectList")) { var objectList = data["objectList"] as ArrayList; if (objectList != null && objectList.Count != 0) { var result = objectList[0] as Dictionary; if (result != null) { if (result.ContainsKey("username")) { var uname = result["username"].ToString(); if (user.GetUserCircles.ContainsKey(uname)) user.GetUserCircles.Remove(uname); user.GetUserCircles.Add(uname, recvData); } } } } } break; default: break; } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } }); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 本地解密dat图片 /// /// /// /// public static string DecodeImage(string FileName, byte XorKey, string DecodeImagePath) { var data = File.ReadAllBytes(FileName); for (int i = 0; i < data.Length; i++) data[i] = Convert.ToByte(data[i] ^ XorKey); //var path = FileName.Replace(Path.GetFileName(FileName), Path.GetFileNameWithoutExtension(FileName) + ".jpg"); File.WriteAllBytes(DecodeImagePath, data); return DecodeImagePath; } /// /// 获取微信的uin的值 /// /// /// public static string GetUin(int pid) { try { Process[] processes = Process.GetProcesses(); foreach (Process process in processes) { if (process.Id == pid) { foreach (ProcessModule processModule in process.Modules) { if (processModule.ModuleName == "WeChatWin.dll") { //微信基址 var WeChatWinBaseAddress = processModule.BaseAddress; //Console.WriteLine("微信基址:\t" + "0x" + ((int)(processModule.BaseAddress)).ToString("X8") + Environment.NewLine); var WxNameAddress = WeChatWinBaseAddress + PcOffSet; var uinStr = Common.GetString(process.Handle, WxNameAddress, 4); Console.WriteLine($"uinStr = {uinStr}"); return uinStr; } } break; } } } catch (Exception) { } return string.Empty; } // 关闭回调 static void WxCloseCallback(uint dwClientId) { try { var v = WechatClient.Users.FirstOrDefault(f => f.Value.DwClientId == dwClientId && f.Value.Type == WechatType.Xiaoxie).Value; if (v != null) { LogHelper.GetSingleObj().Info("系统", $"WxCloseCallback关闭回调,Uin:{v.Uin},微信:{v.Nickname}({v.Wxid})"); WechatClient.RemoveUser(v); } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } #endregion public Wechat_Xiaoxie(WechatUser User) : base(User) { } public override void SendMessage(string wxid, string message) { try { var json = string.Empty; message = message.Replace("\r\n", "\n"); if (Common.isXML(message)) { //var msgs = Regex.Matches(message, "(<.*?>)(.*?)()"); //foreach (Match item in msgs) //{ // if (item.Success && !string.IsNullOrEmpty(item.Groups[2].Value) && !item.Groups[2].Value.StartsWith("" + item.Groups[3]; // message = message.Replace(item.Groups[1].Value,temp); // } //} //wxfedd75bfcbbcd58c //wx13e41a437b8a1d2e //pages/index/index.html?orderid=[领取地址] if (Regex.IsMatch(message, @"(?[^<]+)") || Regex.IsMatch(message, @"(.+?)")) json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_XMLMSG, data = new { to_wxid = wxid, xml = Common.XMLDispose(message.Replace("&", "&")) } }); else { message = message.Replace("&", "&"); var title = string.Empty; var desc = string.Empty; var url = string.Empty; var image_url = string.Empty; var reg = Regex.Match(message, @"(?<标题>[\w\W]+?)"); if (reg.Success) title = reg.Groups["标题"].Value; reg = Regex.Match(message, @"(?<介绍>[\w\W]+?)"); if (reg.Success) desc = reg.Groups["介绍"].Value; reg = Regex.Match(message, @"(?<链接>[\w\W]+?)"); if (reg.Success) url = reg.Groups["链接"].Value; reg = Regex.Match(message, @"(?<图片链接>[\w\W]+?)"); if (reg.Success) image_url = reg.Groups["图片链接"].Value; json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_LINKMSG, data = new { to_wxid = wxid, title = $"{title.XMLReplace()}", desc = $"{desc.XMLReplace()}", url = url.XMLReplace(), image_url = image_url.XMLReplace() } }); } } else { var atUsername = new List(); var regs = Regex.Matches(message, @"\[@([^\]]+?)\]"); var flag = true; if (wxid.Contains("@chatroom")) { //[@wujiahua0876]你懂得,我只是测试一下 foreach (Match item in regs) { atUsername.Add(item.Groups[1].Value.Trim()); } if (atUsername.Count != 0) { flag = false; message = Regex.Replace(message, @"(\[@[^\]]+?\])", "{$@}"); json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_CHATROOM_ATMSG, data = new { to_wxid = wxid, content = message, at_list = atUsername.ToArray() } }); } } if (flag) { message = Regex.Replace(message, @"(\[@[^\]]+?\])", ""); json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_TEXTMSG, data = new { to_wxid = wxid, content = message } }); } } SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 获取朋友圈 /// /// public override void FindCircles(string circleId, string username) { try { if (!string.IsNullOrWhiteSpace(username)) { #region 获取指定用户朋友圈数据 try { if (!User.GetUserCircles.ContainsKey(username)) { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SNS_TIMELINE_USER_MSG, data = new { username = username, first_page_md5 = "", max_id = circleId } }); SendWeChatData(User.DwClientId, json); } var result = Task.Factory.StartNew(delegate () { DateTime end_time = DateTime.Now.AddSeconds(30); do { if (User.GetUserCircles.ContainsKey(username)) { var res = User.GetUserCircles[username]; #region 修正数据格式 var jsonDic = HttpExtend.JsonToDictionary(res); var data = jsonDic["data"] as Dictionary; //var firstPageMd5 = data["firstPageMd5"].ToString(); //var data = new { FirFirstPageMd5 = firstPageMd5, SnsObjectsCount = long.Parse(HttpExtend.GetTimeStamp()), }; var cirCleInfoOriList = new List(); if (data.ContainsKey("objectList")) { var objectList = data["objectList"] as ArrayList; if (objectList != null && objectList.Count != 0) { for (int i = 0; i < objectList.Count; i++) { var obj = JsonConvert.SerializeObject(objectList[i]); if (obj != null) { var cInfo = JsonConvert.DeserializeObject(obj); if (cInfo != null) { cirCleInfoOriList.Add(cInfo); } } } cirCleInfoOriList = cirCleInfoOriList.OrderByDescending(f => f.createTime).ToList(); List> _objs = new List>(); for (int i = 0; i < cirCleInfoOriList.Count; i++) { var tmp = HttpHelper.ObjectToJson(cirCleInfoOriList[i]); var dic = HttpExtend.JsonToDictionary(tmp); _objs.Add(dic); } } } #endregion if (cirCleInfoOriList != null && cirCleInfoOriList.Count != 0) return HttpHelper.ObjectToJson(new { data = new { objectList = new List() { cirCleInfoOriList[0] } } }); return string.Empty; } Thread.Sleep(400); } while (end_time > DateTime.Now); return null; }).Result; var socketClient = EasySoc.GetSocket(); var msg = new CommonResult(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvCircleData; msg.Data = result; socketClient.Send(msg); } catch (Exception ex) { throw ex; } finally { User.GetUserCircles.Remove(username); } #endregion } else { #region 朋友圈首页 if (!User.IsGetCircle) { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SNS_TIMELINE_MSG, data = new { max_id = circleId } }); SendWeChatData(User.DwClientId, json); User.IsGetCircle = true; } var result = Task.Factory.StartNew(delegate () { Thread.Sleep(1000); DateTime end_time = DateTime.Now.AddSeconds(30); do { if (!User.IsGetCircle) { return User.CircleData; } Thread.Sleep(200); } while (end_time > DateTime.Now); return null; }).Result; var socketClient = EasySoc.GetSocket(); var msg = new CommonResult(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvCircleData; msg.Data = result; socketClient.Send(msg); #endregion } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 自动授权登录小程序 /// /// public override void AutoAuthMiniAPPLogin(string appid) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SNS_AUTO_AUTH_MINIAPP_LOGIN, data = new { appid = appid } }); SendWeChatData(User.DwClientId, json); var result = Task.Factory.StartNew(delegate () { DateTime end_time = DateTime.Now.AddSeconds(20); do { if (User.AutoAuthLoginMiNiApps.ContainsKey(appid)) { return User.AutoAuthLoginMiNiApps[appid]; } Thread.Sleep(400); } while (end_time > DateTime.Now); return null; }).Result; var socketClient = EasySoc.GetSocket(); var msg = new CommonResult(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvMiniAppCode; msg.Data = result; socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 发送朋友圈 /// /// public override void SendCircle(string xmlmsg) { try { var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_SNS_POST_MSG, data = new { object_desc = xmlmsg } }); User.SendCircleId = string.Empty; SendWeChatData(User.DwClientId, json); var result = Task.Factory.StartNew(delegate () { DateTime end_time = DateTime.Now.AddSeconds(20); do { if (!string.IsNullOrWhiteSpace(User.SendCircleId)) { return User.SendCircleId; } Thread.Sleep(400); } while (end_time > DateTime.Now); return null; }).Result; var socketClient = EasySoc.GetSocket(); var msg = new CommonResult(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvCircleReturnId; msg.Data = result; socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } finally { User.SendCircleId = string.Empty; } } /// /// 发送朋友圈评论 /// /// /// public override void SendCircleComment(string circleId, string content) { try { var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_SNS_COMMENT_MSG, data = new { object_id = circleId, content = content } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 朋友圈点赞 /// /// 朋友圈的object_id public override void SendCirclePraise(string circleId) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SNS_LIKE_MSG, data = new { object_id = circleId } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 朋友圈上传本地图片,返回上传以后返回的地址 /// /// public override void CircleUpLoadImage(string data) { try { var path = string.Empty; Bitmap bitmap = null; if (data.StartsWith("http", StringComparison.CurrentCultureIgnoreCase)) { HttpHelper http = new HttpHelper(); var item = http.GetItem(data); item.ResultType = CsharpHttpHelper.Enum.ResultType.Byte; using (MemoryStream ms = new MemoryStream(http.GetHtml(item).ResultByte)) { using (Image mImage = Image.FromStream(ms, true)) { bitmap = new Bitmap(mImage); path = HttpExtend.MapFile($@"{DateTime.Now.ToString("MMddhhmmssfff")}.{Common.GetImageExt(bitmap)}", @"Cache\IMAGE"); bitmap.Save(path); bitmap.Dispose(); } } } else { bitmap = Common.ConvertBase64ToImage(data); using (MemoryStream stream = new MemoryStream()) { bitmap.Save(stream, ImageFormat.Jpeg); byte[] data1 = new byte[stream.Length]; stream.Seek(0, SeekOrigin.Begin); stream.Read(data1, 0, Convert.ToInt32(stream.Length)); bitmap = Common.CompressionImage(new MemoryStream(data1), 25); } path = HttpExtend.MapFile($@"{DateTime.Now.ToString("MMddhhmmssfff")}.{Common.GetImageExt(bitmap)}", @"Cache\IMAGE"); bitmap.Save(path); bitmap.Dispose(); } if (!string.IsNullOrWhiteSpace(path) && File.Exists(path)) { LogHelper.GetSingleObj().Info(new StackTrace().GetFrame(0).GetMethod().Name, $"开始上传朋友圈图片:" + path); var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SNS_UPLOAD_IMAGE_MSG, data = new { path = path } }); SendWeChatData(User.DwClientId, json); var result = Task.Factory.StartNew(delegate () { DateTime end_time = DateTime.Now.AddSeconds(60); do { if (User.UpLoadImages.ContainsKey(path)) { return User.UpLoadImages[path]; } Thread.Sleep(400); } while (end_time > DateTime.Now); return null; }).Result; var socketClient = EasySoc.GetSocket(); var msg = new CommonResult(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvCircleUploadImageUrl; msg.Data = result; socketClient.Send(msg); } else { } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, $"上传朋友圈图片异常:{ex.Message},{ex.StackTrace}"); } } public override void SendFile(string wxid, string file) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_FILEMSG, data = new { to_wxid = wxid, file = file } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void SendImage(string wxid, string file) { try { if (file.StartsWith("http", StringComparison.InvariantCultureIgnoreCase)) { byte[] ImangByte = null; string extension = Path.GetExtension(file); extension = string.IsNullOrWhiteSpace(extension) ? ".jpg" : extension; ImangByte = new System.Net.WebClient().DownloadData(file); byte[] imageHash = new MD5CryptoServiceProvider().ComputeHash(ImangByte); var path = Common.CacheFilePath(User.Wxid, wxid, "IMAGE", Guid.NewGuid().ToString("N"), extension); if (!File.Exists(path)) { File.WriteAllBytes(path, ImangByte); } if (File.Exists(path)) file = path; } else { if (!File.Exists(file)) { if (Common.IsBase64(file)) { var path = Common.CacheFilePath(User.Wxid, wxid, "IMAGE", Guid.NewGuid().ToString("N"), "jpg"); if (Common.Base64ToFileAndSave(file, path) && File.Exists(path)) { file = path; } } else { } } } var json = string.Empty; if (file.Trim().EndsWith(".gif", StringComparison.CurrentCultureIgnoreCase)) json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_GIFMSG, data = new { to_wxid = wxid, file = file } }); else json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_IMGMSG, data = new { to_wxid = wxid, file = file } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void SendVideo(string wxid, string file) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_VIDEOMSG, data = new { to_wxid = wxid, file = file } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void AgreeAddMe(string text) { try { var v1 = string.Empty; var v2 = string.Empty; var scene = 0; var reg = Regex.Match(text, @"encryptusername=\\?""([^""]+?)\\?"""); if (reg.Success) v1 = reg.Groups[1].Value; reg = Regex.Match(text, @"ticket=\\?""([^""]+?)\\?"""); if (reg.Success) v2 = reg.Groups[1].Value; reg = Regex.Match(text, @"scene=\\?""([^""]+?)\\?"""); if (reg.Success) scene = int.Parse(reg.Groups[1].Value); LogHelper.GetSingleObj().Info("------", $"v1 = {v1} v2 = {v1} scene = {scene}"); var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_ACCEPT_FRIEND_MSG, data = new { v1 = v1, v2 = v2, scene = scene } }); //var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_ACCEPT_FRIEND_MSG, data = new { v1 = v1, v2 = v2 } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void SendCard(string to_wxid, string card_wxid) { try { var json = string.Empty; if (card_wxid.Contains("@chatroom")) //json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_INVITE_TO_ROOM_REQ_MSG, data = new { room_wxid = card_wxid, member_list = new string[] { to_wxid } } }); { InviteMemberToRoom_40Up(card_wxid, to_wxid); return; } else json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_CARDMSG, data = new { to_wxid = to_wxid, card_wxid = card_wxid } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 创建群 /// /// public override void CreateRoom(string wxidData) { try { if (string.IsNullOrWhiteSpace(wxidData)) return; var wxids = wxidData.Trim().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (wxids == null || wxids.Length == 0) return; var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_CREATE_ROOM_MSG, data = wxids }); SendWeChatData(User.DwClientId, json); var wxidstmp = wxids.ToList(); wxidstmp.Add(User.Wxid); wxidstmp.Sort(StringComparer.CurrentCulture); var md5Text = Common.GetMD5(string.Join(",", wxidstmp)); var result = Task.Factory.StartNew(delegate () { var awaitTime = DateTime.Now.AddSeconds(15); do { Thread.Sleep(200); Cache cache = HttpRuntime.Cache; object item = cache[md5Text]; if (item != null) { try { cache.Remove(md5Text); } catch (Exception ex) { } return item.ToString(); } } while (awaitTime >= DateTime.Now); return string.Empty; }).Result; var socketClient = EasySoc.GetSocket(); var msg = new CreateRoom(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvCreateRoom; msg.GroupId = result; msg.MemberTotal = wxidstmp.Count - 1; socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void InviteMemberToRoom_40Up(string groupid, string wxidData) { try { if (string.IsNullOrWhiteSpace(wxidData)) return; var wxids = wxidData.Trim().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (wxids != null && wxids.Length != 0) { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_INVITE_TO_ROOM_REQ_MSG, data = new { room_wxid = groupid, member_list = wxids } }); SendWeChatData(User.DwClientId, json); } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void InviteMemberToRoom_40Down(string groupid, string wxidData) { try { if (string.IsNullOrWhiteSpace(wxidData)) return; var wxids = wxidData.Trim().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (wxids != null && wxids.Length != 0) { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_INVITE_TO_ROOM_MSG, data = new { room_wxid = groupid, member_list = wxids } }); SendWeChatData(User.DwClientId, json); } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message + ".._."); } } public override void DeleteRoomMember(string wxid, string room) { try { if (room.Contains("@chatroom") || room.Contains("@im.chatroom")) { var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_DEL_ROOM_MEMBER_MSG, data = new { room_wxid = room, member_list = new string[] { wxid } } }); SendWeChatData(User.DwClientId, json); } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void DecryptImage(string src_file, string dest_file) { try { var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_DECRYPT_IMG_MSG, data = new { src_file = src_file, dest_file = dest_file } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void PayTransferConfirm(string data) { try { var transferid = string.Empty; var dic = HttpExtend.JsonToDictionary(data); if (dic.ContainsKey("Transferid")) transferid = dic["Transferid"].ToString(); var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_ACCEPT_WCPAY_MSG, data = new { transferid = transferid } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void DeleteFriend(string wxid) { try { var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_DEL_FRIEND_MSG, data = new { wxid = wxid } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void EditCotacts(string wxid, string remark) { try { var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_MOD_FRIEND_REMARK_MSG, data = new { wxid = wxid, remark = remark } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void StateOpt(string wxid, bool status) { try { var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_MOD_CHAT_SESSION_TOP_MSG, data = new { wxid = wxid, status = status ? 1 : 0 } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } private static bool IsZombizRun = false; internal void GetZombiz()//这个方法临时用,以后修改 (不应该用休眠的) { if (IsZombizRun) return; try { IsZombizRun = true; GetContact(); var flag = Task.Factory.StartNew(delegate () { DateTime end_time = DateTime.Now.AddSeconds(15); do { if (!User.IsGetFriend) return true; Thread.Sleep(200); } while (end_time > DateTime.Now); return false; }).Result; var friends = User.Friends.Where(f => !f.wxid.Contains("@chatroom") && f.is_zombie == -1).ToList(); foreach (var item in friends) { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_CARD_XMLMSG, data = new { to_wxid = item.wxid, xml = @" ".Replace("[wxid]", item.wxid).Replace("[name]", ".") } }); var u = User.Friends.FirstOrDefault(f => f.wxid == item.wxid); if (u != null && u.is_zombie == -1) { SendWeChatData(User.DwClientId, json); Thread.Sleep(800 + new Random().Next(100, 200)); } } //#region 发送xx //var nmss = new List>(); //var mis = new List(); //var count = 30; //var rem = friends.Count % count; //var num = friends.Count / count; //for (int i = 0; i < friends.Count; i++) //{ // mis.Add(friends[i]); // if (mis.Count >= count) // { // nmss.Add(mis); // mis = new List(); // } // else if (nmss.Count == num && mis.Count == rem) // { // nmss.Add(mis); // } //} //var user = WechatClient.GetUser(User.DwClientId, WechatType.Xiaoxie); //if (user == null) return; //var socketClient = EasySoc.GetSocket(); //foreach (var item in nmss) //{ // var msg = new WechatContact(); // msg.RobotUsername = user.Wxid; // msg.RobotUsernick = user.Nickname; // msg.RobotType = RobotType.客户端微信; // msg.Cmd = PCRobotCMD.rcvContactList; // msg.Message = HttpHelper.ObjectToJson(new Dictionary>() { { "data", item } }); // socketClient.Send(msg); // Thread.Sleep(5); //} //#endregion } catch (Exception) { } finally { IsZombizRun = false; } } public override void GetContact() { try { //获取好友列表(数据库读取) //var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_FRIENDS_MSG, data = new { } }); //SendWeChatData(User.DwClientId, json); Task.Run(() => { GetFriendInfos(); }); Thread.Sleep(1000); //获取群列表(数据库读取) var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_CHATROOMS_MSG, data = new { } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void GetContact(bool isUpdate) { try { var result = GetFriendInfos(true); var socketClient = EasySoc.GetSocket(); CommonResult msg = new CommonResult(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvFriendList; msg.Data = result == null ? string.Empty : HttpHelper.ObjectToJson(result); socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 获取好友列表 /// /// 刷新缓存数据 /// //public override List GetFriendInfos(bool flushGroupsCache = false) public override string GetFriendInfos(bool flushGroupsCache = false) { List friends = null; try { #region 获取缓存数据 friends = User.Friends.Where(f => !f.wxid.Contains("@chatroom")).ToList(); if (!flushGroupsCache && friends.Count != 0) return JsonConvert.SerializeObject(friends); #endregion if (!User.IsGetFriend) { //获取好友列表(数据库读取) var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_FRIENDS_MSG, data = new { } }); SendWeChatData(User.DwClientId, json); User.IsGetFriend = true; } var result_ = Task.Factory.StartNew>(delegate () { DateTime end_time = DateTime.Now.AddSeconds(20); do { if (!User.IsGetFriend) { friends = User.Friends.Where(f => !f.wxid.Contains("@chatroom")).ToList(); return friends; } Thread.Sleep(200); } while (end_time > DateTime.Now); return null; }).Result; return JsonConvert.SerializeObject(friends); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message + "#__#"); } return string.Empty; } /// /// 获取群列表 /// public override void GetGroupsNotInMember() { try { //获取群列表(数据库读取) var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_CHATROOMS_MSG, data = new { } }); SendWeChatData(User.DwClientId, json); var result = Task.Factory.StartNew(delegate () { Thread.Sleep(4000); var groups = User.Friends.Where(f => f.wxid.Contains("@chatroom")).ToList(); return groups == null ? string.Empty : HttpHelper.ObjectToJson(new Dictionary>() { { "data", groups } }); }).Result; if (result == null) result = HttpHelper.ObjectToJson(new Dictionary>() { { "data", User.Friends.Where(f => f.wxid.Contains("@chatroom")).ToList() } }); var socketClient = EasySoc.GetSocket(); var msg = new WechatContact(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvContactList; msg.Message = result; socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 通过用户id查询用户 /// /// public override void GetWxidInfo(string wxid) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_WXID_MSG, data = new { wxid = wxid } }); var u = User.Friends.FirstOrDefault(f => f.wxid == wxid); if (u == null) { SendWeChatData(User.DwClientId, json); var friend = Task.Factory.StartNew(delegate () { DateTime end_time = DateTime.Now.AddSeconds(15); do { u = User.Friends.FirstOrDefault(f => f.wxid == wxid); if (u != null) return u; Thread.Sleep(200); } while (end_time > DateTime.Now); return null; }).Result; } var socketClient = EasySoc.GetSocket(); WechatContact msg = new WechatContact(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvContact; msg.Message = u == null ? string.Empty : HttpHelper.ObjectToJson(u); socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 通过群号查询指定的用户 /// /// 要查询群号 /// 要查询的用户 public override void GetGroupAndFriendInfo(string groupId, string wxid) { try { GroupInfo group = null; FriendInfo u = null; if (groupId.Contains("@chatroom") || groupId.Contains("@im.chatroom")) { var g = User.Groups.FirstOrDefault(f => f.wxid == groupId); if (g != null) { u = g.friends.FirstOrDefault(f => f.wxid == wxid); if (u != null) group = new GroupInfo() { wxid = groupId, friends = new List() { u }, total_member = g.total_member }; } if (group == null) { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_CHATROOM_MEMBERS_MSG, data = new { room_wxid = groupId } }); SendWeChatData(User.DwClientId, json); var _group = Task.Factory.StartNew(delegate () { DateTime end_time = DateTime.Now.AddSeconds(15); do { g = User.Groups.FirstOrDefault(f => f.wxid == groupId); if (g != null) { u = g.friends.FirstOrDefault(f => f.wxid == wxid); if (u != null) { group = new GroupInfo() { wxid = groupId, friends = new List() { u }, total_member = g.total_member }; return group; } } Thread.Sleep(200); } while (end_time > DateTime.Now); return null; }).Result; } if (group == null) group = new GroupInfo() { wxid = groupId, friends = new List() { new FriendInfo() { wxid = wxid } }, total_member = 1 }; } var socketClient = EasySoc.GetSocket(); var msg = new WechatContact(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvContact; msg.Message = group == null ? string.Empty : HttpHelper.ObjectToJson(group); socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 通过群号查询指定的用户 /// /// 要查询群号 /// 要查询的用户 public override void GetGroupAndFriendInfo(string groupId, string wxid, bool flush = false) { try { GroupInfo group = null; FriendInfo u = null; if (groupId.Contains("@chatroom") || groupId.Contains("@im.chatroom")) { var g = User.Groups.FirstOrDefault(f => f.wxid == groupId); if (g != null) { if (flush) { g.friends.Clear(); UpdateGroupInfo(groupId); Thread.Sleep(100); } else { u = g.friends.FirstOrDefault(f => f.wxid == wxid); if (u != null) group = new GroupInfo() { wxid = groupId, friends = new List() { u }, total_member = g.total_member }; } } if (group == null) { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_CHATROOM_MEMBERS_MSG, data = new { room_wxid = groupId } }); SendWeChatData(User.DwClientId, json); var _group = Task.Factory.StartNew(delegate () { DateTime end_time = DateTime.Now.AddSeconds(15); do { g = User.Groups.FirstOrDefault(f => f.wxid == groupId); if (g != null) { u = g.friends.FirstOrDefault(f => f.wxid == wxid); if (u != null) { group = new GroupInfo() { wxid = groupId, friends = new List() { u }, total_member = g.total_member }; return group; } } Thread.Sleep(200); } while (end_time > DateTime.Now); return null; }).Result; } if (group == null) group = new GroupInfo() { wxid = groupId, friends = new List() { new FriendInfo() { wxid = wxid } }, total_member = 1 }; } var socketClient = EasySoc.GetSocket(); var msg = new WechatContact(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvContact; msg.Message = group == null ? string.Empty : HttpHelper.ObjectToJson(group); socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void UpdateWxidInfo(string wxid) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_UPDATE_WXID_MSG, data = new { wxid = wxid } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void UpdateGroupInfo(string groupId) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_UPDATE_ROOM_MEMBER_MSG, data = new { wxid = groupId } }); SendWeChatData(User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void GetFriend(string wxid) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DATA_WXID_MSG, data = new { wxid = wxid } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 浏览器 /// //public void MtOpenBrowserMsg(string url) //{ // try // { // var json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_OPEN_BROWSER_MSG, data = new { url = url } }); // SendWeChatData(this.User.DwClientId, json); // } // catch (Exception ex) // { // LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message); // } //} public override void CloseWechat(string message) { try { var v = WechatClient.Users.FirstOrDefault(f => f.Value.DwClientId == User.DwClientId && f.Value.Type == WechatType.Xiaoxie).Value; if (v != null) { LogHelper.GetSingleObj().Info("系统", $"CloseWechat事件退出,Uin:{v.Uin},微信:{v.Nickname}({v.Wxid})"); WechatClient.RemoveUser(v, true); if (!string.IsNullOrWhiteSpace(message)) PCRobotForm.ErrorMessAction?.Invoke(message); } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 检测URL在微信中是否有效 /// /// 要检测的网址 public override void CheckUrl(string url) { try { url = url.Trim(); if (!string.IsNullOrWhiteSpace(url)) { //var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_CHECK_URL_STATUS_MSG, data = new { url = url } }); var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_CHECK_URL_STATUS2_MSG, data = new { url = url } }); SendWeChatData(this.User.DwClientId, json); } var result = Task.Factory.StartNew(delegate () { var awaitTime = DateTime.Now.AddSeconds(10); do { Thread.Sleep(200); //if (CheckUrlCache.ContainsKey(url)) return CheckUrlCache[url]; Cache cache = HttpRuntime.Cache; object item = cache[url]; if (item != null) return int.Parse(item.ToString()); } while (awaitTime >= DateTime.Now); return -1; }).Result; var socketClient = EasySoc.GetSocket(); var msg = new CheckUrl(); msg.RobotUsername = User.Wxid; msg.RobotUsernick = User.Nickname; msg.RobotType = RobotType.客户端微信; msg.MsgId = ServerMsgID; msg.Cmd = PCRobotCMD.rcvCheckUrl; msg.Status = result; socketClient.Send(msg); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } public override void OpenUrl(string url) { try { url = url.Trim(); if (!string.IsNullOrWhiteSpace(url)) { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_OPEN_BROWSER_MSG, data = new { url = url } }); SendWeChatData(this.User.DwClientId, json); } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 清理历史聊天记录 /// /// public override void ClearChatHistoryMsg() { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_CLEAR_CHAT_HISTORY_MSG, data = new { } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 设置会话已读 /// /// public override void SetSessionReadedMsg(string wxid) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SET_SESSION_READED_MSG, data = new { wxid = wxid } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 修改群聊名称 /// /// 新的群名 /// 群id public override void SetRoomName(string new_name, string groupId) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_MOD_ROOM_NAME_MSG, data = new { room_wxid = groupId, name = new_name } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 修改群公告(可用于@全体) /// /// 新公告 /// 群聊wxid public override void SetRoomNotice(string notice, string groupId) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_MOD_ROOM_NOTICE_MSG, data = new { room_wxid = groupId, notice = notice } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 设置自己在群中昵称 /// /// 要设置的昵称 /// 需要设置的群id public override void ModRoomMyName(string nickname, string groupId) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_MOD_ROOM_MEMBER_NAME_MSG, data = new { room_wxid = groupId, nickname = nickname } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 设置是否显示群成员昵称 /// /// true为开启 /// 要显示得到群 public override void SetRoomShowMemeberName(bool status, string groupId) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_MOD_ROOM_SHOW_NAME_MSG, data = new { room_wxid = groupId, status = status ? 1 : 0 } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 修改群聊名称 /// /// 新名称 /// 群号 public override void ModRoomName(string newnick, string groupId) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_MOD_ROOM_NAME_MSG, data = new { room_wxid = groupId, name = newnick } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 是否消息免打扰 /// /// true为开启 /// wxid public override void SetRecvNotify(bool status, string wxid) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_MOD_RECV_NOTIFY_MSG, data = new { wxid = wxid, status = status ? 1 : 0 } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 关注公众号 /// /// 公众号wxid public override void AddPublicUser(string wxid) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_ADD_PUBLIC_USER_MSG, data = new { wxid = wxid } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } /// /// 开启/关闭防撤回功能 /// /// 1是开启防撤回,0是关闭 public override void SetDisableRevoke(bool status) { try { var json = HttpHelper.ObjectToJson(new { type = MsgType.MT_DISABLE_REVOKE_MSG, data = new { status = status ? 1 : 0 } }); SendWeChatData(this.User.DwClientId, json); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message); } } #region 内部类 public enum MsgType : ushort { /// /// DEBUG消息 /// MT_DEBUG_LOG = 11024, /// /// 登录消息 /// MT_USER_LOGIN = 11025, /// /// 注销消息 /// MT_USER_LOGOUT = 11026, /// /// 数据库查询消息 /// MT_SQL_QUERY = 11027, /// /// 获取我的信息消息 /// MT_DATA_OWNER_MSG = 11028, /// /// 获取单个好友消息 /// MT_DATA_WXID_MSG = 11029, /// /// 获取好友列表消息 /// MT_DATA_FRIENDS_MSG = 11030, /// /// 获取群聊列表消息 /// MT_DATA_CHATROOMS_MSG = 11031, /// /// 获取群成员消息 /// MT_DATA_CHATROOM_MEMBERS_MSG = 11032, /// /// 获取公众号消息 /// MT_DATA_PUBLICS_MSG = 11033, /// /// 从网络更新单个好友信息消息 /// MT_UPDATE_WXID_MSG = 11034, /// /// 从网络更新群成员信息消息 /// MT_UPDATE_ROOM_MEMBER_MSG = 11035, /// /// 发送文本消息 /// MT_SEND_TEXTMSG = 11036, /// /// 发送群@消息 /// MT_SEND_CHATROOM_ATMSG = 11037, /// /// 发送名片消息 /// MT_SEND_CARDMSG = 11038, /// /// 发送链接消息 /// MT_SEND_LINKMSG = 11039, /// /// 发送图片消息 /// MT_SEND_IMGMSG = 11040, /// /// 发送文件消息 /// MT_SEND_FILEMSG = 11041, /// /// 发送视频消息 /// MT_SEND_VIDEOMSG = 11042, /// /// 发送GIF消息 /// MT_SEND_GIFMSG = 11043, /// /// 接收文本消息 /// MT_RECV_TEXT_MSG = 11046, /// /// 接收图片消息 /// MT_RECV_PICTURE_MSG = 11047, /// /// 接收语音消息 /// MT_RECV_VOICE_MSG = 11048, /// /// 接收申请好友消息 /// MT_RECV_FRIEND_MSG = 11049, /// /// 接收名片消息 /// MT_RECV_CARD_MSG = 11050, /// /// 接收视频消息 /// MT_RECV_VIDEO_MSG = 11051, /// /// 接收表情消息 /// MT_RECV_EMOJI_MSG = 11052, /// /// 接收位置消息 /// MT_RECV_LOCATION_MSG = 11053, /// /// 接收链接消息 /// MT_RECV_LINK_MSG = 11054, /// /// 接收文件消息 /// MT_RECV_FILE_MSG = 11055, /// /// 接收小程序消息 /// MT_RECV_MINIAPP_MSG = 11056, /// /// 接收好友转账消息 /// MT_RECV_WCPAY_MSG = 11057, /// /// 接收系统消息 /// MT_RECV_SYSTEM_MSG = 11058, /// /// 接收撤回消息 /// MT_RECV_REVOKE_MSG = 11059, /// /// 接收其他未知消息 /// MT_RECV_OTHER_MSG = 11060, /// /// 接收应用类型未知消息 /// MT_RECV_OTHER_APP_MSG = 11061, /// /// 发送加好友消息 /// MT_ADD_FRIEND_MSG = 11062, /// /// 发送修改好友备注消息 /// MT_MOD_FRIEND_REMARK_MSG = 11063, /// /// 发送删除好友消息 /// MT_DEL_FRIEND_MSG = 11064, /// /// 发送同意加好友申请消息 /// MT_ACCEPT_FRIEND_MSG = 11065, /// /// 发送接收好友转帐消息 /// MT_ACCEPT_WCPAY_MSG = 11066, /// /// 发送同意进群邀请消息 /// MT_ACCEPT_ROOM_MSG = 11067, /// /// 发送创建群聊消息 /// MT_CREATE_ROOM_MSG = 11068, /// /// 发送邀请好友进群消息,40人以下 /// MT_INVITE_TO_ROOM_MSG = 11069, /// /// 发送邀请好友进群消息,40人以上 /// MT_INVITE_TO_ROOM_REQ_MSG = 11070, /// /// 发送删除群成员消息 /// MT_DEL_ROOM_MEMBER_MSG = 11071, /// /// 发送修改群名称消息 /// MT_MOD_ROOM_NAME_MSG = 11072, /// /// 发送修改群通知消息 /// MT_MOD_ROOM_NOTICE_MSG = 11073, /// /// 发送修改我在本群的昵称消息 /// MT_MOD_ROOM_MEMBER_NAME_MSG = 11074, /// /// 发送修改显示群昵称消息 /// MT_MOD_ROOM_SHOW_NAME_MSG = 11075, /// /// 发送保存到联系人消息 /// MT_SAVE_ROOM_TO_CONTACT_MSG = 11076, /// /// 发送退出并删除群消息 /// MT_QUIT_DEL_ROOM_MSG = 11077, /// /// 发送消息免打扰消息 /// MT_MOD_RECV_NOTIFY_MSG = 11078, /// /// 发送置顶消息 /// MT_MOD_CHAT_SESSION_TOP_MSG = 11079, /// /// 发送无痕清粉消息 /// MT_ZOMBIE_CHECK_MSG = 11080, /// /// 发送自动同意好友申请消息 /// MT_AUTO_ACCEPT_FRIEND_MSG = 11081, /// /// 发送自动同意好友转帐消息 /// MT_AUTO_ACCEPT_WCPAY_MSG = 11082, /// /// 发送自动进群邀请消息 /// MT_AUTO_ACCEPT_ROOM_MSG = 11083, /// /// 发送自动加名片消息 /// MT_AUTO_ACCPET_CARD_MSG = 11084, /// /// 发送解密图片消息 /// MT_DECRYPT_IMG_MSG = 11085, /// /// 发送打开浏览器消息 /// MT_OPEN_BROWSER_MSG = 11086, /// /// 获取用户登录二维码,于2019年5月28日新增 /// MT_RECV_QRCODE_MSG = 11087, /// /// 窗口变化通知消息 /// MT_WX_WND_CHANGE_MSG = 11088, /// /// 发送和获取未读数量变动消息 /// MT_UNREAD_MSG_COUNT_CHANGE_MSG = 11089, /// /// 与指定人聊天 /// MT_TO_CHAT_MSG = 11090, /// /// 当前聊天对象改变 /// MT_TALKER_CHANGE_MSG = 11091, /// /// 通过二维码进群 /// MT_ACCEPT_QRCODE_ROOM_MSG = 11092, /// /// 单向加好友 /// MT_ACCEPT_ONEWAY_FRIEND_MSG = 11093, /// /// 设置微信版本号 /// MT_CUSTOM_WX_VERSION_MSG = 11094, /// /// 接收到二微码付款消息 /// MT_RECV_QRCODE_WCPAY_MSG = 11095, /// /// 通过手机号/微信号/QQ号查询联系人 /// MT_SEARCH_CONTACT_MSG = 11096, /// /// 添加通过手机号/微信号/QQ号查询的联系人 /// MT_ADD_SEARCH_CONTACT_MSG = 11097, /// /// 群成员新增通知 /// MT_ROOM_ADD_MEMBER_NOTIFY_MSG = 11098, /// /// 群成员删除通知 /// MT_ROOM_DEL_MEMBER_NOTIFY_MSG = 11099, /// /// 通过接口创建群聊的通知 /// MT_ROOM_CREATE_NOTIFY_MSG = 11100, /// /// 退群或被踢通知 /// MT_ROOM_DEL_NOTIFY_MSG = 11101, /// /// 联系人新增通知 /// MT_CONTACT_ADD_NOITFY_MSG = 11102, /// /// 联系人删除通知 /// MT_CONTACT_DEL_NOTIFY_MSG = 11103, /// /// 注销登录 /// MT_QUIT_LOGIN_MSG = 11104, /// /// 无需确认退出 /// MT_QUIT_WECHAT_MSG = 11105, /// /// 当点击微信托盘图标和未读消息时消息 /// MT_TRAYICON_SHOW_WINDOW_MSG = 11106, /// /// 退还朋友的转账 /// MT_REFUSE_FRIEND_WCPAY_MSG = 11107, /// /// 清除聊天记录 /// MT_CLEAR_CHAT_HISTORY_MSG = 11108, /// /// 获取收藏列表 /// MT_DATA_FAVITEMS_MSG = 11109, /// /// 发送收藏 /// MT_SEND_FAVITEM_MSG = 11110, /// /// 收藏指定消息 /// MT_ADD_FAVITEM_FROM_MSG = 11111, /// /// 语音翻译 /// MT_TRANS_VOICE_MSG = 11112, /// /// 发送XML消息 /// MT_SEND_XMLMSG = 11113, /// /// 发送名版XML消息 /// MT_SEND_CARD_XMLMSG = 11114, /// /// 关注公众号 /// MT_ADD_PUBLIC_USER_MSG = 11115, /// /// 转发小程序 /// MT_FORWARD_APP_MSG = 11118, /// /// 开启/关闭防撤回消息 /// MT_DISABLE_REVOKE_MSG = 11121, /// /// 设置会话为已读 /// MT_SET_SESSION_READED_MSG = 11122, /// /// 检测URL在微信中是否有效 /// MT_CHECK_URL_STATUS_MSG = 11123, /// /// 检测URL在微信中是否有效2 /// MT_CHECK_URL_STATUS2_MSG = 11135, /// /// 微信二维码识别 /// //MT_SCAN_QRCODE_IMG_MSG = 11127, /// /// 自动授权登录小程序 /// MT_SNS_AUTO_AUTH_MINIAPP_LOGIN = 11136, /// /// 获取朋友圈首页 /// MT_SNS_TIMELINE_MSG = 11145, /// /// 评论 /// MT_SNS_COMMENT_MSG = 11146, /// /// 点赞 /// MT_SNS_LIKE_MSG = 11147, /// /// 发朋友圈 /// MT_SNS_POST_MSG = 11148, /// /// 朋友圈上传图片 /// MT_SNS_UPLOAD_IMAGE_MSG = 11149, /// /// 获取指定用户的朋友圈 /// MT_SNS_TIMELINE_USER_MSG = 11150, } enum _EnRawMsgType { /// /// 0x1 文本 /// WX_MSG_TEXT = 1, /// /// 0x3 图片 /// WX_MSG_PICTURE = 3, /// /// 0x22 语音 /// WX_MSG_VOICE = 34, /// /// 0x25 加好友请求 "from_wxid" : "fmessage" /// WX_MSG_FRIEND = 37, /// /// 0x2A 名片 /// WX_MSG_CARD = 42, /// /// 0x2B 视频 /// WX_MSG_VIDEO = 43, /// /// 0x2F 表情 /// WX_MSG_EMOJI = 47, /// /// 0x30 位置 /// WX_MSG_LOCATION = 48, /// /// 0x31 应用类型,子类型参考EnRawAppMsgType /// WX_MSG_APP = 49, /// /// 0x2710 系统消息 /// WX_MSG_SYSTEM = 10000, /// /// 0x2712 撤回消息 /// WX_MSG_REVOKE = 10002, } //EnRawMsgType; // XML XPATH路径 /msg/appmsg/type/text() enum _EnRawAppMsgType { /// /// 链接(包含群邀请) /// WX_APPMSG_LINK = 5, /// /// 文件 /// WX_APPMSG_FILE = 6, /// /// 合并消息 /// WX_APPMSG_MUTIL = 19, /// /// 小程序 /// WX_APPMSG_MINIAPP = 33, /// /// 转帐 /// WX_APPMSG_WCPAY = 2000, } //EnRawAppMsgType; #endregion } }