34 lines
1.3 KiB
JavaScript
34 lines
1.3 KiB
JavaScript
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('Не удалось запустить б� |