46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
|
|
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<MyContext>(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 };
|