/// <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; } }
/// <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; } }