Download src/slack/message-actions.ts from Darochin/openskynet: direct link, hf CLI and curl.
- Browser
- Download file 1.93 kB
-
https://huggingface.co/Darochin/openskynet/resolve/main/src/slack/message-actions.ts
- Command line
-
hf download hf://Darochin/openskynet/src/slack/message-actions.ts
-
curl -L -o message-actions.ts https://huggingface.co/Darochin/openskynet/resolve/main/src/slack/message-actions.ts
1.93 kB
| import { createActionGate } from "../agents/tools/common.js"; | |
| import type { ChannelMessageActionName, ChannelToolSend } from "../channels/plugins/types.js"; | |
| import type { OpenClawConfig } from "../config/config.js"; | |
| import { listEnabledSlackAccounts } from "./accounts.js"; | |
| export function listSlackMessageActions(cfg: OpenClawConfig): ChannelMessageActionName[] { | |
| const accounts = listEnabledSlackAccounts(cfg).filter( | |
| (account) => account.botTokenSource !== "none", | |
| ); | |
| if (accounts.length === 0) { | |
| return []; | |
| } | |
| const isActionEnabled = (key: string, defaultValue = true) => { | |
| for (const account of accounts) { | |
| const gate = createActionGate( | |
| (account.actions ?? cfg.channels?.slack?.actions) as Record<string, boolean | undefined>, | |
| ); | |
| if (gate(key, defaultValue)) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| }; | |
| const actions = new Set<ChannelMessageActionName>(["send"]); | |
| if (isActionEnabled("reactions")) { | |
| actions.add("react"); | |
| actions.add("reactions"); | |
| } | |
| if (isActionEnabled("messages")) { | |
| actions.add("read"); | |
| actions.add("edit"); | |
| actions.add("delete"); | |
| actions.add("download-file"); | |
| } | |
| if (isActionEnabled("pins")) { | |
| actions.add("pin"); | |
| actions.add("unpin"); | |
| actions.add("list-pins"); | |
| } | |
| if (isActionEnabled("memberInfo")) { | |
| actions.add("member-info"); | |
| } | |
| if (isActionEnabled("emojiList")) { | |
| actions.add("emoji-list"); | |
| } | |
| return Array.from(actions); | |
| } | |
| export function extractSlackToolSend(args: Record<string, unknown>): ChannelToolSend | null { | |
| const action = typeof args.action === "string" ? args.action.trim() : ""; | |
| if (action !== "sendMessage") { | |
| return null; | |
| } | |
| const to = typeof args.to === "string" ? args.to : undefined; | |
| if (!to) { | |
| return null; | |
| } | |
| const accountId = typeof args.accountId === "string" ? args.accountId.trim() : undefined; | |
| return { to, accountId }; | |
| } | |