refactor(channels): dedupe discord channel lookup

This commit is contained in:
Peter Steinberger
2026-02-15 16:42:20 +00:00
parent 94eb50658d
commit b4f16001aa

View File

@@ -120,6 +120,24 @@ function resolveDiscordGuildEntry(guilds: DiscordConfig["guilds"], groupSpace?:
return guilds["*"] ?? null; return guilds["*"] ?? null;
} }
function resolveDiscordChannelEntry<TEntry>(
channelEntries: Record<string, TEntry> | undefined,
params: { groupId?: string | null; groupChannel?: string | null },
): TEntry | undefined {
if (!channelEntries || Object.keys(channelEntries).length === 0) {
return undefined;
}
const groupChannel = params.groupChannel;
const channelSlug = normalizeDiscordSlug(groupChannel);
return (
(params.groupId ? channelEntries[params.groupId] : undefined) ??
(channelSlug
? (channelEntries[channelSlug] ?? channelEntries[`#${channelSlug}`])
: undefined) ??
(groupChannel ? channelEntries[normalizeDiscordSlug(groupChannel)] : undefined)
);
}
export function resolveTelegramGroupRequireMention( export function resolveTelegramGroupRequireMention(
params: GroupMentionParams, params: GroupMentionParams,
): boolean | undefined { ): boolean | undefined {
@@ -165,14 +183,7 @@ export function resolveDiscordGroupRequireMention(params: GroupMentionParams): b
); );
const channelEntries = guildEntry?.channels; const channelEntries = guildEntry?.channels;
if (channelEntries && Object.keys(channelEntries).length > 0) { if (channelEntries && Object.keys(channelEntries).length > 0) {
const groupChannel = params.groupChannel; const entry = resolveDiscordChannelEntry(channelEntries, params);
const channelSlug = normalizeDiscordSlug(groupChannel);
const entry =
(params.groupId ? channelEntries[params.groupId] : undefined) ??
(channelSlug
? (channelEntries[channelSlug] ?? channelEntries[`#${channelSlug}`])
: undefined) ??
(groupChannel ? channelEntries[normalizeDiscordSlug(groupChannel)] : undefined);
if (entry && typeof entry.requireMention === "boolean") { if (entry && typeof entry.requireMention === "boolean") {
return entry.requireMention; return entry.requireMention;
} }
@@ -306,14 +317,7 @@ export function resolveDiscordGroupToolPolicy(
); );
const channelEntries = guildEntry?.channels; const channelEntries = guildEntry?.channels;
if (channelEntries && Object.keys(channelEntries).length > 0) { if (channelEntries && Object.keys(channelEntries).length > 0) {
const groupChannel = params.groupChannel; const entry = resolveDiscordChannelEntry(channelEntries, params);
const channelSlug = normalizeDiscordSlug(groupChannel);
const entry =
(params.groupId ? channelEntries[params.groupId] : undefined) ??
(channelSlug
? (channelEntries[channelSlug] ?? channelEntries[`#${channelSlug}`])
: undefined) ??
(groupChannel ? channelEntries[normalizeDiscordSlug(groupChannel)] : undefined);
const senderPolicy = resolveToolsBySender({ const senderPolicy = resolveToolsBySender({
toolsBySender: entry?.toolsBySender, toolsBySender: entry?.toolsBySender,
senderId: params.senderId, senderId: params.senderId,