fix(discord): honor threadId for thread-reply
This commit is contained in:
@@ -127,4 +127,30 @@ describe("handleDiscordMessageAction", () => {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("accepts threadId for thread replies (tool compatibility)", async () => {
|
||||||
|
sendMessageDiscord.mockClear();
|
||||||
|
const handleDiscordMessageAction = await loadHandleDiscordMessageAction();
|
||||||
|
|
||||||
|
await handleDiscordMessageAction({
|
||||||
|
action: "thread-reply",
|
||||||
|
params: {
|
||||||
|
// The `message` tool uses `threadId`.
|
||||||
|
threadId: "999",
|
||||||
|
// Include a conflicting channelId to ensure threadId takes precedence.
|
||||||
|
channelId: "123",
|
||||||
|
message: "hi",
|
||||||
|
},
|
||||||
|
cfg: {} as ClawdbotConfig,
|
||||||
|
accountId: "ops",
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(sendMessageDiscord).toHaveBeenCalledWith(
|
||||||
|
"channel:999",
|
||||||
|
"hi",
|
||||||
|
expect.objectContaining({
|
||||||
|
accountId: "ops",
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -393,11 +393,17 @@ export async function tryHandleDiscordMessageActionGuildAdmin(params: {
|
|||||||
});
|
});
|
||||||
const mediaUrl = readStringParam(actionParams, "media", { trim: false });
|
const mediaUrl = readStringParam(actionParams, "media", { trim: false });
|
||||||
const replyTo = readStringParam(actionParams, "replyTo");
|
const replyTo = readStringParam(actionParams, "replyTo");
|
||||||
|
|
||||||
|
// `message.thread-reply` (tool) uses `threadId`, while the CLI historically used `to`/`channelId`.
|
||||||
|
// Prefer `threadId` when present to avoid accidentally replying in the parent channel.
|
||||||
|
const threadId = readStringParam(actionParams, "threadId");
|
||||||
|
const channelId = threadId ?? resolveChannelId();
|
||||||
|
|
||||||
return await handleDiscordAction(
|
return await handleDiscordAction(
|
||||||
{
|
{
|
||||||
action: "threadReply",
|
action: "threadReply",
|
||||||
accountId: accountId ?? undefined,
|
accountId: accountId ?? undefined,
|
||||||
channelId: resolveChannelId(),
|
channelId,
|
||||||
content,
|
content,
|
||||||
mediaUrl: mediaUrl ?? undefined,
|
mediaUrl: mediaUrl ?? undefined,
|
||||||
replyTo: replyTo ?? undefined,
|
replyTo: replyTo ?? undefined,
|
||||||
|
|||||||
Reference in New Issue
Block a user