/// <summary>
        /// 元事件处理和分发
        /// </summary>
        /// <param name="messageJson">消息</param>
        /// <param name="connection">连接GUID</param>
        private async void MetaAdapter(JObject messageJson, Guid connection)
        {
            switch (GetMetaEventType(messageJson))
            {
            //心跳包
            case "heartbeat":
                ApiHeartBeatEventArgs heartBeat = messageJson.ToObject <ApiHeartBeatEventArgs>();
                ConsoleLog.Debug("Sora", $"Get heartbeat from [{connection}]");
                //刷新心跳包记录
                if (heartBeat != null)
                {
                    ConnectionManager.HeartBeatUpdate(connection);
                }
                break;

            //生命周期
            case "lifecycle":
                ApiLifeCycleEventArgs lifeCycle = messageJson.ToObject <ApiLifeCycleEventArgs>();
                if (lifeCycle != null)
                {
                    ConsoleLog.Debug("Sore", $"Lifecycle event[{lifeCycle.SubType}] from [{connection}]");
                }

                (int retCode, string clientType, string clientVer) = await ApiInterface.GetClientInfo(connection);

                if (retCode != 0)     //检查返回值
                {
                    ConsoleLog.Error("Sora", $"获取客户端版本失败(retcode={retCode})");
                    break;
                }

                ConsoleLog.Info("Sora", $"已连接到{clientType}客户端,版本:{clientVer}");
                if (OnClientConnect == null)
                {
                    break;
                }
                //执行回调函数
                await OnClientConnect(typeof(EventInterface),
                                      new ConnectEventArgs(connection, "lifecycle",
                                                           lifeCycle?.SelfID ?? -1, clientType, clientVer,
                                                           lifeCycle?.Time ?? 0));

                break;

            default:
                ConsoleLog.Warning("Sora", $"接收到未知事件[{GetMetaEventType(messageJson)}]");
                break;
            }
        }
Beispiel #2
0
        /// <summary>
        /// 元事件处理和分发
        /// </summary>
        /// <param name="messageJson">消息</param>
        /// <param name="connection">连接GUID</param>
        private async void MetaAdapter(JObject messageJson, Guid connection)
        {
            switch (GetMetaEventType(messageJson))
            {
            //心跳包
            case "heartbeat":
            {
                ApiHeartBeatEventArgs heartBeat = messageJson.ToObject <ApiHeartBeatEventArgs>();
                Log.Debug("Sora", $"Get heartbeat from [{connection}]");
                //刷新心跳包记录
                if (heartBeat != null)
                {
                    ConnectionManager.HeartBeatUpdate(connection);
                }
                break;
            }

            //生命周期
            case "lifecycle":
            {
                ApiLifeCycleEventArgs lifeCycle = messageJson.ToObject <ApiLifeCycleEventArgs>();
                if (lifeCycle != null)
                {
                    Log.Debug("Sore", $"Lifecycle event[{lifeCycle.SubType}] from [{connection}]");
                }

                var(retCode, clientType, clientVer) = await ApiInterface.GetClientInfo(connection);

                if (retCode != 0)     //检查返回值
                {
                    Log.Error("Sora", $"获取onebot版本失败(retcode={retCode})");
                    break;
                }

                var(retCode2, uid, _) = await ApiInterface.GetLoginInfo(connection);

                if (retCode2 != 0)     //检查返回值
                {
                    Log.Error("Sora", $"获取uid失败(retcode={retCode2})");
                    break;
                }

                ConnectionManager.UpdateUid(connection, uid);

                Log.Info("Sora", $"已连接到{clientType},版本:{clientVer}");
                if (OnClientConnect == null)
                {
                    break;
                }
                //执行回调
                await OnClientConnect("Meta Event",
                                      new ConnectEventArgs(connection, "lifecycle",
                                                           lifeCycle?.SelfID ?? -1, clientType, clientVer,
                                                           lifeCycle?.Time ?? 0));

                break;
            }

            default:
                Log.Warning("Sora|Meta Event", $"接收到未知事件[{GetMetaEventType(messageJson)}]");
                break;
            }
        }