/// <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="groupRequestArgs">加群申请事件参数</param> internal AddGroupRequestEventArgs(Guid connectionGuid, string eventName, ApiGroupRequestEventArgs groupRequestArgs) : base(connectionGuid, eventName, groupRequestArgs.SelfID, groupRequestArgs.Time) { this.Sender = new User(connectionGuid, groupRequestArgs.UserId); this.SourceGroup = new Group(connectionGuid, groupRequestArgs.GroupId); this.Comment = groupRequestArgs.Comment; this.RequsetFlag = groupRequestArgs.Flag; this.SubType = groupRequestArgs.GroupRequestType; }