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; } }
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); } }
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); } }
public void PrivateMessage(object sender, CQPrivateMessageEventArgs e) { OnPrivateMessage?.Invoke(sender, e); }