import { Bot, session } from "grammy"; import { conversations, createConversation } from "@grammyjs/conversations"; import { MyContext } from "../types/myContext"; // Ваш расширенный контекст import { env } from "../config/env"; import { loadUserMiddleware } from "./middleware/loadUser"; import { setupCommands } from "./commands/setupCommands"; import { startCommand } from "./commands/start"; import { helpCommand } from "./commands/help"; import { newCommand } from "./commands/new"; import { manageCommand } from "./commands/manage"; import { callbackQueryHandler } from "./callbackHandlers"; import { newQRCodeConversation } from "./conversations/newQRCodeConversation"; // Инициализируем бота с нужным типом контекста const bot = new Bot(env.TELEGRAM_BOT_TOKEN); // Подключаем сессии. По необходимости определите initial state для сессии bot.use(session({ initial: () => ({}) })); // Подключаем conversations для многошаговых сценариев bot.use(conversations()); bot.use(createConversation(newQRCodeConversation, "newQRCodeConversation")); // Middleware для загрузки или создания пользователя bot.use(loadUserMiddleware); // Регистрация команд bot.command("start", startCommand); bot.command("help", helpCommand); bot.command("new", newCommand); bot.command("manage", manageCommand); // Обработка callback_query bot.on("callback_query:data", callbackQueryHandler); (async () => { // Установка команд await setupCommands(bot); // Запуск бота bot.start(); console.log("Бот запущен!"); })(); export { bot };