From f7da963fa86366635e68b742bbf32bb4b87be46d Mon Sep 17 00:00:00 2001 From: scoootscooob Date: Fri, 20 Mar 2026 21:54:46 -0700 Subject: [PATCH] Discord: clarify startup readiness log --- extensions/discord/src/monitor/provider.ts | 8 ++++- .../src/monitor/startup-status.test.ts | 30 +++++++++++++++++++ .../discord/src/monitor/startup-status.ts | 10 +++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 extensions/discord/src/monitor/startup-status.test.ts create mode 100644 extensions/discord/src/monitor/startup-status.ts diff --git a/extensions/discord/src/monitor/provider.ts b/extensions/discord/src/monitor/provider.ts index 523f7c54c36..8388438f37d 100644 --- a/extensions/discord/src/monitor/provider.ts +++ b/extensions/discord/src/monitor/provider.ts @@ -92,6 +92,7 @@ import { resolveDiscordPresenceUpdate } from "./presence.js"; import { resolveDiscordAllowlistConfig } from "./provider.allowlist.js"; import { runDiscordGatewayLifecycle } from "./provider.lifecycle.js"; import { resolveDiscordRestFetch } from "./rest-fetch.js"; +import { formatDiscordStartupStatusMessage } from "./startup-status.js"; import type { DiscordMonitorStatusSink } from "./status.js"; import { createNoopThreadBindingManager, @@ -972,7 +973,12 @@ export async function monitorDiscordProvider(opts: MonitorDiscordOpts = {}) { const botIdentity = botUserId && botUserName ? `${botUserId} (${botUserName})` : (botUserId ?? botUserName ?? ""); - runtime.log?.(`logged in to discord${botIdentity ? ` as ${botIdentity}` : ""}`); + runtime.log?.( + formatDiscordStartupStatusMessage({ + gatewayReady: lifecycleGateway?.isConnected === true, + botIdentity: botIdentity || undefined, + }), + ); if (lifecycleGateway?.isConnected) { opts.setStatus?.(createConnectedChannelStatusPatch()); } diff --git a/extensions/discord/src/monitor/startup-status.test.ts b/extensions/discord/src/monitor/startup-status.test.ts new file mode 100644 index 00000000000..47cc84202d6 --- /dev/null +++ b/extensions/discord/src/monitor/startup-status.test.ts @@ -0,0 +1,30 @@ +import { describe, expect, it } from "vitest"; +import { formatDiscordStartupStatusMessage } from "./startup-status.js"; + +describe("formatDiscordStartupStatusMessage", () => { + it("reports logged-in status only after the gateway is ready", () => { + expect( + formatDiscordStartupStatusMessage({ + gatewayReady: true, + botIdentity: "bot-1 (Molty)", + }), + ).toBe("logged in to discord as bot-1 (Molty)"); + }); + + it("reports client initialization while gateway readiness is still pending", () => { + expect( + formatDiscordStartupStatusMessage({ + gatewayReady: false, + botIdentity: "bot-1 (Molty)", + }), + ).toBe("discord client initialized as bot-1 (Molty); awaiting gateway readiness"); + }); + + it("handles missing identity without awkward punctuation", () => { + expect( + formatDiscordStartupStatusMessage({ + gatewayReady: false, + }), + ).toBe("discord client initialized; awaiting gateway readiness"); + }); +}); diff --git a/extensions/discord/src/monitor/startup-status.ts b/extensions/discord/src/monitor/startup-status.ts new file mode 100644 index 00000000000..94f311912b8 --- /dev/null +++ b/extensions/discord/src/monitor/startup-status.ts @@ -0,0 +1,10 @@ +export function formatDiscordStartupStatusMessage(params: { + gatewayReady: boolean; + botIdentity?: string; +}): string { + const identitySuffix = params.botIdentity ? ` as ${params.botIdentity}` : ""; + if (params.gatewayReady) { + return `logged in to discord${identitySuffix}`; + } + return `discord client initialized${identitySuffix}; awaiting gateway readiness`; +}