Exemple #1
0
        private void EventProcessor(JToken payload)
        {
            switch (payload["post_type"]?.ToString())
            {
            case "message":
                if (payload["message_type"]?.ToString() == "private")
                {
                    LogHelper.Write("Onebot", "消息处理",
                                    $"[↓] 接收到 [私聊: {payload["user_id"]?.ToObject<long>()}] 的消息: {OnebotTools.ParseMessageToString(payload["message"])}",
                                    LogLevel.InfoReceive);
                    OnPrivateMessage?.Invoke(payload);
                }
                if (payload["message_type"]?.ToString() == "group")
                {
                    LogHelper.Write("Onebot", "消息处理",
                                    $"[↓] 接收到 [群: {payload["group_id"]?.ToObject<long>()} 用户: {payload.SelectToken("sender.user_id")?.ToObject<long>()}] 的消息: {OnebotTools.ParseMessageToString(payload["message"])}",
                                    LogLevel.InfoReceive);
                    OnGroupMessage?.Invoke(payload);
                }
                break;

            case "notice":
                if (payload["notice_type"]?.ToString() == "group_upload")
                {
                    LogHelper.Write("Onebot", "文件上传",
                                    $"[↓] 来自 [群: {payload["group_id"]?.ToObject<long>()} 用户: {payload["user_id"]?.ToObject<long>()}] 上传了文件: {payload.SelectToken("file.name")}",
                                    LogLevel.InfoReceive);
                    OnGroupUpload?.Invoke(payload);
                }
                break;
            }
        }
Exemple #2
0
 public static void ClearHandler()
 {
     if (OnPrivateMessage == null)
     {
         return;
     }
     Delegate[] dels = OnPrivateMessage.GetInvocationList();
     foreach (Delegate @delegate in dels)
     {
         OnPrivateMessage -= @delegate as EventsHandler;
     }
 }
Exemple #3
0
        protected override void OnReceived(byte[] data)
        {
            Actived = DateTimeHelper.Now;

            if (data != null)
            {
                this.UserToken.Coder.Pack(data, null, (s) =>
                {
                    if (s.Content != null)
                    {
                        try
                        {
                            var cm = ConvertHelper.PBDeserialize <ChatMessage>(s.Content);

                            switch (cm.Type)
                            {
                            case ChatMessageType.LoginAnswer:
                                this.Logined = true;
                                _autoResetEvent.Set();
                                break;

                            case ChatMessageType.SubscribeAnswer:
                                if (cm.Content == "1")
                                {
                                    _subscribed = true;
                                }
                                else
                                {
                                    _subscribed = false;
                                }
                                _autoResetEvent.Set();
                                break;

                            case ChatMessageType.UnSubscribeAnswer:
                                if (cm.Content == "1")
                                {
                                    _unsubscribed = true;
                                }
                                else
                                {
                                    _unsubscribed = false;
                                }
                                _autoResetEvent.Set();
                                break;

                            case ChatMessageType.ChannelMessage:
                                OnChannelMessage?.Invoke(cm.GetIMessage <ChannelMessage>());
                                break;

                            case ChatMessageType.PrivateMessage:
                                OnPrivateMessage?.Invoke(cm.GetIMessage <PrivateMessage>());
                                break;

                            case ChatMessageType.GroupMessage:
                                OnGroupMessage?.Invoke(cm.GetIMessage <GroupMessage>());
                                break;

                            case ChatMessageType.PrivateMessageAnswer:
                                _autoResetEvent.Set();
                                break;

                            case ChatMessageType.CreateGroupAnswer:
                            case ChatMessageType.RemoveGroupAnswer:
                            case ChatMessageType.AddMemberAnswer:
                            case ChatMessageType.RemoveMemberAnswer:
                                _autoResetEvent.Set();
                                break;

                            case ChatMessageType.GroupMessageAnswer:
                                _autoResetEvent.Set();
                                break;

                            default:
                                Console.WriteLine("cm.Type", cm.Type);
                                break;
                            }
                        }
                        catch (Exception ex)
                        {
                            RaiseOnError("", ex);
                        }
                    }
                }, null);
            }
        }
Exemple #4
0
        private void _client_OnReceive(byte[] data)
        {
            Actived = DateTimeHelper.Now;

            if (data != null)
            {
                this._messageContext.Unpacker.Unpack(data, (s) =>
                {
                    if (s.Content != null)
                    {
                        try
                        {
                            var cm = SerializeHelper.PBDeserialize <ChatMessage>(s.Content);

                            switch (cm.Type)
                            {
                            case ChatMessageType.LoginAnswer:
                                this.Logined = true;
                                break;

                            case ChatMessageType.SubscribeAnswer:
                                if (cm.Content == "1")
                                {
                                    _subscribed = true;
                                }
                                else
                                {
                                    _subscribed = false;
                                }
                                break;

                            case ChatMessageType.UnSubscribeAnswer:
                                if (cm.Content == "1")
                                {
                                    _unsubscribed = true;
                                }
                                else
                                {
                                    _unsubscribed = false;
                                }
                                break;

                            case ChatMessageType.ChannelMessage:
                                TaskHelper.Start(() => OnChannelMessage?.Invoke(cm.GetIMessage <ChannelMessage>()));
                                break;

                            case ChatMessageType.PrivateMessage:
                                TaskHelper.Start(() => OnPrivateMessage?.Invoke(cm.GetIMessage <PrivateMessage>()));
                                break;

                            case ChatMessageType.GroupMessage:
                                TaskHelper.Start(() => OnGroupMessage?.Invoke(cm.GetIMessage <GroupMessage>()));
                                break;

                            case ChatMessageType.PrivateMessageAnswer:
                                break;

                            case ChatMessageType.CreateGroupAnswer:
                            case ChatMessageType.RemoveGroupAnswer:
                            case ChatMessageType.AddMemberAnswer:
                            case ChatMessageType.RemoveMemberAnswer:
                                break;

                            case ChatMessageType.GroupMessageAnswer:
                                break;

                            default:
                                ConsoleHelper.WriteLine("cm.Type", cm.Type);
                                break;
                            }
                        }
                        catch (Exception ex)
                        {
                            OnError?.Invoke(_messageContext.UserToken.ID, ex);
                        }
                    }
                }, null, null);
            }
        }
Exemple #5
0
 public void PrivateMessage(object sender, CQPrivateMessageEventArgs e)
 {
     OnPrivateMessage?.Invoke(sender, e);
 }