add exampleNames
Deploy app frontend / app frontend (push) Successful in 1m52s
Deploy service couchdb / service couchdb (push) Successful in 27s
Deploy db-migrations / db-migrations (push) Successful in 1m23s
Deploy service message-delivery-method-web-push / service message-delivery-method-web-push (push) Successful in 1m18s
Deploy service tg-bot / service tg-bot (push) Successful in 1m16s

This commit is contained in:
2024-12-16 21:41:32 +02:00
parent c8735c607d
commit c1edb1937f
8 changed files with 56 additions and 17 deletions
@@ -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
+1
View File
@@ -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
@@ -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": {
@@ -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) {
@@ -39,7 +39,7 @@ export async function selectMultipleActions<T extends readonly Action[]>(
// Отправляем начальное сообщение
await ctx.reply(
"Выберите одно или несколько действий, которые будут доступны при сканировании этого QR-кода. Нажмите 'Готово', когда закончите выбор:",
"Выберите одно или несколько действий, которые будут доступны при сканировании этого QR-кода. Нажмите «Готово», когда закончите выбор:",
{
reply_markup: {
inline_keyboard: [
+1 -1
View File
@@ -27,7 +27,7 @@ export const createBot = ({
});
// Инициализируем бота с нужным типом контекста
const bot = new Bot<MyContext>(env.TELEGRAM_BOT_TOKEN, {
const bot = new Bot<MyContext>(env.BOT_TOKEN, {
client: {
baseFetchConfig: {
signal: abortController.signal,
+3 -1
View File
@@ -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,
+16 -5
View File
@@ -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({
const tgUpdatesChanges =
env.BOT_USE_CHANGES_DB_UPDATES &&
(await createServiceChangesTgUpdatesDb({
abortController,
});
}));
process.on("SIGINT", async () => {
messagesChanges.changesStream.stop();
if (tgUpdatesChanges) {
tgUpdatesChanges.changesStream.stop();
}
bot.stop();
});
@@ -30,11 +36,13 @@ const abortController = new AbortController();
await setupWebHook(bot);
await setupCommands(bot);
// bot.start();
console.log("Бот запущен!");
// outgoing messages
iterateMessagesChanges({ bot, ...messagesChanges });
console.log("Бот запущен!");
// incoming messages
if (tgUpdatesChanges) {
for await (const change of tgUpdatesChanges.changesStream) {
tgUpdatesChanges.serviceSeqTracker.checkNextSeq(change.seq);
if (change.doc) {
@@ -42,4 +50,7 @@ const abortController = new AbortController();
}
await tgUpdatesChanges.serviceSeqTracker.saveSeq(change.seq);
}
} else {
await bot.start();
}
})();