mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-20 22:40:58 +00:00
54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
|
|
import {
|
|
createScopedAccountConfigAccessors,
|
|
createScopedChannelConfigBase,
|
|
} from "openclaw/plugin-sdk/channel-config-helpers";
|
|
import type { OpenClawConfig } from "openclaw/plugin-sdk/slack";
|
|
import { inspectSlackAccount } from "./account-inspect.js";
|
|
import {
|
|
listSlackAccountIds,
|
|
resolveDefaultSlackAccountId,
|
|
resolveSlackAccount,
|
|
type ResolvedSlackAccount,
|
|
} from "./accounts.js";
|
|
import { createSlackSetupWizardProxy } from "./setup-core.js";
|
|
|
|
async function loadSlackChannelRuntime() {
|
|
return await import("./channel.runtime.js");
|
|
}
|
|
|
|
export function isSlackAccountConfigured(account: ResolvedSlackAccount): boolean {
|
|
const mode = account.config.mode ?? "socket";
|
|
const hasBotToken = Boolean(account.botToken?.trim());
|
|
if (!hasBotToken) {
|
|
return false;
|
|
}
|
|
if (mode === "http") {
|
|
return Boolean(account.config.signingSecret?.trim());
|
|
}
|
|
return Boolean(account.appToken?.trim());
|
|
}
|
|
|
|
export const isSlackPluginAccountConfigured = isSlackAccountConfigured;
|
|
|
|
export const slackConfigAccessors = createScopedAccountConfigAccessors({
|
|
resolveAccount: ({ cfg, accountId }: { cfg: OpenClawConfig; accountId?: string | null }) =>
|
|
resolveSlackAccount({ cfg, accountId }),
|
|
resolveAllowFrom: (account: ResolvedSlackAccount) => account.dm?.allowFrom,
|
|
formatAllowFrom: (allowFrom) => formatAllowFromLowercase({ allowFrom }),
|
|
resolveDefaultTo: (account: ResolvedSlackAccount) => account.config.defaultTo,
|
|
});
|
|
|
|
export const slackConfigBase = createScopedChannelConfigBase({
|
|
sectionKey: "slack",
|
|
listAccountIds: listSlackAccountIds,
|
|
resolveAccount: (cfg, accountId) => resolveSlackAccount({ cfg, accountId }),
|
|
inspectAccount: (cfg, accountId) => inspectSlackAccount({ cfg, accountId }),
|
|
defaultAccountId: resolveDefaultSlackAccountId,
|
|
clearBaseFields: ["botToken", "appToken", "name"],
|
|
});
|
|
|
|
export const slackSetupWizard = createSlackSetupWizardProxy(async () => ({
|
|
slackSetupWizard: (await loadSlackChannelRuntime()).slackSetupWizard,
|
|
}));
|