/// <summary> /// 请求事件处理和分发 /// </summary> /// <param name="messageJson">消息</param> /// <param name="connection">连接GUID</param> private async void RequestAdapter(JObject messageJson, Guid connection) { switch (GetRequestType(messageJson)) { //好友请求事件 case "friend": { ApiFriendRequestEventArgs friendRequest = messageJson.ToObject <ApiFriendRequestEventArgs>(); if (friendRequest == null) { break; } Log.Debug("Sora", $"Friend request form [{friendRequest.UserId}] with commont[{friendRequest.Comment}] | flag[{friendRequest.Flag}]"); //执行回调 if (OnFriendRequest == null) { break; } await OnFriendRequest("Request", new FriendRequestEventArgs(connection, "request|friend", friendRequest)); break; } //群组请求事件 case "group": { if (messageJson.TryGetValue("sub_type", out JToken sub) && sub.ToString().Equals("notice")) { Log.Warning("Sora", "收到notice消息类型,不解析此类型消息"); break; } ApiGroupRequestEventArgs groupRequest = messageJson.ToObject <ApiGroupRequestEventArgs>(); if (groupRequest == null) { break; } Log.Debug("Sora", $"Group request [{groupRequest.GroupRequestType}] form [{groupRequest.UserId}] with commont[{groupRequest.Comment}] | flag[{groupRequest.Flag}]"); //执行回调 if (OnGroupRequest == null) { break; } await OnGroupRequest("Request", new AddGroupRequestEventArgs(connection, "request|group", groupRequest)); break; } default: Log.Warning("Sora|Request", $"接收到未知事件[{GetRequestType(messageJson)}]"); break; } }
/// <summary> /// 初始化 /// </summary> /// <param name="connectionGuid">服务器链接标识</param> /// <param name="eventName">事件名</param> /// <param name="friendRequestArgs">好友申请事件参数</param> internal FriendRequestEventArgs(Guid connectionGuid, string eventName, ApiFriendRequestEventArgs friendRequestArgs) : base(connectionGuid, eventName, friendRequestArgs.SelfID, friendRequestArgs.Time) { this.Sender = new User(connectionGuid, friendRequestArgs.UserId); this.Comment = friendRequestArgs.Comment; this.RequsetFlag = friendRequestArgs.Flag; }