Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 22 additions & 11 deletions src/__tests__/bot-commands.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// src/__tests__/bot-commands.test.ts
import { describe, it, expect } from "vitest";
import { createdMessage, launchMessage, normalizeTelegramCommandText, parseCommand } from "../bot/commands.js";
import { previewReadyMessage } from "../bot/i18n.js";

describe("parseCommand", () => {
it("parses /start", () => {
Expand Down Expand Up @@ -49,14 +50,11 @@ describe("parseCommand", () => {
});

describe("bot messages", () => {
it("createdMessage (ru) includes bootstrap steps and links", () => {
it("createdMessage (ru) includes bootstrap steps without links", () => {
const message = createdMessage(
"ru",
"demo-app",
"npx @spawn-dock/create --token pair_demo",
"https://spawn-dock.example/preview/demo-app",
"https://t.me/TMASpawnerBot/tma?startapp=demo-app",
"https://spawn-dock.example/tma?tgWebAppStartParam=demo-app",
);

expect(message).toContain("Проект demo-app создан.");
Expand All @@ -65,29 +63,28 @@ describe("bot messages", () => {
expect(message).toContain("Эту команду можно запускать повторно для этого проекта.");
expect(message).toContain("2. После bootstrap запусти:");
expect(message).toContain("pnpm run dev");
expect(message).toContain("Preview URL:");
expect(message).toContain("Telegram Link:");
expect(message).toContain("TMA URL:");
expect(message).not.toContain("Preview URL:");
expect(message).not.toContain("Telegram Link:");
expect(message).not.toContain("TMA URL:");
expect(message).not.toContain("Ссылки:");
});

it("createdMessage (en) uses English bootstrap copy", () => {
const message = createdMessage(
"en",
"demo-app",
"npx @spawn-dock/create --token pair_demo",
"https://spawn-dock.example/preview/demo-app",
"https://t.me/TMASpawnerBot/tma?startapp=demo-app",
"https://spawn-dock.example/tma?tgWebAppStartParam=demo-app",
);

expect(message).toContain("Project demo-app created.");
expect(message).toContain("1. Run the bootstrap command locally:");
expect(message).toContain("npx @spawn-dock/create --token pair_demo");
expect(message).toContain("2. After bootstrap, run:");
expect(message).toContain("pnpm run dev");
expect(message).not.toContain("Links:");
});

it("includes TMA and preview links in launchMessage", () => {
it("includes TMA, preview, and telegram links in launchMessage", () => {
const message = launchMessage(
"en",
"demo-app",
Expand All @@ -103,4 +100,18 @@ describe("bot messages", () => {
expect(message).toContain("Tunnel status:");
expect(message).toContain("<code>npm run agent</code>");
});

it("previewReadyMessage keeps all links", () => {
const message = previewReadyMessage(
"ru",
"demo-app",
"https://example.com/preview/demo-app",
"https://t.me/rustgpt_bot/tma?startapp=demo-app",
"https://example.com/tma?tgWebAppStartParam=demo-app",
);

expect(message).toContain("Preview URL:");
expect(message).toContain("Telegram Link:");
expect(message).toContain("TMA URL:");
});
});
13 changes: 0 additions & 13 deletions src/bot/i18n.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,6 @@ export function createdMessage(
locale: BotLocale,
slug: string,
bootstrapCmd: string,
previewUrl: string,
telegramMiniAppUrl: string,
tmaUrl: string,
): string {
if (locale === "ru") {
return [
Expand All @@ -115,11 +112,6 @@ export function createdMessage(
"",
"2. После bootstrap запусти:",
"<code>pnpm run dev</code>",
"",
"Ссылки:",
`Preview URL: ${renderLink(previewUrl)}`,
`Telegram Link: ${renderLink(telegramMiniAppUrl)}`,
`TMA URL: ${renderLink(tmaUrl)}`,
].join("\n");
}
return [
Expand All @@ -132,11 +124,6 @@ export function createdMessage(
"",
"2. After bootstrap, run:",
"<code>pnpm run dev</code>",
"",
"Links:",
`Preview URL: ${renderLink(previewUrl)}`,
`Telegram Link: ${renderLink(telegramMiniAppUrl)}`,
`TMA URL: ${renderLink(tmaUrl)}`,
].join("\n");
}

Expand Down
5 changes: 1 addition & 4 deletions src/bot/polling.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,13 +159,10 @@ async function processUpdate(cfg: ReturnType<typeof readBotConfig>, update: Tele
const slug = data.project.slug;
const token = data.pairingToken.token;
const bootstrapCmd = `npx @spawn-dock/create --token ${token}`;
const previewUrl = data.launchUrl;
const tmaUrl = buildGatewayMiniAppUrl(previewUrl, slug);
const telegramMiniAppUrl = buildTelegramMiniAppUrl(cfg.telegramBotUsername, cfg.telegramMiniAppShortName, slug);
await sendMessage(
cfg.telegramBotToken,
msg.chat.id,
createdMessage(locale, slug, bootstrapCmd, previewUrl, telegramMiniAppUrl, tmaUrl),
createdMessage(locale, slug, bootstrapCmd),
);
return;
}
Expand Down