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
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:
@@ -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
|
||||
|
||||
@@ -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: [
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user