示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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);
        }