fix: honor discord account guild policy config

This commit is contained in:
Tak Hoffman
2026-04-03 10:24:31 -05:00
parent 745aa26420
commit dae0400a8f
2 changed files with 72 additions and 1 deletions

View File

@@ -76,8 +76,12 @@ function resolveSenderToolsEntry(
}
function resolveDiscordPolicyContext(params: ChannelGroupContext) {
const guilds =
(params.accountId
? params.cfg.channels?.discord?.accounts?.[params.accountId]?.guilds
: undefined) ?? params.cfg.channels?.discord?.guilds;
const guildEntry = resolveDiscordGuildEntry(
params.cfg.channels?.discord?.guilds,
guilds,
params.groupSpace,
);
const channelEntries = guildEntry?.channels;

View File

@@ -182,4 +182,71 @@ describe("discord group policy", () => {
}),
).toEqual({ allow: ["message.guild"] });
});
it("honors account-scoped guild and channel overrides", () => {
const discordCfg = {
channels: {
discord: {
token: "discord-test",
guilds: {
guild1: {
requireMention: true,
tools: { allow: ["message.root"] },
},
},
accounts: {
work: {
token: "discord-work",
guilds: {
guild1: {
requireMention: false,
tools: { allow: ["message.account"] },
channels: {
"123": {
requireMention: true,
tools: { allow: ["message.account-channel"] },
},
},
},
},
},
},
},
},
// oxlint-disable-next-line typescript/no-explicit-any
} as any;
expect(
resolveDiscordGroupRequireMention({
cfg: discordCfg,
accountId: "work",
groupSpace: "guild1",
groupId: "missing",
}),
).toBe(false);
expect(
resolveDiscordGroupRequireMention({
cfg: discordCfg,
accountId: "work",
groupSpace: "guild1",
groupId: "123",
}),
).toBe(true);
expect(
resolveDiscordGroupToolPolicy({
cfg: discordCfg,
accountId: "work",
groupSpace: "guild1",
groupId: "missing",
}),
).toEqual({ allow: ["message.account"] });
expect(
resolveDiscordGroupToolPolicy({
cfg: discordCfg,
accountId: "work",
groupSpace: "guild1",
groupId: "123",
}),
).toEqual({ allow: ["message.account-channel"] });
});
});