























@@ -21,6 +21,9 @@ let parseTelegramNativeCommandCallbackData: typeof import("./bot-native-commands
2121let resolveTelegramNativeCommandDisableBlockStreaming: typeof import("./bot-native-commands.js").resolveTelegramNativeCommandDisableBlockStreaming;
22222323type CommandBotHarness = ReturnType<typeof createCommandBot>;
24+type TelegramInlineKeyboardReplyMarkup = {
25+inline_keyboard?: Array<Array<{ callback_data?: string }>>;
26+};
2427type PlugCommandHarnessParams = {
2528botHarness?: CommandBotHarness;
2629cfg?: OpenClawConfig;
@@ -69,6 +72,18 @@ function registerPlugCommand(params: PlugCommandHarnessParams = {}) {
6972};
7073}
717475+function collectCallbackData(replyMarkup: TelegramInlineKeyboardReplyMarkup | undefined): string[] {
76+const callbackData: string[] = [];
77+for (const row of replyMarkup?.inline_keyboard ?? []) {
78+for (const button of row) {
79+if (button.callback_data) {
80+callbackData.push(button.callback_data);
81+}
82+}
83+}
84+return callbackData;
85+}
86+7287function registerCustomTelegramCommandMenu(
7388customCommands: NonNullable<TelegramAccountConfig["customCommands"]>,
7489) {
@@ -258,12 +273,9 @@ describe("registerTelegramNativeCommands", () => {
258273await handler(createPrivateCommandContext());
259274260275const replyMarkup = sendMessage.mock.calls[0]?.[2]?.reply_markup as
261-| { inline_keyboard?: Array<Array<{ callback_data?: string }>> }
276+| TelegramInlineKeyboardReplyMarkup
262277| undefined;
263-const callbackData = replyMarkup?.inline_keyboard
264-?.flat()
265-.map((button) => button.callback_data)
266-.filter(Boolean);
278+const callbackData = collectCallbackData(replyMarkup);
267279268280expect(callbackData).toEqual(["tgcmd:/fast status", "tgcmd:/fast on", "tgcmd:/fast off"]);
269281expect(parseTelegramNativeCommandCallbackData("tgcmd:/fast status")).toBe("/fast status");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。