fix: handle discord dm reaction allowlist
This commit is contained in:
parent
f8c7ae9b5e
commit
fb8e6156ec
@ -836,6 +836,22 @@ describe("discord DM reaction handling", () => {
|
|||||||
expect(opts.sessionKey).toBe("discord:acc-1:dm:user-1");
|
expect(opts.sessionKey).toBe("discord:acc-1:dm:user-1");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("does not drop DM reactions when guild allowlist is configured", async () => {
|
||||||
|
enqueueSystemEventSpy.mockClear();
|
||||||
|
resolveAgentRouteMock.mockClear();
|
||||||
|
|
||||||
|
const data = makeReactionEvent({ botAsAuthor: true });
|
||||||
|
const client = makeReactionClient(ChannelType.DM);
|
||||||
|
const guildEntries = makeEntries({
|
||||||
|
"guild-123": { slug: "guild-123" },
|
||||||
|
});
|
||||||
|
const listener = new DiscordReactionListener(makeReactionListenerParams({ guildEntries }));
|
||||||
|
|
||||||
|
await listener.handle(data, client);
|
||||||
|
|
||||||
|
expect(enqueueSystemEventSpy).toHaveBeenCalledOnce();
|
||||||
|
});
|
||||||
|
|
||||||
it("still processes guild reactions (no regression)", async () => {
|
it("still processes guild reactions (no regression)", async () => {
|
||||||
enqueueSystemEventSpy.mockClear();
|
enqueueSystemEventSpy.mockClear();
|
||||||
resolveAgentRouteMock.mockClear();
|
resolveAgentRouteMock.mockClear();
|
||||||
@ -877,7 +893,7 @@ describe("discord DM reaction handling", () => {
|
|||||||
expect(text).not.toContain("undefined");
|
expect(text).not.toContain("undefined");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("routes DM reactions with peer kind 'dm' and user id", async () => {
|
it("routes DM reactions with peer kind 'direct' and user id", async () => {
|
||||||
enqueueSystemEventSpy.mockClear();
|
enqueueSystemEventSpy.mockClear();
|
||||||
resolveAgentRouteMock.mockClear();
|
resolveAgentRouteMock.mockClear();
|
||||||
|
|
||||||
|
|||||||
@ -188,11 +188,14 @@ async function handleDiscordReactionEvent(params: {
|
|||||||
if (!user || user.bot) {
|
if (!user || user.bot) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const guildInfo = resolveDiscordGuildEntry({
|
const isGuildMessage = Boolean(data.guild_id);
|
||||||
guild: data.guild ?? undefined,
|
const guildInfo = isGuildMessage
|
||||||
guildEntries,
|
? resolveDiscordGuildEntry({
|
||||||
});
|
guild: data.guild ?? undefined,
|
||||||
if (guildEntries && Object.keys(guildEntries).length > 0 && !guildInfo) {
|
guildEntries,
|
||||||
|
})
|
||||||
|
: null;
|
||||||
|
if (isGuildMessage && guildEntries && Object.keys(guildEntries).length > 0 && !guildInfo) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,7 +264,9 @@ async function handleDiscordReactionEvent(params: {
|
|||||||
const actorLabel = formatDiscordUserTag(user);
|
const actorLabel = formatDiscordUserTag(user);
|
||||||
const guildSlug =
|
const guildSlug =
|
||||||
guildInfo?.slug ||
|
guildInfo?.slug ||
|
||||||
(data.guild?.name ? normalizeDiscordSlug(data.guild.name) : (data.guild_id ?? "dm"));
|
(data.guild?.name
|
||||||
|
? normalizeDiscordSlug(data.guild.name)
|
||||||
|
: (data.guild_id ?? (isGroupDm ? "group-dm" : "dm")));
|
||||||
const channelLabel = channelSlug
|
const channelLabel = channelSlug
|
||||||
? `#${channelSlug}`
|
? `#${channelSlug}`
|
||||||
: channelName
|
: channelName
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user