import { GrammyError } from 'grammy'; import { ALLOWED_UPDATES, createBot, shutdown, syncCommands } from './bot.js'; import { logger } from './core/logger.js'; const { bot, registry } = await createBot(); for (const signal of ['SIGINT', 'SIGTERM']) { process.once(signal, () => { shutdown(bot).then( () => process.exit(0), (err) => { logger.error('Ошибка при остановке', err); process.exit(1); }, ); }); } try { await bot.start({ allowed_updates: ALLOWED_UPDATES, // Первый апдейт приходит уже после getMe, поэтому меню обновляем здесь. onStart: async ({ username }) => { await syncCommands(bot, registry).catch((err) => logger.warn('setMyCommands не прошёл', err)); logger.info(`@${username} запущен. Апдейты: ${ALLOWED_UPDATES.join(', ')}`); }, }); } catch (err) { // bot.catch() ловит ошибки апдейтов, но не падения на старте. if (err instanceof GrammyError && err.error_code === 401) { logger.error('Telegram не принял токен (401). Проверьте BOT_TOKEN в .env.'); } else { logger.error('Не удалось запустить б