mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 21:31:35 +00:00
fix(hooks): include guildId and channelName in message_received metadata (#26115)
* fix(hooks): include guildId and channelName in message_received metadata The message_received hook (both plugin and internal) already exposes sender identity fields (senderId, senderName, senderUsername, senderE164) but omits the guild/channel context. Plugins that track per-channel activity receive NULL values for channel identification. Add guildId (ctx.GroupSpace) and channelName (ctx.GroupChannel) to the metadata block in both the plugin hook and internal hook dispatch paths. These properties are already populated by channel providers (e.g. Discord sets GroupSpace to the guild ID and GroupChannel to #channel-name) and used elsewhere in the codebase (channels/conversation-label.ts). * test: cover guild/channel hook metadata propagation (#26115) (thanks @davidrudduck) --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
This commit is contained in:
@@ -407,6 +407,8 @@ describe("dispatchReplyFromConfig", () => {
|
||||
SenderUsername: "alice",
|
||||
SenderE164: "+15555550123",
|
||||
AccountId: "acc-1",
|
||||
GroupSpace: "guild-123",
|
||||
GroupChannel: "alerts",
|
||||
});
|
||||
|
||||
const replyResolver = async () => ({ text: "hi" }) satisfies ReplyPayload;
|
||||
@@ -425,6 +427,8 @@ describe("dispatchReplyFromConfig", () => {
|
||||
senderName: "Alice",
|
||||
senderUsername: "alice",
|
||||
senderE164: "+15555550123",
|
||||
guildId: "guild-123",
|
||||
channelName: "alerts",
|
||||
}),
|
||||
}),
|
||||
expect.objectContaining({
|
||||
@@ -445,6 +449,8 @@ describe("dispatchReplyFromConfig", () => {
|
||||
SessionKey: "agent:main:main",
|
||||
CommandBody: "/help",
|
||||
MessageSid: "msg-42",
|
||||
GroupSpace: "guild-456",
|
||||
GroupChannel: "ops-room",
|
||||
});
|
||||
|
||||
const replyResolver = async () => ({ text: "hi" }) satisfies ReplyPayload;
|
||||
@@ -459,6 +465,10 @@ describe("dispatchReplyFromConfig", () => {
|
||||
content: "/help",
|
||||
channelId: "telegram",
|
||||
messageId: "msg-42",
|
||||
metadata: expect.objectContaining({
|
||||
guildId: "guild-456",
|
||||
channelName: "ops-room",
|
||||
}),
|
||||
}),
|
||||
);
|
||||
expect(internalHookMocks.triggerInternalHook).toHaveBeenCalledTimes(1);
|
||||
|
||||
@@ -187,6 +187,8 @@ export async function dispatchReplyFromConfig(params: {
|
||||
senderName: ctx.SenderName,
|
||||
senderUsername: ctx.SenderUsername,
|
||||
senderE164: ctx.SenderE164,
|
||||
guildId: ctx.GroupSpace,
|
||||
channelName: ctx.GroupChannel,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -220,6 +222,8 @@ export async function dispatchReplyFromConfig(params: {
|
||||
senderName: ctx.SenderName,
|
||||
senderUsername: ctx.SenderUsername,
|
||||
senderE164: ctx.SenderE164,
|
||||
guildId: ctx.GroupSpace,
|
||||
channelName: ctx.GroupChannel,
|
||||
},
|
||||
}),
|
||||
).catch((err) => {
|
||||
|
||||
Reference in New Issue
Block a user