public override SendMsg MakeLogic() { var m = new SendMsg() { type = 1, context = string.Empty }; //获取系统机器人设置 var robot = WeChatRobotDal.GetWxRobotByUin(base.Msg.Uin); if (robot.Rows.Count == 0) { return(m); } var b_chatSwitch = bool.Parse(robot.Rows[0]["ChatSwitch"].ToString()); if (!b_chatSwitch) { return(m); //关闭不聊天 } var at_pat = "(@\\w+):<br/>@" + base.Contact.GetNickName(base.Msg.To) + "\\s(.*)"; Regex r = new Regex(at_pat); if (r.IsMatch(base.Msg.Msg)) { m.type = 1; var g = r.Match(base.Msg.Msg).Groups; var nickName = base.Contact.GetGMemberNickName(Msg.From, g[1].ToString()); var context = g[2].ToString(); //个人机器人设置 if (context == "") { context = "你要说点什么呢"; } m.context = "@" + nickName + " " + TuLingRobot.GetTextReply(context).Replace("<br>", "\r\n"); } return(m); }
public void AddToList(string uin) { ((Action)(delegate() { string sid = LoginCore.GetPassTicket(uin).WxSid; string WXUser_url = LoginCore.GetPassTicket(uin).WXUser_url;//传值不同域名不同的 WXService wx = new WXService(); wx.Uin = uin; wx.Sid = sid; JObject init_result = wx.WxInit(); var partUsers = new List <WXUser>(); foreach (JObject contact in init_result["ContactList"]) //部分好友名单 { WXUser user = new WXUser(); //传值uin sin user.uin = uin; user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); partUsers.Add(user); } var _me = new WXUser(); if (init_result != null) { _me.UserName = init_result["User"]["UserName"].ToString(); _me.City = ""; _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(); _me.NickName = init_result["User"]["NickName"].ToString(); _me.Province = ""; _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString(); _me.RemarkName = init_result["User"]["RemarkName"].ToString(); _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(); _me.Sex = init_result["User"]["Sex"].ToString(); _me.Signature = init_result["User"]["Signature"].ToString(); Tools.WriteLog("【警告】" + _me.NickName + "不能在此软件运行,请切换版本或重新扫描登陆"); if (string.IsNullOrEmpty(_me.NickName)) { WriteLog("【警告】" + _me.NickName + "不能在此软件运行,请切换版本或重新扫描登陆"); Tools.WriteLog("【警告】" + uin + "不能在此软件运行,请切换版本或重新扫描登陆"); return; } var _syncKey = new Dictionary <string, string>(); foreach (JObject synckey in init_result["SyncKey"]["List"]) //同步键值 { _syncKey.Add(synckey["Key"].ToString(), synckey["Val"].ToString()); } //保存最新key LoginCore.AddSyncKey(uin, _syncKey); //更新数据库 var table = WeChatRobotDal.GetWxRobot(_me.NickName); if (table.Rows.Count == 0) { WriteLog("【警告】" + _me.NickName + "没有加入系统中"); return; } partUsers.Add(_me); WxContact _contact = new WxContact(uin); //记住此处不适合再开线程 _contact.InitContact(partUsers); //初始联系人 WeChatRobotDal.UpdateUin(_me.NickName, uin); #region 加入listview if (!_dic.ContainsKey(uin)) { this.BeginInvoke((Action) delegate() { this.WechartListView.BeginUpdate(); //把扫描好的微信加入到列表中 ListViewItem item = new ListViewItem(); item.Text = uin; item.SubItems.Add(_me.UserName); item.SubItems.Add(_me.ShowName); item.SubItems.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); item.SubItems.Add("0"); item.SubItems.Add(table.Rows[0]["EndDate"].ToString()); this.WechartListView.Items.Add(item); this.WechartListView.EndUpdate(); //设置下高度 ImageList image = new ImageList(); image.ImageSize = new Size(10, 50);//这边设置宽和高 this.WechartListView.SmallImageList = image; //隐藏以下按钮 //this.WechartListView.Columns[1].Width = 0; //this.WechartListView.Columns[0].Width = 0; //this.WechartListView.Columns[4].Width = 0; //this.WechartListView.Columns[5].Width = 0; }); _dic.Add(uin, uin); //#region 开始任务 //var robotID = table.Rows[0]["RobotId"].ToString(); //WxTaskCore wt = new WxTaskCore(sid, uin, robotID); //wt.user = _me; ////接收消息事件 //wt.OnRevice += new WxTaskCore.Revice(wt_OnRevice); ////接收修改联系人消息 //wt.OnModifyContact += new WxTaskCore.ModifyContact(wt_OnModifyContact); ////通知发送信息 //wt.OnNotifySend += new WxTaskCore.NotifySend(wt_OnNotifySend); ////每一个微信号,开启一个线程 //ThreadStart start = new ThreadStart(wt.ReviceMsg); //new Thread(start).Start(); ////启动发送线程 //new Thread(new ThreadStart(wt.AutoSendMsg)).Start(); //#endregion } #endregion } if (!Uins.Contains(uin)) { Uins.Add(uin); } LoginCore.AddOnLineUin(Uins); UpDataFromData(); })).BeginInvoke(null, null); }
/// <summary> /// 进群欢迎语 /// </summary> /// <param name="msg"></param> /// <returns></returns> public SendMsg MakeContent(WXMsg msg) { var SendMsg = new SendMsg(); WxContact contact = new WxContact(msg.Uin); string groupUserName = msg.From; //群用户名 var oldMember = contact.GetGroupMemberNames(groupUserName); //获取当前群内所有成员信息 var currMember = contact.GetOnLineGroupMember(groupUserName); var newMemberList = new List <GroupWxUser>(); var dic_oldUserName = new Dictionary <string, string>(); foreach (var old_s in oldMember.MemberUserNames) { dic_oldUserName.Add(old_s.UserName, old_s.UserName); } foreach (var s in currMember.MemberUserNames) { if (!dic_oldUserName.ContainsKey(s.UserName)) { newMemberList.Add(s); } } string nickName = string.Empty; foreach (var m in newMemberList) { nickName += m.NickName + "、"; } //获取用户信息 contact.Add(groupUserName, currMember); //更新群内联系人信息 //获取系统设置的欢迎信息 var robot = WeChatRobotDal.GetWxRobotByUin(msg.Uin); if (robot.Rows.Count == 0) { return(new SendMsg()); } var welcomeSwitch = int.Parse(robot.Rows[0]["WelcomeSwitch"].ToString()); var ret = string.Empty; switch (welcomeSwitch) { case (int)EnumContainer.CommonSwichEnum.关闭不发送: break; case (int)EnumContainer.CommonSwichEnum.自定义语句: ret = GetCustomWelcome(robot.Rows[0]["RobotId"].ToString()); break; case (int)EnumContainer.CommonSwichEnum.通用语句: ret = "请遵守群规[微笑]"; break; } ((Action) delegate() { //写进群数据库 var b = WxOperateLogDal.AddInGroupLog(msg.Uin, groupUserName, msg.Msg); }).BeginInvoke(null, null); if (!string.IsNullOrEmpty(ret)) { ret = string.Format("@{0} {1}", nickName.TrimEnd('、'), ret); } SendMsg.context = ret; SendMsg.type = 1; return(SendMsg); }