fix: 删除的移除

This commit is contained in:
手瓜一十雪
2024-11-25 15:45:07 +08:00
parent 86cbdf793a
commit 93904dcb1b

View File

@@ -182,14 +182,19 @@ export class NapCatOneBot11Adapter {
this.context.logger.log(`[Notice] [OneBot11] 配置变更前:\n${prevLog}`); this.context.logger.log(`[Notice] [OneBot11] 配置变更前:\n${prevLog}`);
this.context.logger.log(`[Notice] [OneBot11] 配置变更后:\n${newLog}`); this.context.logger.log(`[Notice] [OneBot11] 配置变更后:\n${newLog}`);
await this.handleConfigChange(now.network.httpServers, OB11PassiveHttpAdapter); await this.handleConfigChange(prev.network.httpServers, now.network.httpServers, OB11PassiveHttpAdapter);
await this.handleConfigChange(now.network.httpClients, OB11ActiveHttpAdapter); await this.handleConfigChange(prev.network.httpClients, now.network.httpClients, OB11ActiveHttpAdapter);
await this.handleConfigChange(now.network.websocketServers, OB11PassiveWebSocketAdapter); await this.handleConfigChange(prev.network.websocketServers, now.network.websocketServers, OB11PassiveWebSocketAdapter);
await this.handleConfigChange(now.network.websocketClients, OB11ActiveWebSocketAdapter); await this.handleConfigChange(prev.network.websocketClients, now.network.websocketClients, OB11ActiveWebSocketAdapter);
} }
private async handleConfigChange(adapters: NetworkConfigAdapter[], adapterClass: new (...args: any[]) => IOB11NetworkAdapter): Promise<void> { private async handleConfigChange(
for (const adapterConfig of adapters) { prevConfig: NetworkConfigAdapter[],
nowConfig: NetworkConfigAdapter[],
adapterClass: new (...args: any[]) => IOB11NetworkAdapter
): Promise<void> {
// 通知新配置重载 删除关闭的 加入新开的
for (const adapterConfig of nowConfig) {
const existingAdapter = this.networkManager.findSomeAdapter(adapterConfig.name); const existingAdapter = this.networkManager.findSomeAdapter(adapterConfig.name);
if (existingAdapter) { if (existingAdapter) {
const networkChange = await existingAdapter.reload(adapterConfig); const networkChange = await existingAdapter.reload(adapterConfig);
@@ -201,6 +206,16 @@ export class NapCatOneBot11Adapter {
await this.networkManager.registerAdapterAndOpen(newAdapter); await this.networkManager.registerAdapterAndOpen(newAdapter);
} }
} }
// 比较旧的找不到的回收
for (const adapterConfig of prevConfig) {
const existingAdapter = nowConfig.find((e) => e.name === adapterConfig.name);
if (!existingAdapter) {
const existingAdapter = this.networkManager.findSomeAdapter(adapterConfig.name);
if (existingAdapter) {
await this.networkManager.closeSomeAdaterWhenOpen([existingAdapter]);
}
}
}
} }
private initMsgListener() { private initMsgListener() {