openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
91 lines (90 loc) • 3.53 kB
JavaScript
import { t as resolveCommandAuthorizedFromAuthorizers } from "./command-gating-65fgTdwb.js";
import { i as resolveOpenProviderRuntimeGroupPolicy } from "./runtime-group-policy-CSD1Is8G.js";
import "./command-auth-native-D4ML0UKp.js";
import { c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, f as resolveDiscordMemberAccessState, m as resolveDiscordOwnerAccess, n as isDiscordGroupAllowedByPolicy } from "./allow-list-CBhA2l4a.js";
//#region extensions/discord/src/voice/config.ts
function resolveDiscordVoiceEnabled(voice) {
if (voice?.enabled !== void 0) return voice.enabled;
return voice !== void 0;
}
//#endregion
//#region extensions/discord/src/voice/access.ts
async function authorizeDiscordVoiceIngress(params) {
const groupPolicy = params.groupPolicy ?? resolveOpenProviderRuntimeGroupPolicy({
providerConfigPresent: params.cfg.channels?.discord !== void 0,
groupPolicy: params.discordConfig.groupPolicy,
defaultGroupPolicy: params.cfg.channels?.defaults?.groupPolicy
}).groupPolicy;
const guildInfo = resolveDiscordGuildEntry({
guild: params.guild ?? {
id: params.guildId,
...params.guildName ? { name: params.guildName } : {}
},
guildId: params.guildId,
guildEntries: params.discordConfig.guilds
});
const channelConfig = params.channelId ? resolveDiscordChannelConfigWithFallback({
guildInfo,
channelId: params.channelId,
channelName: params.channelName,
channelSlug: params.channelSlug,
parentId: params.parentId,
parentName: params.parentName,
parentSlug: params.parentSlug,
scope: params.scope
}) : null;
if (channelConfig?.enabled === false) return {
ok: false,
message: "This channel is disabled."
};
const channelAllowlistConfigured = Boolean(guildInfo?.channels) && Object.keys(guildInfo?.channels ?? {}).length > 0;
if (!params.channelId && groupPolicy === "allowlist" && channelAllowlistConfigured) return {
ok: false,
message: `${params.channelLabel ?? "This channel"} is not allowlisted for voice commands.`
};
const channelAllowed = channelConfig ? channelConfig.allowed : !channelAllowlistConfigured;
if (!isDiscordGroupAllowedByPolicy({
groupPolicy,
guildAllowlisted: Boolean(guildInfo),
channelAllowlistConfigured,
channelAllowed
}) || channelConfig?.allowed === false) return {
ok: false,
message: `${params.channelLabel ?? "This channel"} is not allowlisted for voice commands.`
};
const { hasAccessRestrictions, memberAllowed } = resolveDiscordMemberAccessState({
channelConfig,
guildInfo,
memberRoleIds: params.memberRoleIds,
sender: params.sender,
allowNameMatching: false
});
const { ownerAllowList, ownerAllowed } = resolveDiscordOwnerAccess({
allowFrom: params.ownerAllowFrom ?? params.discordConfig.allowFrom ?? params.discordConfig.dm?.allowFrom,
sender: params.sender,
allowNameMatching: false
});
const useAccessGroups = params.useAccessGroups ?? params.cfg.commands?.useAccessGroups !== false;
return resolveCommandAuthorizedFromAuthorizers({
useAccessGroups,
authorizers: useAccessGroups ? [{
configured: ownerAllowList != null,
allowed: ownerAllowed
}, {
configured: hasAccessRestrictions,
allowed: memberAllowed
}] : [{
configured: hasAccessRestrictions,
allowed: memberAllowed
}],
modeWhenAccessGroupsOff: "configured"
}) ? {
ok: true,
channelConfig
} : {
ok: false,
message: "You are not authorized to use this command."
};
}
//#endregion
export { resolveDiscordVoiceEnabled as n, authorizeDiscordVoiceIngress as t };