diff --git a/src/modules/qqbot/plugins/bilibili-card/src/infrastructure/integration/bilibili-card-host.ts b/src/modules/qqbot/plugins/bilibili-card/src/infrastructure/integration/bilibili-card-host.ts index a47acf8..76f645b 100644 --- a/src/modules/qqbot/plugins/bilibili-card/src/infrastructure/integration/bilibili-card-host.ts +++ b/src/modules/qqbot/plugins/bilibili-card/src/infrastructure/integration/bilibili-card-host.ts @@ -60,8 +60,9 @@ export function createBilibiliCardGenericHostAdapter( * @param message - Warning message safe for platform logs. */ warn: (message) => { - const warn = host.warn; - if (typeof warn === 'function') warn(message); + void callBilibiliCardGenericHost(host, 'warn', message).catch( + () => undefined, + ); }, }; } diff --git a/test/modules/qqbot/plugins/bilibili-card/bilibili-video-client.spec.ts b/test/modules/qqbot/plugins/bilibili-card/bilibili-video-client.spec.ts index 6ecd55e..472ad4b 100644 --- a/test/modules/qqbot/plugins/bilibili-card/bilibili-video-client.spec.ts +++ b/test/modules/qqbot/plugins/bilibili-card/bilibili-video-client.spec.ts @@ -1,6 +1,7 @@ import { readBilibiliCardRuntimeConfig } from '../../../../../src/modules/qqbot/plugins/bilibili-card/src/config/bilibili-card-config'; import type { BilibiliCardPluginHost } from '../../../../../src/modules/qqbot/plugins/bilibili-card/src/domain/bilibili-card.types'; import { formatBilibiliVideoReply } from '../../../../../src/modules/qqbot/plugins/bilibili-card/src/domain/bilibili-reply-formatter'; +import { createBilibiliCardGenericHostAdapter } from '../../../../../src/modules/qqbot/plugins/bilibili-card/src/infrastructure/integration/bilibili-card-host'; import { BilibiliVideoClient } from '../../../../../src/modules/qqbot/plugins/bilibili-card/src/infrastructure/integration/bilibili-video-client'; describe('Bilibili video client', () => { @@ -147,6 +148,19 @@ describe('Bilibili video client', () => { maxRedirects: 10, }); }); + + it('emits generic host warnings without surfacing rejected log calls', async () => { + const host = { + warn: jest.fn().mockRejectedValue(new Error('log down')), + }; + const adapter = createBilibiliCardGenericHostAdapter(host, {}); + + adapter.warn?.('hello'); + await Promise.resolve(); + await Promise.resolve(); + + expect(host.warn).toHaveBeenCalledWith('hello'); + }); }); /**