diff --git a/extensions/discord/src/actions/runtime.messaging.ts b/extensions/discord/src/actions/runtime.messaging.ts index 396244c8e39..d0d13190708 100644 --- a/extensions/discord/src/actions/runtime.messaging.ts +++ b/extensions/discord/src/actions/runtime.messaging.ts @@ -1,4 +1,5 @@ import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import { resolveDefaultDiscordAccountId } from "../accounts.js"; import { createDiscordRuntimeAccountContext } from "../client.js"; import { readDiscordComponentSpec } from "../components.js"; import { @@ -112,7 +113,7 @@ export async function handleDiscordMessagingAction( const reactionRuntimeOptions = cfg ? createDiscordRuntimeAccountContext({ cfg, - accountId: accountId ?? "default", + accountId: accountId ?? resolveDefaultDiscordAccountId(cfg), }) : accountId ? { accountId } diff --git a/extensions/discord/src/actions/runtime.test.ts b/extensions/discord/src/actions/runtime.test.ts index 8eeff67dc14..0f42089bdec 100644 --- a/extensions/discord/src/actions/runtime.test.ts +++ b/extensions/discord/src/actions/runtime.test.ts @@ -131,6 +131,36 @@ describe("handleDiscordMessagingAction", () => { expect(reactMessageDiscord).toHaveBeenCalledWith("C1", "M1", "✅", {}); }); + it("uses configured defaultAccount when cfg is provided and accountId is omitted", async () => { + await handleDiscordMessagingAction( + "react", + { + channelId: "C1", + messageId: "M1", + emoji: "✅", + }, + enableAllActions, + undefined, + { + channels: { + discord: { + defaultAccount: "work", + accounts: { + work: { token: "token-work" }, + }, + }, + }, + } as OpenClawConfig, + ); + + expect(reactMessageDiscord).toHaveBeenCalledWith( + "C1", + "M1", + "✅", + expect.objectContaining({ accountId: "work" }), + ); + }); + it("removes reactions on empty emoji", async () => { await handleDiscordMessagingAction( "react",