Пример #1
0
 /**
  * <p>Constructor for GetGroupPicAction.</p>
  *
  * @param context a {@link iqq.im.core.IQQContext} object.
  * @param listener a {@link iqq.im.IQQActionListener} object.
  * @param cface a {@link iqq.im.bean.content.CFaceItem} object.
  * @param msg a {@link iqq.im.bean.QQMsg} object.
  * @param picOut a {@link java.io.OutputStream} object.
  */
 public GetGroupPicAction(IQQContext context, QQActionListener listener,
                                     CFaceItem cface, QQMsg msg, Stream picOut)
     : base(context, listener)
 {
     _cface = cface;
     _msg = msg;
     _picOut = picOut;
 }
Пример #2
0
 public GetOffPicAction(IQQContext context, QQActionListener listener,
     OffPicItem offpic, QQMsg msg, Stream picOut)
     : base(context, listener)
 {
     _offpic = offpic;
     _msg = msg;
     _picOut = picOut;
 }
Пример #3
0
 public GetUserPicAction(IQQContext context, QQActionListener listener,
     CFaceItem cface, QQMsg msg, Stream picOut)
     : base(context, listener)
 {
     this.cface = cface;
     this.msg = msg;
     this.picOut = picOut;
 }
Пример #4
0
        /**
         * <p>Constructor for GetGroupPicAction.</p>
         *
         * @param context a {@link iqq.im.core.QQContext} object.
         * @param listener a {@link iqq.im.IQQActionListener} object.
         * @param cface a {@link iqq.im.bean.content.CFaceItem} object.
         * @param msg a {@link iqq.im.bean.QQMsg} object.
         * @param picOut a {@link java.io.OutputStream} object.
         */
        public GetGroupPicAction(QQContext context, QQActionEventHandler listener,
                                            CFaceItem cface, QQMsg msg, Stream picOut)
            : base(context, listener)
        {

            this.cface = cface;
            this.msg = msg;
            this.picOut = picOut;
        }
Пример #5
0
        public GetOffPicAction(QQContext context, QQActionEventHandler listener,
            OffPicItem offpic, QQMsg msg, Stream picOut)
            : base(context, listener)
        {

            this.offpic = offpic;
            this.msg = msg;
            this.picOut = picOut;
        }
Пример #6
0
 public QQActionFuture SendMsg(QQMsg msg, QQActionEventHandler listener)
 {
     if (msg.Type == QQMsgType.SESSION_MSG)
     {
         ProcActionFuture future = new ProcActionFuture(listener, true);
         QQStranger stranger = (QQStranger)msg.To;
         if (string.IsNullOrEmpty(stranger.GroupSig))
         {
             GetSessionMsgSig(stranger, new QQActionEventHandler((sender, Event) =>
             {
                 if (Event.Type == QQActionEventType.EVT_OK)
                 {
                     if (!future.IsCanceled)
                     {
                         DoSendMsg(msg, future.Listener);
                     }
                 }
                 else if (Event.Type == QQActionEventType.EVT_ERROR)
                 {
                     future.NotifyActionEvent(Event.Type, Event.Target);
                 }
             }));
         }
         return future;
     }
     else if (msg.Type == QQMsgType.GROUP_MSG || msg.Type == QQMsgType.DISCUZ_MSG)
     {
         if (string.IsNullOrEmpty(this.Context.Session.CfaceKey))
         {
             ProcActionFuture future = new ProcActionFuture(listener, true);
             GetCFaceSig(new QQActionEventHandler((sender, Event) =>
             {
                 if (Event.Type == QQActionEventType.EVT_OK)
                 {
                     if (!future.IsCanceled)
                     {
                         DoSendMsg(msg, future.Listener);
                     }
                 }
                 else if (Event.Type == QQActionEventType.EVT_ERROR)
                 {
                     future.NotifyActionEvent(Event.Type, Event.Target);
                 }
             }));
             return future;
         }
     }
     return DoSendMsg(msg, listener);
 }
Пример #7
0
        public IQQActionFuture SendMsg(QQMsg msg, QQActionListener listener)
        {
            var future = new ProcActionFuture(listener, true);

            if (msg.Type == QQMsgType.SESSION_MSG)
            {
                var stranger = (QQStranger)msg.To;
                if (string.IsNullOrEmpty(stranger.GroupSig))
                {
                    GetSessionMsgSig(stranger, (sender, Event) =>
                    {
                        if (Event.Type == QQActionEventType.EvtOK)
                        {
                            DoSendMsg(msg, future.Listener);
                        }
                        else if (Event.Type == QQActionEventType.EvtError)
                        {
                            future.NotifyActionEvent(Event.Type, Event.Target);
                        }
                    });
                }
                return future;
            }
            else if (msg.Type == QQMsgType.GROUP_MSG || msg.Type == QQMsgType.DISCUZ_MSG)
            {
                if (msg.Type == QQMsgType.GROUP_MSG)
                {
                    if (msg.Group.Gin == 0)
                    {
                        msg.Group = Context.Store.GetGroupByCode(msg.Group.Code);
                        return future;
                    }
                }
            }
            return DoSendMsg(msg, listener);
        }
Пример #8
0
        /// <summary>
        /// 处理群消息
        /// </summary>
        /// <param name="pollData"></param>
        /// <returns></returns>
        public QQNotifyEvent ProcessGroupMsg(JObject pollData)
        {
            // {"retcode":0,"result":[{"poll_type":"group_message",
            // "value":{"msg_id":6175,"from_uin":3924684389,"to_uin":1070772010,"msg_id2":992858,"msg_type":43,"reply_ip":176621921,
            // "group_code":3439321257,"send_uin":1843694270,"seq":875,"time":1365934781,"info_seq":170125666,"content":[["font",{"size":10,"color":"3b3b3b","style":[0,0,0],"name":"\u5FAE\u8F6F\u96C5\u9ED1"}],"eeeeeeeee "]}}]}

            try
            {
                var store = Context.Store;
                var msg = new QQMsg
                {
                    Id = pollData["msg_id"].ToObject<long>(),
                    Id2 = pollData["msg_id2"].ToObject<long>()
                };
                var fromUin = pollData["send_uin"].ToObject<long>();
                var groupCode = pollData["group_code"].ToObject<long>();
                var groupId = pollData["info_seq"].ToObject<long>(); // 真实群号码
                var group = store.GetGroupByCode(groupCode);
                if (group == null)
                {
                    var groupModule = Context.GetModule<GroupModule>(QQModuleType.GROUP);
                    group = new QQGroup
                    {
                        Code = groupCode,
                        Gid = groupId
                    };
                    // put to store
                    store.AddGroup(group);
                    groupModule.GetGroupInfo(group, null);
                }
                if (group.Gid <= 0)
                {
                    group.Gid = groupId;
                }

                msg.ParseContentList(JsonConvert.SerializeObject(pollData["content"]));
                msg.Type = QQMsgType.GROUP_MSG;
                msg.To = Context.Account;
                var ticks = pollData["time"].ToObject<long>() * 1000;
                msg.Date = ticks > DateTime.MaxValue.Ticks ? DateTime.Now : new DateTime(ticks);
                msg.Group = group;
                msg.From = group.GetMemberByUin(fromUin);

                if (msg.From == null)
                {
                    var member = new QQGroupMember { Uin = fromUin };
                    msg.From = member;
                    group.Members.Add(member);
                    // 获取用户信息
                    var userModule = Context.GetModule<UserModule>(QQModuleType.USER);
                    userModule.GetUserInfo(member, null);
                }
                return new QQNotifyEvent(QQNotifyEventType.CHAT_MSG, msg);
            }
            catch (Exception ex)
            {
                return new QQNotifyEvent(QQNotifyEventType.NET_ERROR, ex);
            }
        }
Пример #9
0
        private void AfterInitialize()
        {
            _eventHandler = (sender, Event) =>
            {
                switch (Event.Type)
                {
                    case QQActionEventType.EVT_CANCELED:
                    case QQActionEventType.EVT_ERROR:
                    ShowMessage(Event.ToString());
                    break;
                }
            };

            _notifyHandler = (sender, Event) =>
            {
                var client = sender as IQQClient;
                if (client == null) return;

                try
                {
                    switch (Event.Type)
                    {
                        case QQNotifyEventType.BUDDY_INPUT:
                        case QQNotifyEventType.BUDDY_STATUS_CHANGE:
                        {
                            break;
                        }

                        case QQNotifyEventType.CHAT_MSG:
                        {
                            var msg = Event.Target as QQMsg;
                            switch (msg.Type)
                            {
                                case QQMsgType.SESSION_MSG:
                                case QQMsgType.BUDDY_MSG:
                                {
                                    if (msg.From.QQ == default(long))
                                    {
                                        client.GetUserInfo(msg.From);
                                    }
                                    ShowMessage(string.Format("{0}:【{1}】消息:{2}",
                                        client.Account.QQ, msg.From.Nickname, msg.GetText()));

                                    if (chkAutoReply.Checked)
                                    {
                                        var msgReply = new QQMsg()
                                        {
                                            Type = QQMsgType.BUDDY_MSG,
                                            To = msg.From,
                                            From = client.Account,
                                            Date = DateTime.Now,
                                        };
                                        TextItem text = null;

                                        if (chkUseRobot.Checked)
                                        {
                                            var replyEvent = client.GetRobotReply(msg,
                                                RobotType.Tuling).WaitFinalEvent(10000);
                                            if (replyEvent.Type == QQActionEventType.EVT_OK)
                                            {
                                                text = new TextItem(replyEvent.Target as string);
                                            }
                                            else
                                            {
                                                text = new TextItem("这是自动回复");
                                            }
                                        }
                                        else
                                        {
                                            text = new TextItem("这是自动回复");
                                        }
                                        Thread.Sleep(3000);
                                        client.SendMsg(msgReply);
                                        msgReply.ContentList.Add(text);
                                        ShowMessage(string.Format("{0}:自动回复给【{1}】:{2}",
                                            client.Account.QQ, msg.From.Nickname, text.ToText()));
                                    }
                                    break;
                                }

                                case QQMsgType.DISCUZ_MSG:
                                {
                                    ShowMessage(string.Format("{0}:讨论组【{1}】来自【{2}】消息:{3}",
                                        client.Account.QQ, msg.Discuz, msg.From.Nickname, msg.GetText()));
                                    break;
                                }

                                case QQMsgType.GROUP_MSG:
                                {
                                    ShowMessage(string.Format("{0}:群【{1}】来自【{2}】消息:{3}",
                                        client.Account.QQ, msg.Group, msg.From.Nickname, msg.GetText()));
                                    break;
                                }
                            }
                            break;
                        }

                        case QQNotifyEventType.KICK_OFFLINE:
                        ShowMessage(client.Account.QQ + ":被踢下线-" + (String)Event.Target);
                        break;

                        case QQNotifyEventType.CAPACHA_VERIFY:
                        {
                            var verify = (QQNotifyEventArgs.ImageVerify)Event.Target;
                            this.Invoke(new MethodInvoker(() =>
                            {
                                pbVerifyPic.Image = verify.Image;
                                tbVerifyCode.Enabled = true;
                                tbVerifyCode.Text = "";
                                tbVerifyCode.Focus();
                            }));

                            ShowMessage(verify.Reason);
                            ShowMessage(client.Account.Username + ":请输入验证码:");
                            _verifyCodeInputed.WaitOne();
                            client.SubmitVerify(tbVerifyCode.Text, Event);
                            tbVerifyCode.Invoke(new MethodInvoker(() =>
                            {
                                tbVerifyCode.Enabled = false;
                            }));
                            break;
                        }

                        case QQNotifyEventType.SHAKE_WINDOW:
                        {
                            var buddy = Event.Target as QQBuddy;
                            if (buddy?.QQ == default(long))
                            {
                                client.GetUserQQ(buddy, null);
                            }
                            ShowMessage(string.Format("{0}:【{1}】发来抖动屏幕", client.Account.QQ, buddy.ShowName));
                            if (chkAutoReply.Checked)
                            {
                                client.SendShake(buddy);
                            }
                            break;
                        }

                        case QQNotifyEventType.NET_ERROR:
                        case QQNotifyEventType.UNKNOWN_ERROR:
                        ShowMessage(client.Account.QQ + ":出错-" + Event.Target.ToString());
                        break;

                        default:
                        ShowMessage(client.Account.QQ + ":" + Event.Type + ", " + Event.Target);
                        break;
                    }
                    UpdateQQInfo(client);
                }
                catch (QQException e)
                {
                    ShowMessage(client.Account.QQ + ":" + e.StackTrace);
                }
                catch (Exception e)
                {
                    ShowMessage(e.StackTrace);
                }
            };

            var rightButtonCMS = new ContextMenuStrip();

            var TSMIRemove = new ToolStripMenuItem() { Text = "移除" };
            TSMIRemove.Click += (sender, e) =>
            {
                var TSMI = sender as ToolStripMenuItem;
                var CMS = TSMI?.Owner as ContextMenuStrip;
                if (CMS != null)
                {
                    var LV = CMS.SourceControl as ListView;
                    if (LV == lvQQList)
                    {
                        RemoveSelectedQQFromList();
                    }
                }
            };
            rightButtonCMS.Items.Add(TSMIRemove);
            lvQQList.ContextMenuStrip = rightButtonCMS;
        }
Пример #10
0
        /// <summary>
        /// 处理好友信息
        /// </summary>
        /// <param name="pollData"></param>
        /// <returns></returns>
        public QQNotifyEvent ProcessBuddyMsg(JObject pollData)
        {
            try
            {
                var store = Context.Store;
                var fromUin = pollData["from_uin"].ToObject<long>();
                var msg = new QQMsg
                {
                    Id = pollData["msg_id"].ToObject<long>(),
                    Id2 = pollData["msg_id2"].ToObject<long>()
                };
                msg.ParseContentList(JsonConvert.SerializeObject(pollData["content"]));
                msg.Type = QQMsgType.BUDDY_MSG;
                msg.To = Context.Account;
                msg.From = store.GetBuddyByUin(fromUin);
                var ticks = pollData["time"].ToObject<long>() * 1000;
                msg.Date = ticks > DateTime.MaxValue.Ticks ? DateTime.Now : new DateTime(ticks);
                if (msg.From == null)
                {
                    QQUser member = store.GetStrangerByUin(fromUin); // 搜索陌生人列表
                    if (member == null)
                    {
                        member = new QQHalfStranger { Uin = fromUin };
                        store.AddStranger((QQStranger)member);

                        // 获取用户信息
                        var userModule = Context.GetModule<UserModule>(QQModuleType.USER);
                        userModule.GetUserInfo(member, null);
                    }
                    msg.From = member;
                }
                return new QQNotifyEvent(QQNotifyEventType.CHAT_MSG, msg);
            }
            catch (Exception ex)
            {
                return new QQNotifyEvent(QQNotifyEventType.NET_ERROR, ex);
            }
        }
Пример #11
0
 private IQQActionFuture DoSendMsg(QQMsg msg, QQActionListener listener)
 {
     return PushHttpAction(new SendMsgAction(Context, listener, msg));
 }
Пример #12
0
        private QQNotifyListener GetListener()
        {
            return async (client, notifyEvent) =>
            {
                try
                {
                    switch (notifyEvent.Type)
                    {
                        case QQNotifyEventType.LoginSuccess:
                        {
                            client.Logger.LogInformation("登录成功");
                            break;
                        }
                        case QQNotifyEventType.GroupMsg:
                        {
                            var revMsg = (QQMsg)notifyEvent.Target;
                            if (revMsg.From.QQ.IsDefault()) await client.GetUserQQ(revMsg.From).WhenFinalEvent().ConfigureAwait(false);
                            client.Logger.LogInformation($"群[{revMsg.Group.Name}]-好友[{revMsg.From.Nickname}]:{revMsg.GetText()}");
                            break;
                        }
                        case QQNotifyEventType.ChatMsg:
                        {
                            var revMsg = (QQMsg)notifyEvent.Target;
                            if (revMsg.From.QQ.IsDefault()) await client.GetUserQQ(revMsg.From).WhenFinalEvent().ConfigureAwait(false);
                            client.Logger.LogInformation($"好友[{revMsg.From.Nickname}]:{revMsg.GetText()}");
                            if (chkUseRobot.Checked)
                            {
                                Thread.Sleep(3000);
                                var msgReply = new QQMsg()
                                {
                                    Type = QQMsgType.BUDDY_MSG,
                                    To = revMsg.From,
                                    From = client.Account,
                                    Date = DateTime.Now,
                                };
                                var replyEvent = await client.GetRobotReply(revMsg, RobotType.Turing).WhenFinalEvent();
                                if (replyEvent.Type == QQActionEventType.EvtOK)
                                {
                                    var str = (string)replyEvent.Target;
                                    var text = new TextItem($"{str} --来自机器人");
                                    msgReply.AddContentItem(text);
                                    msgReply.AddContentItem(new FontItem()); // 使用默认字体,不加这句对方收不到信息
                                    var result = await client.SendMsg(msgReply).WhenFinalEvent().ConfigureAwait(false);
                                    if (result.Type == QQActionEventType.EvtOK)
                                    {
                                        client.Logger.LogInformation($"自动回复给[{revMsg.From.Nickname}]:{text.ToText()}");
                                    }
                                    else
                                    {
                                        client.Logger.LogWarning($"自动回复给[{revMsg.From.Nickname}]发送失败");
                                    }
                                }
                                else
                                {
                                    client.Logger.LogWarning("获取机器人回复失败");
                                }
                            }
                            break;
                        }
                        case QQNotifyEventType.QrcodeInvalid:
                        {
                            client.Logger.LogWarning("二维码已失效");
                            CancelLogin();
                            break;
                        }
                        case QQNotifyEventType.QrcodeReady:
                        {
                            client.Logger.LogWarning("二维码获取成功,请用手机qq扫码登录");
                            var verify = (Image)notifyEvent.Target;
                            pbQRCode.InvokeIfRequired(() =>
                            {
                                pbQRCode.Image = verify;
                            });
                            break;
                        }
                        case QQNotifyEventType.KickOffline:
                        {
                            client.Logger.LogInformation("被踢下线");
                            break;
                        }
                        case QQNotifyEventType.ShakeWindow:
                        {
                            var buddy = (QQBuddy)notifyEvent.Target;
                            if (buddy.QQ.IsDefault()) await client.GetUserQQ(buddy).WhenFinalEvent().ConfigureAwait(false);
                            client.Logger.LogInformation($"[{buddy.ShowName}]发来抖动屏幕");
                            break;
                        }
                        case QQNotifyEventType.BuddyInput:
                        case QQNotifyEventType.BuddyStatusChange:
                        case QQNotifyEventType.QrcodeSuccess:
                        case QQNotifyEventType.NetError:
                        case QQNotifyEventType.UnknownError:
                        break;

                        default:
                        client.Logger.LogInformation(notifyEvent.Type + ", " + notifyEvent.Target);
                        break;
                    }
                }
                catch (Exception ex)
                {
                    client.Logger.LogError(ex.ToString());
                }
            };
        }
Пример #13
0
        public SendMsgAction(QQContext context, QQActionEventHandler listener, QQMsg msg)
            : base(context, listener)
        {

            this.msg = msg;
        }
 public GetTuringRobotReplyAction(IQQContext context, QQActionListener listener, QQMsg input)
     : base(context, listener)
 {
     _input = input;
 }
Пример #15
0
 public QQActionFuture GetRobotReply(QQMsg input, RobotType robotType, QQActionEventHandler listener)
 {
     return PushHttpAction(new GetRobotReplyAction(Context, listener, input, robotType));
 }
Пример #16
0
 public IQQActionFuture GetOffPic(OffPicItem offpic, QQMsg msg, Stream picout, QQActionListener listener)
 {
     return PushHttpAction(new GetOffPicAction(Context, listener, offpic, msg, picout));
 }
Пример #17
0
        /// <summary>
        /// 处理讨论组信息
        /// </summary>
        /// <param name="pollData"></param>
        /// <returns></returns>
        public QQNotifyEvent ProcessDiscuzMsg(JObject pollData)
        {
            try
            {
                var store = Context.Store;

                var msg = new QQMsg();
                var fromUin = pollData["send_uin"].ToObject<long>();
                var did = pollData["did"].ToObject<long>();

                msg.ParseContentList(JsonConvert.SerializeObject(pollData["content"]));
                msg.Type = QQMsgType.DISCUZ_MSG;
                msg.Discuz = store.GetDiscuzByDid(did);
                msg.To = Context.Account;
                var ticks = pollData["time"].ToObject<long>() * 1000;
                msg.Date = ticks > DateTime.MaxValue.Ticks ? DateTime.Now : new DateTime(ticks);

                if (msg.Discuz == null)
                {
                    var discuz = new QQDiscuz();
                    discuz.Did = did;
                    store.AddDiscuz(discuz);
                    msg.Discuz = store.GetDiscuzByDid(did);

                    var discuzModule = Context.GetModule<DiscuzModule>(QQModuleType.DISCUZ);
                    discuzModule.GetDiscuzInfo(discuz, null);
                }
                msg.From = msg.Discuz.GetMemberByUin(fromUin);

                if (msg.From == null)
                {
                    var member = new QQDiscuzMember { Uin = fromUin };
                    msg.From = member;
                    msg.Discuz.Members.Add(member);
                    // 获取用户信息
                    var userModule = Context.GetModule<UserModule>(QQModuleType.USER);
                    userModule.GetUserInfo(member, null);
                }
                return new QQNotifyEvent(QQNotifyEventType.CHAT_MSG, msg);
            }
            catch (Exception ex)
            {
                return new QQNotifyEvent(QQNotifyEventType.NET_ERROR, ex);
            }
        }
Пример #18
0
 public IQQActionFuture GetUserPic(CFaceItem cface, QQMsg msg, Stream picout, QQActionListener listener)
 {
     return PushHttpAction(new GetUserPicAction(Context, listener, cface, msg, picout));
 }
Пример #19
0
 public IQQActionFuture GetRobotReply(QQMsg input, RobotType robotType, QQActionListener listener)
 {
     return PushHttpAction(new GetTuringRobotReplyAction(Context, listener, input));
 }
Пример #20
0
        /// <summary>
        /// 处理临时会话消息
        /// </summary>
        /// <param name="pollData"></param>
        /// <returns></returns>
        public QQNotifyEvent ProcessSessionMsg(JObject pollData)
        {
            // {"retcode":0,"result":[{"poll_type":"sess_message",
            // "value":{"msg_id":25144,"from_uin":167017143,"to_uin":1070772010,"msg_id2":139233,"msg_type":140,"reply_ip":176752037,"time":1365931836,"id":2581801127,"ruin":444674479,"service_type":1,
            // "flags":{"text":1,"pic":1,"file":1,"audio":1,"video":1},"content":[["font",{"size":9,"color":"000000","style":[0,0,0],"name":"Tahoma"}],"2\u8F7D3 ",["face",1]," "]}}]}
            try
            {
                var store = Context.Store;
                var msg = new QQMsg();
                var fromUin = pollData["from_uin"].ToObject<long>();
                var fromQQ = pollData["ruin"].ToObject<long>();// 真实QQ
                var serviceType = pollData["service_type"].ToObject<int>(); // Group:0,Discuss:1
                var typeId = pollData["id"].ToObject<long>(); // Group ID or Discuss ID

                msg.ParseContentList(JsonConvert.SerializeObject(pollData["content"]));
                msg.Type = QQMsgType.SESSION_MSG;
                msg.To = Context.Account;
                var ticks = pollData["time"].ToObject<long>() * 1000;
                msg.Date = ticks > DateTime.MaxValue.Ticks ? DateTime.Now : new DateTime(ticks);

                QQUser user = store.GetBuddyByUin(fromUin); // 首先看看是不是自己的好友
                if (user != null)
                {
                    msg.Type = QQMsgType.BUDDY_MSG; // 是自己的好友
                }
                else
                {
                    if (serviceType == 0)
                    { // 是群成员
                        var group = store.GetGroupByCode(typeId);
                        if (group == null)
                        {
                            group = new QQGroup();
                            group.Code = typeId;
                            // 获取群信息
                            var groupModule = Context.GetModule<GroupModule>(QQModuleType.GROUP);
                            groupModule.GetGroupInfo(group, null);
                        }
                        foreach (QQGroupMember u in group.Members)
                        {
                            if (u.Uin == fromUin)
                            {
                                user = u;
                                break;
                            }
                        }
                    }
                    else if (serviceType == 1)
                    { // 是讨论组成员
                        var discuz = store.GetDiscuzByDid(typeId);
                        if (discuz == null)
                        {
                            discuz = new QQDiscuz { Did = typeId };

                            // 获取讨论组信息
                            var discuzModule = Context.GetModule<DiscuzModule>(QQModuleType.DISCUZ);
                            discuzModule.GetDiscuzInfo(discuz, null);
                        }


                        foreach (QQDiscuzMember u in discuz.Members)
                        {
                            if (u.Uin == fromUin)
                            {
                                user = u;
                                break;
                            }
                        }
                    }
                    else
                    {
                        user = store.GetStrangerByUin(fromUin); // 看看陌生人列表中有木有
                    }
                    if (user == null)
                    { // 还没有就新建一个陌生人,原理来说不应该这样。后面我就不知道怎么回复这消息了,但是消息是不能丢失的
                        user = new QQStranger
                        {
                            QQ = pollData["ruin"].ToObject<long>(),
                            Uin = fromUin,
                            Nickname = pollData["ruin"] + ""
                        };
                        store.AddStranger((QQStranger)user);

                        // 获取用户信息
                        var userModule = Context.GetModule<UserModule>(QQModuleType.USER);
                        userModule.GetStrangerInfo(user, null);
                    }
                }
                user.QQ = fromQQ; // 带上QQ号码
                msg.From = user;
                return new QQNotifyEvent(QQNotifyEventType.CHAT_MSG, msg);
            }
            catch (Exception ex)
            {
                return new QQNotifyEvent(QQNotifyEventType.NET_ERROR, ex);
            }
        }
Пример #21
0
 public GetRobotReplyAction(QQContext context, QQActionEventHandler listener, QQMsg input, RobotType robotType)
     : base(context, listener)
 {
     this.input = input;
     this.robotType = robotType;
 }
Пример #22
0
 public SendMsgAction(IQQContext context, QQActionListener listener, QQMsg msg)
     : base(context, listener)
 {
     _msg = msg;
 }
Пример #23
0
 public QQActionFuture GetGroupPic(CFaceItem cface, QQMsg msg, Stream picout, QQActionEventHandler listener)
 {
     return PushHttpAction(new GetGroupPicAction(this.Context, listener, cface, msg, picout));
 }