Beispiel #1
0
        /// <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;
            }
        }
Beispiel #2
0
 /// <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;
 }