mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-29 19:01:44 +00:00
refactor(telegram): unify inline button capability parsing
This commit is contained in:
@@ -70,15 +70,10 @@ export const buildTelegramMessageContext = async ({
|
||||
const isGroup = msg.chat.type === "group" || msg.chat.type === "supergroup";
|
||||
const senderId = msg.from?.id ? String(msg.from.id) : "";
|
||||
const messageThreadId = (msg as { message_thread_id?: number }).message_thread_id;
|
||||
const api = bot.api as unknown as {
|
||||
setMessageReaction?: (
|
||||
chatId: number | string,
|
||||
messageId: number,
|
||||
reactions: Array<{ type: "emoji"; emoji: string }>,
|
||||
) => Promise<void>;
|
||||
};
|
||||
const reactionApi =
|
||||
typeof api.setMessageReaction === "function" ? api.setMessageReaction.bind(api) : null;
|
||||
typeof bot.api.setMessageReaction === "function"
|
||||
? bot.api.setMessageReaction.bind(bot.api)
|
||||
: null;
|
||||
const getChatApi: TelegramGetChat = bot.api.getChat.bind(bot.api);
|
||||
const isForum = await resolveTelegramForumFlag({
|
||||
chatId,
|
||||
|
||||
@@ -3,6 +3,7 @@ import type { TelegramExecApprovalConfig } from "openclaw/plugin-sdk/config-runt
|
||||
import { getExecApprovalReplyMetadata } from "openclaw/plugin-sdk/infra-runtime";
|
||||
import type { ReplyPayload } from "openclaw/plugin-sdk/reply-runtime";
|
||||
import { resolveTelegramAccount } from "./accounts.js";
|
||||
import { resolveTelegramInlineButtonsConfigScope } from "./inline-buttons.js";
|
||||
import { resolveTelegramTargetChatType } from "./targets.js";
|
||||
|
||||
function normalizeApproverId(value: string | number): string {
|
||||
@@ -77,11 +78,7 @@ function resolveExecApprovalButtonsExplicitlyDisabled(params: {
|
||||
accountId?: string | null;
|
||||
}): boolean {
|
||||
const capabilities = resolveTelegramAccount(params).config.capabilities;
|
||||
if (!capabilities || Array.isArray(capabilities) || typeof capabilities !== "object") {
|
||||
return false;
|
||||
}
|
||||
const inlineButtons = (capabilities as { inlineButtons?: unknown }).inlineButtons;
|
||||
return typeof inlineButtons === "string" && inlineButtons.trim().toLowerCase() === "off";
|
||||
return resolveTelegramInlineButtonsConfigScope(capabilities) === "off";
|
||||
}
|
||||
|
||||
export function shouldEnableTelegramExecApprovalButtons(params: {
|
||||
|
||||
@@ -21,7 +21,16 @@ function normalizeInlineButtonsScope(value: unknown): TelegramInlineButtonsScope
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function resolveInlineButtonsScopeFromCapabilities(
|
||||
export function resolveTelegramInlineButtonsConfigScope(
|
||||
capabilities: unknown,
|
||||
): TelegramInlineButtonsScope | undefined {
|
||||
if (!capabilities || Array.isArray(capabilities) || typeof capabilities !== "object") {
|
||||
return undefined;
|
||||
}
|
||||
return normalizeInlineButtonsScope((capabilities as { inlineButtons?: unknown }).inlineButtons);
|
||||
}
|
||||
|
||||
export function resolveTelegramInlineButtonsScopeFromCapabilities(
|
||||
capabilities: unknown,
|
||||
): TelegramInlineButtonsScope {
|
||||
if (!capabilities) {
|
||||
@@ -34,8 +43,7 @@ function resolveInlineButtonsScopeFromCapabilities(
|
||||
return enabled ? "all" : "off";
|
||||
}
|
||||
if (typeof capabilities === "object") {
|
||||
const inlineButtons = (capabilities as { inlineButtons?: unknown }).inlineButtons;
|
||||
return normalizeInlineButtonsScope(inlineButtons) ?? DEFAULT_INLINE_BUTTONS_SCOPE;
|
||||
return resolveTelegramInlineButtonsConfigScope(capabilities) ?? DEFAULT_INLINE_BUTTONS_SCOPE;
|
||||
}
|
||||
return DEFAULT_INLINE_BUTTONS_SCOPE;
|
||||
}
|
||||
@@ -45,7 +53,7 @@ export function resolveTelegramInlineButtonsScope(params: {
|
||||
accountId?: string | null;
|
||||
}): TelegramInlineButtonsScope {
|
||||
const account = resolveTelegramAccount({ cfg: params.cfg, accountId: params.accountId });
|
||||
return resolveInlineButtonsScopeFromCapabilities(account.config.capabilities);
|
||||
return resolveTelegramInlineButtonsScopeFromCapabilities(account.config.capabilities);
|
||||
}
|
||||
|
||||
export function isTelegramInlineButtonsEnabled(params: {
|
||||
|
||||
Reference in New Issue
Block a user