diff --git a/src/provider-web.test.ts b/src/provider-web.test.ts index 898e739c8..c9aae12e1 100644 --- a/src/provider-web.test.ts +++ b/src/provider-web.test.ts @@ -153,6 +153,7 @@ describe("provider-web", () => { const listener = await monitorWebInbox({ verbose: false, onMessage }); const sock = getLastSocket(); + expect(sock.sendPresenceUpdate).toHaveBeenCalledWith("available"); const upsert = { type: "notify", messages: [ @@ -174,10 +175,8 @@ describe("provider-web", () => { expect(sock.readMessages).toHaveBeenCalledWith([ { remoteJid: "999@s.whatsapp.net", id: "abc", participant: undefined, fromMe: false }, ]); - expect(sock.sendPresenceUpdate).toHaveBeenCalledWith( - "composing", - "999@s.whatsapp.net", - ); + expect(sock.sendPresenceUpdate).toHaveBeenCalledWith("available"); + expect(sock.sendPresenceUpdate).toHaveBeenCalledWith("composing", "999@s.whatsapp.net"); expect(sock.sendMessage).toHaveBeenCalledWith("999@s.whatsapp.net", { text: "pong", }); @@ -218,6 +217,7 @@ describe("provider-web", () => { fromMe: false, }, ]); + expect(sock.sendPresenceUpdate).toHaveBeenCalledWith("available"); await listener.close(); }); diff --git a/src/provider-web.ts b/src/provider-web.ts index 91bf8f638..6b86e3454 100644 --- a/src/provider-web.ts +++ b/src/provider-web.ts @@ -243,6 +243,13 @@ export async function monitorWebInbox(options: { }) { const sock = await createWaSocket(false, options.verbose); await waitForWaConnection(sock); + try { + // Advertise that the relay is online right after connecting. + await sock.sendPresenceUpdate("available"); + if (isVerbose()) logVerbose("Sent global 'available' presence on connect"); + } catch (err) { + logVerbose(`Failed to send 'available' presence on connect: ${String(err)}`); + } const selfJid = sock.user?.id; const selfE164 = selfJid ? jidToE164(selfJid) : null; const seen = new Set();