diff --git a/packages/provider-baileys/__tests__/lifecycle.test.ts b/packages/provider-baileys/__tests__/lifecycle.test.ts index 316b54cd4..096613c91 100644 --- a/packages/provider-baileys/__tests__/lifecycle.test.ts +++ b/packages/provider-baileys/__tests__/lifecycle.test.ts @@ -331,6 +331,23 @@ describe('lifecycle review regressions', () => { qrSpy.mockRestore() }) + test('QR image generation failures emit a notice without rejecting the connection handler', async () => { + const utilsModule = require('../src/utils') + const error = new Error('QR write failed') + jest.spyOn(utilsModule, 'baileyGenerateImage').mockRejectedValue(error) + const emitSpy = jest.spyOn(provider, 'emit') + await provider['initVendor']() + const [onConnectionUpdate] = socket.ev.listeners('connection.update') + + await expect(onConnectionUpdate({ qr: '2@fake-qr-data' })).resolves.toBeUndefined() + expect(emitSpy).toHaveBeenCalledWith( + 'notice', + expect.objectContaining({ + instructions: expect.arrayContaining([expect.stringContaining('QR write failed')]), + }) + ) + }) + test('missing QR returns 404 and destroy closes a real HTTP listener and the log stream', async () => { provider['beforeHttpServerInit']() await new Promise((resolve) => provider.server.listen(0, resolve)) diff --git a/packages/provider-baileys/src/bailey.ts b/packages/provider-baileys/src/bailey.ts index d4ebec196..3e484ad2c 100644 --- a/packages/provider-baileys/src/bailey.ts +++ b/packages/provider-baileys/src/bailey.ts @@ -621,7 +621,16 @@ class BaileysProvider extends ProviderClass { ], payload: { qr }, }) - await baileyGenerateImage(qr, `${this.globalVendorArgs.name}.qr.png`) + try { + await baileyGenerateImage(qr, `${this.globalVendorArgs.name}.qr.png`) + } catch (error) { + const reason = error instanceof Error ? error.message : String(error) + this.logger.log(`[Baileys] QR image generation failed: ${reason}`) + this.emit('notice', { + title: 'QR CODE ERROR', + instructions: ['The QR code image could not be generated.', reason], + }) + } } })