



























@@ -1343,6 +1343,7 @@ describe("createTelegramBot", () => {
13431343replySpy.mockClear();
13441344editMessageTextSpy.mockClear();
134513451346+const storePath = `/tmp/openclaw-telegram-model-display-names-${process.pid}-${Date.now()}.json`;
13461347const buildModelsProviderDataMock =
13471348telegramBotDepsForTest.buildModelsProviderData as unknown as ReturnType<typeof vi.fn>;
13481349buildModelsProviderDataMock.mockResolvedValueOnce({
@@ -1367,52 +1368,60 @@ describe("createTelegramBot", () => {
13671368allowFrom: ["*"],
13681369},
13691370},
1371+session: {
1372+store: storePath,
1373+},
13701374} satisfies NonNullable<Parameters<typeof createTelegramBot>[0]["config"]>;
137113751372-loadConfig.mockReturnValue(config);
1373-createTelegramBot({
1374-token: "tok",
1375- config,
1376-});
1377-const callbackHandler = onSpy.mock.calls.find((call) => call[0] === "callback_query")?.[1] as (
1378-ctx: Record<string, unknown>,
1379-) => Promise<void>;
1380-if (!callbackHandler) {
1381-throw new Error("Expected Telegram callback_query handler");
1382-}
1376+await rm(storePath, { force: true });
1377+try {
1378+loadConfig.mockReturnValue(config);
1379+createTelegramBot({
1380+token: "tok",
1381+ config,
1382+});
1383+const callbackHandler = onSpy.mock.calls.find(
1384+(call) => call[0] === "callback_query",
1385+)?.[1] as (ctx: Record<string, unknown>) => Promise<void>;
1386+if (!callbackHandler) {
1387+throw new Error("Expected Telegram callback_query handler");
1388+}
138313891384-await callbackHandler({
1385-callbackQuery: {
1386-id: "cbq-model-display-names-1",
1387-data: "mdl_list_openai_1",
1388-from: { id: 9, first_name: "Ada", username: "ada_bot" },
1389-message: {
1390-chat: { id: 1234, type: "private" },
1391-date: 1736380800,
1392-message_id: 23,
1390+await callbackHandler({
1391+callbackQuery: {
1392+id: "cbq-model-display-names-1",
1393+data: "mdl_list_openai_1",
1394+from: { id: 9, first_name: "Ada", username: "ada_bot" },
1395+message: {
1396+chat: { id: 1234, type: "private" },
1397+date: 1736380800,
1398+message_id: 23,
1399+},
13931400},
1394-},
1395-me: { username: "openclaw_bot" },
1396-getFile: async () => ({ download: async () => new Uint8Array() }),
1397-});
1398-1399-expect(replySpy).not.toHaveBeenCalled();
1400-expect(editMessageTextSpy).toHaveBeenCalledTimes(1);
1401-const params = firstEditMessageTextArg(3);
1402-const inlineKeyboard = (
1403-params as {
1404-reply_markup?: {
1405-inline_keyboard?: Array<Array<{ text?: string; callback_data?: string }>>;
1406-};
1407-}
1408-).reply_markup?.inline_keyboard;
1401+me: { username: "openclaw_bot" },
1402+getFile: async () => ({ download: async () => new Uint8Array() }),
1403+});
140914041410-expect(inlineKeyboard).toStrictEqual([
1411-[{ text: "GPT 4.1 Bridge", callback_data: "mdl_sel_openai/gpt-4.1" }],
1412-[{ text: "GPT Five Bridge ✓", callback_data: "mdl_sel_openai/gpt-5" }],
1413-[{ text: "<< Back", callback_data: "mdl_back" }],
1414-]);
1415-expect(answerCallbackQuerySpy).toHaveBeenCalledWith("cbq-model-display-names-1");
1405+expect(replySpy).not.toHaveBeenCalled();
1406+expect(editMessageTextSpy).toHaveBeenCalledTimes(1);
1407+const params = firstEditMessageTextArg(3);
1408+const inlineKeyboard = (
1409+params as {
1410+reply_markup?: {
1411+inline_keyboard?: Array<Array<{ text?: string; callback_data?: string }>>;
1412+};
1413+}
1414+).reply_markup?.inline_keyboard;
1415+1416+expect(inlineKeyboard).toStrictEqual([
1417+[{ text: "GPT 4.1 Bridge", callback_data: "mdl_sel_openai/gpt-4.1" }],
1418+[{ text: "GPT Five Bridge ✓", callback_data: "mdl_sel_openai/gpt-5" }],
1419+[{ text: "<< Back", callback_data: "mdl_back" }],
1420+]);
1421+expect(answerCallbackQuerySpy).toHaveBeenCalledWith("cbq-model-display-names-1");
1422+} finally {
1423+await rm(storePath, { force: true });
1424+}
14161425});
1417142614181427it("resets overrides when selecting the configured default model", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。