openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
45 lines (44 loc) • 2.09 kB
JavaScript
import { n as normalizeAccountId } from "./account-id-Df9e41E6.js";
import { i as createResolvedDirectoryEntriesLister } from "./directory-config-helpers-DEDTHx2P.js";
import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, o as resolveDefaultDiscordAccountId } from "./accounts-BI_6uJlY.js";
//#region extensions/discord/src/directory-config.ts
function resolveDiscordDirectoryConfigAccount(cfg, accountId) {
const resolvedAccountId = normalizeAccountId(accountId ?? resolveDefaultDiscordAccountId(cfg));
const config = mergeDiscordAccountConfig(cfg, resolvedAccountId);
return {
accountId: resolvedAccountId,
config,
allowFrom: resolveDiscordAccountAllowFrom({
cfg,
accountId: resolvedAccountId
}) ?? [],
dm: config.dm
};
}
const listDiscordDirectoryPeersFromConfig = createResolvedDirectoryEntriesLister({
kind: "user",
resolveAccount: (cfg, accountId) => resolveDiscordDirectoryConfigAccount(cfg, accountId),
resolveSources: (account) => {
const guildUsers = Object.values(account.config.guilds ?? {}).flatMap((guild) => (guild.users ?? []).concat(Object.values(guild.channels ?? {}).flatMap((channel) => channel.users ?? [])));
return [
account.allowFrom,
Object.keys(account.config.dms ?? {}),
guildUsers
];
},
normalizeId: (raw) => {
const cleaned = (raw.match(/^<@!?(\d+)>$/)?.[1] ?? raw).replace(/^(discord|user):/i, "").trim();
return /^\d+$/.test(cleaned) ? `user:${cleaned}` : null;
}
});
const listDiscordDirectoryGroupsFromConfig = createResolvedDirectoryEntriesLister({
kind: "group",
resolveAccount: (cfg, accountId) => resolveDiscordDirectoryConfigAccount(cfg, accountId),
resolveSources: (account) => Object.values(account.config.guilds ?? {}).map((guild) => Object.keys(guild.channels ?? {})),
normalizeId: (raw) => {
const cleaned = (raw.match(/^<#(\d+)>$/)?.[1] ?? raw).replace(/^(discord|channel|group):/i, "").trim();
return /^\d+$/.test(cleaned) ? `channel:${cleaned}` : null;
}
});
//#endregion
export { listDiscordDirectoryPeersFromConfig as n, listDiscordDirectoryGroupsFromConfig as t };