From c1edb1937fd5dd9c10978381e65b75a2c97ffae7 Mon Sep 17 00:00:00 2001 From: Vasilii Mikhailovskii Date: Mon, 16 Dec 2024 21:41:32 +0200 Subject: [PATCH] add exampleNames --- .gitea/workflows/deploy-service-tg-bot.yaml | 1 + docker-compose.yml | 1 + .../tg-bot-update-webhook-ddoc/package.json | 1 - .../conversations/newQRCodeConversation.ts | 27 +++++++++++++- .../conversations/selectMultipleActions.ts | 2 +- services/tg-bot/src/bot/index.ts | 2 +- services/tg-bot/src/config/env.ts | 4 ++- services/tg-bot/src/service.ts | 35 ++++++++++++------- 8 files changed, 56 insertions(+), 17 deletions(-) diff --git a/.gitea/workflows/deploy-service-tg-bot.yaml b/.gitea/workflows/deploy-service-tg-bot.yaml index b9abe73..5c20399 100644 --- a/.gitea/workflows/deploy-service-tg-bot.yaml +++ b/.gitea/workflows/deploy-service-tg-bot.yaml @@ -23,6 +23,7 @@ jobs: READ_BASE_URL: ${{ vars.READ_BASE_URL }} APP_BASE_URL: ${{ vars.APP_BASE_URL }} HEARTBEAT_INTERVAL: ${{ vars.HEARTBEAT_INTERVAL }} + BOT_USE_CHANGES_DB_UPDATES: ${{ vars.BOT_USE_CHANGES_DB_UPDATES }} steps: - uses: actions/checkout@v4 diff --git a/docker-compose.yml b/docker-compose.yml index 24ba32b..ea2d766 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -75,6 +75,7 @@ services: - HEARTBEAT_INTERVAL=${HEARTBEAT_INTERVAL:-30000} - DEBUG=${TG_BOT_DEBUG:-} - PUBLIC_API_URL=${PUBLIC_API_URL:-} + - BOT_USE_CHANGES_DB_UPDATES=${BOT_USE_CHANGES_DB_UPDATES:-} depends_on: couchdb: condition: service_healthy diff --git a/packages/tg-bot-update-webhook-ddoc/package.json b/packages/tg-bot-update-webhook-ddoc/package.json index 7f01ef4..cc620db 100644 --- a/packages/tg-bot-update-webhook-ddoc/package.json +++ b/packages/tg-bot-update-webhook-ddoc/package.json @@ -16,7 +16,6 @@ "lint:fix": "eslint src --fix", "validate": "npm run type-check && npm run lint" }, - "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/services/tg-bot/src/bot/conversations/newQRCodeConversation.ts b/services/tg-bot/src/bot/conversations/newQRCodeConversation.ts index 24d0778..f26ade4 100644 --- a/services/tg-bot/src/bot/conversations/newQRCodeConversation.ts +++ b/services/tg-bot/src/bot/conversations/newQRCodeConversation.ts @@ -53,9 +53,34 @@ export async function newQRCodeConversation( await placementChoice.answerCallbackQuery({ text: "Объект выбран!" }); // 2. Ввод названия QR-кода + let exampleName: string; + + switch (typedPlacement) { + case "car": + exampleName = "Моя машина"; + break; + case "pet": + exampleName = "Ошейник Барсика"; + break; + case "door": + exampleName = "Входная дверь квартиры"; + break; + case "store": + exampleName = "Магазин на углу"; + break; + case "restaurant_table": + exampleName = "Столик №12"; + break; + case "other": + exampleName = "Что-то другое"; + break; + } + + // Отправляем сообщение пользователю с примером await ctx.reply( - "Введите название для вашего QR-кода (например: 'Моя машина'):", + `Введите название для вашего QR-кода (например: «${exampleName}»):`, ); + const nameMsg = await conversation.waitFor("message:text"); const name = nameMsg.message.text.trim(); if (name.length < 2) { diff --git a/services/tg-bot/src/bot/conversations/selectMultipleActions.ts b/services/tg-bot/src/bot/conversations/selectMultipleActions.ts index 4c7c8b7..3d6af73 100644 --- a/services/tg-bot/src/bot/conversations/selectMultipleActions.ts +++ b/services/tg-bot/src/bot/conversations/selectMultipleActions.ts @@ -39,7 +39,7 @@ export async function selectMultipleActions( // Отправляем начальное сообщение await ctx.reply( - "Выберите одно или несколько действий, которые будут доступны при сканировании этого QR-кода. Нажмите 'Готово', когда закончите выбор:", + "Выберите одно или несколько действий, которые будут доступны при сканировании этого QR-кода. Нажмите «Готово», когда закончите выбор:", { reply_markup: { inline_keyboard: [ diff --git a/services/tg-bot/src/bot/index.ts b/services/tg-bot/src/bot/index.ts index 4a89929..bcc5319 100644 --- a/services/tg-bot/src/bot/index.ts +++ b/services/tg-bot/src/bot/index.ts @@ -27,7 +27,7 @@ export const createBot = ({ }); // Инициализируем бота с нужным типом контекста - const bot = new Bot(env.TELEGRAM_BOT_TOKEN, { + const bot = new Bot(env.BOT_TOKEN, { client: { baseFetchConfig: { signal: abortController.signal, diff --git a/services/tg-bot/src/config/env.ts b/services/tg-bot/src/config/env.ts index 49db64d..59246ac 100644 --- a/services/tg-bot/src/config/env.ts +++ b/services/tg-bot/src/config/env.ts @@ -19,7 +19,9 @@ if (!process.env.HEARTBEAT_INTERVAL) { } export const env = { - TELEGRAM_BOT_TOKEN: process.env.BOT_TOKEN, + BOT_TOKEN: process.env.BOT_TOKEN, + BOT_USE_CHANGES_DB_UPDATES: + `${process.env.BOT_USE_CHANGES_DB_UPDATES}` === "true", READ_BASE_URL: process.env.READ_BASE_URL, APP_BASE_URL: process.env.APP_BASE_URL, API_URL: process.env.API_URL, diff --git a/services/tg-bot/src/service.ts b/services/tg-bot/src/service.ts index b83c753..5310483 100644 --- a/services/tg-bot/src/service.ts +++ b/services/tg-bot/src/service.ts @@ -4,6 +4,7 @@ import { createServiceChangesMessagesDb } from "./services/serviceChangesMessage import { createServiceChangesTgUpdatesDb } from "./services/serviceChangesTgUpdatesDb"; import { iterateMessagesChanges } from "./services/iterateMessagesChanges"; import { setupWebHook } from "./services/setupWebHook"; +import { env } from "./config/env"; const abortController = new AbortController(); @@ -13,13 +14,18 @@ const abortController = new AbortController(); const messagesChanges = await createServiceChangesMessagesDb({ abortController, }); - const tgUpdatesChanges = await createServiceChangesTgUpdatesDb({ - abortController, - }); + + const tgUpdatesChanges = + env.BOT_USE_CHANGES_DB_UPDATES && + (await createServiceChangesTgUpdatesDb({ + abortController, + })); process.on("SIGINT", async () => { messagesChanges.changesStream.stop(); - tgUpdatesChanges.changesStream.stop(); + if (tgUpdatesChanges) { + tgUpdatesChanges.changesStream.stop(); + } bot.stop(); }); @@ -30,16 +36,21 @@ const abortController = new AbortController(); await setupWebHook(bot); await setupCommands(bot); - // bot.start(); - console.log("Бот запущен!"); - + // outgoing messages iterateMessagesChanges({ bot, ...messagesChanges }); - for await (const change of tgUpdatesChanges.changesStream) { - tgUpdatesChanges.serviceSeqTracker.checkNextSeq(change.seq); - if (change.doc) { - await bot.handleUpdate(change.doc.data); + console.log("Бот запущен!"); + + // incoming messages + if (tgUpdatesChanges) { + for await (const change of tgUpdatesChanges.changesStream) { + tgUpdatesChanges.serviceSeqTracker.checkNextSeq(change.seq); + if (change.doc) { + await bot.handleUpdate(change.doc.data); + } + await tgUpdatesChanges.serviceSeqTracker.saveSeq(change.seq); } - await tgUpdatesChanges.serviceSeqTracker.saveSeq(change.seq); + } else { + await bot.start(); } })();