Как избежать ошибок в Telegram API? (Node.js)
Как и обещал ранее, делюсь с вами способами, как грамотно обработать все ошибки и защитить бота от падений!
Если у вас бот на node-telegram-bot-api, то вы наверняка сталкивались с ошибками 429 (Flood limit), 403 (бот заблокирован) или другими проблемами, которые могут привести к сбоям.
Перейдем к способам обработки ошибок:
1. Глобальный обработчик ошибок
Бот не должен падать из-за неожиданной ошибки. Добавляем обработку непредвиденных ошибок:
Теперь даже если что-то пошло не так — бот не упадет!
2. Универсальная обертка для API-запросов
Все запросы в Telegram API можно обернуть в безопасную функцию, которая сама будет обрабатывать ошибки.
Теперь вместо bot.sendMessage(...) используем safeTelegramCall().
3. Обработчик всех ошибок
Функция, которая понимает ошибки и решает, что делать:
4. Использование в коде бота
Теперь вызываем API Telegram безопасно:
Итого
- Бот не падает из-за неожиданных ошибок;
- API-запросы Telegram выполняются безопасно;
- Защита от блокировок, лимитов и багов.
Теперь ваш будет стабильно работать, даже если Telegram начнет глючить!
#aboutwebdev_боты
Как и обещал ранее, делюсь с вами способами, как грамотно обработать все ошибки и защитить бота от падений!
Если у вас бот на node-telegram-bot-api, то вы наверняка сталкивались с ошибками 429 (Flood limit), 403 (бот заблокирован) или другими проблемами, которые могут привести к сбоям.
Перейдем к способам обработки ошибок:
1. Глобальный обработчик ошибок
Бот не должен падать из-за неожиданной ошибки. Добавляем обработку непредвиденных ошибок:
process.on("uncaughtException", (error) => {
console.error("⚠️ Необработанная ошибка:", error);
});
process.on("unhandledRejection", (reason, promise) => {
console.error("⚠️ Необработанный Promise:", reason);
});
Теперь даже если что-то пошло не так — бот не упадет!
2. Универсальная обертка для API-запросов
Все запросы в Telegram API можно обернуть в безопасную функцию, которая сама будет обрабатывать ошибки.
async function safeTelegramCall(method, ...args) {
try {
return await bot[method](...args);
} catch (error) {
handleTelegramError(error, method, args);
return null;
}
}
Теперь вместо bot.sendMessage(...) используем safeTelegramCall().
3. Обработчик всех ошибок
Функция, которая понимает ошибки и решает, что делать:
function handleTelegramError(error, method, args) {
if (error.response) {
const statusCode = error.response.statusCode;
switch (statusCode) {
case 400:
console.warn(`⚠️ Ошибка 400: Некорректные данные при вызове ${method}`, error.message);
break;
case 403:
console.warn(`⚠️ Ошибка 403: Бот заблокирован пользователем. Удалите chatId. Method: ${method}`);
break;
case 404:
console.warn(`⚠️ Ошибка 404: Чат не найден. Method: ${method}`);
break;
case 429:
const retryAfter = error.response.parameters.retry_after || 5;
console.warn(`⚠️ Ошибка 429: Лимит запросов. Повтор через ${retryAfter} сек. Method: ${method}`);
setTimeout(() => safeTelegramCall(method, ...args), retryAfter * 1000);
break;
case 500:
console.warn(`⚠️ Ошибка 500: Внутренняя ошибка Telegram. Повтор через 5 сек.`);
setTimeout(() => safeTelegramCall(method, ...args), 5000);
break;
default:
console.error(`⚠️ Ошибка ${statusCode}: ${error.message}`);
}
} else {
console.error("❌ Неизвестная ошибка:", error);
}
}
4. Использование в коде бота
Теперь вызываем API Telegram безопасно:
bot.onText(/\/start/, (msg) => {
safeTelegramCall("sendMessage", msg.chat.id, "Привет! Я твой бот.");
});
await bot.on("callback_query", async function onCallbackQuery(callbackQuery) {
const data = callbackQuery.data;
if (data === "about") {
await safeTelegramCall("editMessageText", "О боте", {
chat_id: chatId,
message_id: messageId,
parse_mode: "HTML",
reply_markup: {
inline_keyboard: aboutKeyboard,
resize_keyboard: true,
},
disable_web_page_preview: true,
});
}
});
Итого
- Бот не падает из-за неожиданных ошибок;
- API-запросы Telegram выполняются безопасно;
- Защита от блокировок, лимитов и багов.
Теперь ваш будет стабильно работать, даже если Telegram начнет глючить!
#aboutwebdev_боты
5👍2
Баг со звёздами в ТГ
Заметил тут баг, а может и не баг он вовсе.
Последнему посту аноним подарил 5 звёзд.
Я потом зашёл в баланс канала и произошла деанонимизация отправителя звёзд 😁
Такие дела👮♀
Заметил тут баг, а может и не баг он вовсе.
Последнему посту аноним подарил 5 звёзд.
Я потом зашёл в баланс канала и произошла деанонимизация отправителя звёзд 😁
Такие дела
Please open Telegram to view this post
VIEW IN TELEGRAM
Тематика ближайших постов
Anonymous Poll
40%
Личные
30%
JavaScript
40%
HTML, CSS
20%
Боты
10%
Мемы
20%
Рекомендации (статьи, посты, каналы)
Планы
Подкаст
Я нашел свой микрофон! Теперь у меня их два, поскольку второй я купил, думая, что потерял первый. А может это знак к тому, чтобы открывать свою студию😏
После переезда буду записывать новые выпуски подкаста. С несколькими ребятами предварительная договоренность уже имеется. С нетерпением жду общения с ними и как ночью буду делать монтаж🤟
Выпуски будут выходить на разных платформах.
Бот-агрегатор
Взял небольшой творческий отпуск в разработке фич для бота. Хвалю себя за то, что в короткий промежуток времени реализовал основные и удобные фичи. Бот в рабочем состоянии и это самое главное!
Идеи записываются в блокнот и планомерно будут реализованы!
Такие вот планы у меня на ближайшее время.
Какие бы посты вы хотели чаще видеть? Проголосуйте в опросе!
Подкаст
Я нашел свой микрофон! Теперь у меня их два, поскольку второй я купил, думая, что потерял первый. А может это знак к тому, чтобы открывать свою студию
После переезда буду записывать новые выпуски подкаста. С несколькими ребятами предварительная договоренность уже имеется. С нетерпением жду общения с ними и как ночью буду делать монтаж
Выпуски будут выходить на разных платформах.
Бот-агрегатор
Взял небольшой творческий отпуск в разработке фич для бота. Хвалю себя за то, что в короткий промежуток времени реализовал основные и удобные фичи. Бот в рабочем состоянии и это самое главное!
Идеи записываются в блокнот и планомерно будут реализованы!
Такие вот планы у меня на ближайшее время.
Какие бы посты вы хотели чаще видеть? Проголосуйте в опросе!
Please open Telegram to view this post
VIEW IN TELEGRAM
Аудитория бота-агрегатора IT-мероприятий IT Meetups bot достигла 600 пользователей и чатов!
17 октября 2024 года я запустил бота.
Прошло практически 5 месяцев и бот обрёл много крутых и удобных функций!
По началу я делал бота, как пет-проект. С течением времени он перерос в полноценный проект со своей аудиторией, сотрудничествами с организаторами мероприятий и сообществами.
Владелец, разработчик, бэкендер, переговорщик, пиарщик и многие роли исполняешь, когда делаешь проект в одиночку.
Какие-то направления мне нужно было освоить с нуля.
Думаю, каждый проходил этот путь, когда делал свой продукт.
600 — это прекрасный показатель за 5 месяцев без вложений в рекламу. Но это не предел.
Если мне чего-то по-настоящему хочется достичь, я становлюсь глухим тараном, пробивающим все стены.
В этот момент моя работоспособность включается на режим 24/7.
Поднимаю стакан кофе за новый достигнутый рубеж!
Всех благодарю за поддержку, ваши предложения и помощь!🍸
#aboutwebdev_itmeetupsbot
#aboutwebdev_личныйпроект
17 октября 2024 года я запустил бота.
Прошло практически 5 месяцев и бот обрёл много крутых и удобных функций!
По началу я делал бота, как пет-проект. С течением времени он перерос в полноценный проект со своей аудиторией, сотрудничествами с организаторами мероприятий и сообществами.
Владелец, разработчик, бэкендер, переговорщик, пиарщик и многие роли исполняешь, когда делаешь проект в одиночку.
Какие-то направления мне нужно было освоить с нуля.
Думаю, каждый проходил этот путь, когда делал свой продукт.
600 — это прекрасный показатель за 5 месяцев без вложений в рекламу. Но это не предел.
Если мне чего-то по-настоящему хочется достичь, я становлюсь глухим тараном, пробивающим все стены.
В этот момент моя работоспособность включается на режим 24/7.
Поднимаю стакан кофе за новый достигнутый рубеж!
Всех благодарю за поддержку, ваши предложения и помощь!
#aboutwebdev_itmeetupsbot
#aboutwebdev_личныйпроект
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
IT Meetups Bot
Бот-агрегатор IT-мероприятий
👍2🔥2
Сотрудничество с JUG Ru Group
Недавно мой бот-агрегатор стал информационным партнером серий мероприятий от группы «JUG Ru Group»!
Анонсы предстоящих мероприятий уже в боте!
Всем хорошей недели!
#aboutwebdev_itmeetupsbot
#aboutwebdev_сотрудничество
Недавно мой бот-агрегатор стал информационным партнером серий мероприятий от группы «JUG Ru Group»!
Анонсы предстоящих мероприятий уже в боте!
Всем хорошей недели!
#aboutwebdev_itmeetupsbot
#aboutwebdev_сотрудничество
Telegram
IT Meetups Bot
Бот-агрегатор IT-мероприятий
🔥2👍1
Нашёл золото архива
В студенческие годы участвовал с одногруппниками в международной Олимпиаде по программированию ICPC.
Сначала был этап в МФТИ, и далее, как лучшая команда среди вуза, поехали в МГУ.
Как сейчас помню: в день первого этапа была жара в аудитории, где было несколько десятков компов и как минимум 2 человека за одним ПК. Не только компы грелись и плавились, но и мозги от задач🖥
Второй этап проходил в математическом корпусе МГУ.
Тренировались на сайте: https://codeforces.com/
Крутое было время!
Вот ещё ролик остался с первого этапа: https://youtu.be/ntQR5Ri3DpQ?si=OcvghZNFYdusFR-J
#aboutwebdev_обо_мне
В студенческие годы участвовал с одногруппниками в международной Олимпиаде по программированию ICPC.
Сначала был этап в МФТИ, и далее, как лучшая команда среди вуза, поехали в МГУ.
Как сейчас помню: в день первого этапа была жара в аудитории, где было несколько десятков компов и как минимум 2 человека за одним ПК. Не только компы грелись и плавились, но и мозги от задач
Второй этап проходил в математическом корпусе МГУ.
Тренировались на сайте: https://codeforces.com/
Крутое было время!
Вот ещё ролик остался с первого этапа: https://youtu.be/ntQR5Ri3DpQ?si=OcvghZNFYdusFR-J
#aboutwebdev_обо_мне
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Хорошая статья про git-команды.
90% из них использую каждый день.
В комментариях дополнили своими полезными командами.
https://habr.com/ru/articles/905658/
https://habr.com/ru/articles/905658/#comment_28240058
Добавил статью на страницу с полезными ссылками: https://library.sqlzzy.dev/.
Добавляйте страницу в закладки.
Может сделать бота с полезными ссылками, которые размещаются на странице?
#aboutwebdev_моярекомендация
90% из них использую каждый день.
В комментариях дополнили своими полезными командами.
https://habr.com/ru/articles/905658/
https://habr.com/ru/articles/905658/#comment_28240058
Добавил статью на страницу с полезными ссылками: https://library.sqlzzy.dev/.
Добавляйте страницу в закладки.
Может сделать бота с полезными ссылками, которые размещаются на странице?
#aboutwebdev_моярекомендация
🔥1
tg-bot-stats — npm-пакет для сбора и визуализации статистики взаимодействий с ботом
Лёгкий Node.js пакет для сбора и визуализации статистики взаимодействий с ботом, использующий SQLite для хранения данных и Chart.js для визуализации.
Такого npm-пакета еще нашел на https://www.npmjs.com/!
Возможности пакета
- Сбор статистики нажатий кнопок и команд бота;
- Хранение данных в SQLite базе;
- Визуализация статистики с интерактивными графиками;
- Отслеживание нажатий по времени (часы, дни, месяцы);
- Просмотр детальной информации о нажатиях;
- Настраиваемая схема данных.
Возможности дашборда
Дашборд работает локально на порту, который вы указали или по умолчанию на 3000.
Интерактивные графики:
- Линейный график нажатий по времени;
- Столбчатая диаграмма общего количества нажатий.
Выбор периода:
- Просмотр данных по часам, дням, месяцам или годам.
Детальный просмотр:
- Клик по кнопке в диаграмме показывает детальную информацию.
Подробнее о возможностях пакета, настройки и его использования можно почитать здесь.
github: https://github.com/sqlzzy/tg-bot-stats
npm: https://www.npmjs.com/package/tg-bot-stats
Уже попробовал в своем боте-агрегаторе и пока не нашел багов.
Проект полностью open-source, поэтому предлагайте свои идеи и доработки!
#aboutwebdev_личныйпроект #aboutwebdev_tgbotstats
Лёгкий Node.js пакет для сбора и визуализации статистики взаимодействий с ботом, использующий SQLite для хранения данных и Chart.js для визуализации.
Такого npm-пакета еще нашел на https://www.npmjs.com/!
Возможности пакета
- Сбор статистики нажатий кнопок и команд бота;
- Хранение данных в SQLite базе;
- Визуализация статистики с интерактивными графиками;
- Отслеживание нажатий по времени (часы, дни, месяцы);
- Просмотр детальной информации о нажатиях;
- Настраиваемая схема данных.
Возможности дашборда
Дашборд работает локально на порту, который вы указали или по умолчанию на 3000.
Интерактивные графики:
- Линейный график нажатий по времени;
- Столбчатая диаграмма общего количества нажатий.
Выбор периода:
- Просмотр данных по часам, дням, месяцам или годам.
Детальный просмотр:
- Клик по кнопке в диаграмме показывает детальную информацию.
Подробнее о возможностях пакета, настройки и его использования можно почитать здесь.
github: https://github.com/sqlzzy/tg-bot-stats
npm: https://www.npmjs.com/package/tg-bot-stats
Уже попробовал в своем боте-агрегаторе и пока не нашел багов.
Проект полностью open-source, поэтому предлагайте свои идеи и доработки!
#aboutwebdev_личныйпроект #aboutwebdev_tgbotstats
GitHub
tg-bot-stats/README.md at master · sqlzzy/tg-bot-stats
A package for collecting and visualizing bot statistics - sqlzzy/tg-bot-stats
🔥1
Таков webdev
tg-bot-stats — npm-пакет для сбора и визуализации статистики взаимодействий с ботом Лёгкий Node.js пакет для сбора и визуализации статистики взаимодействий с ботом, использующий SQLite для хранения данных и Chart.js для визуализации. Такого npm-пакета еще…
Меньше чем за день число скачиваний достигло 138.
Я до конца не понимаю, как npm считает эти скачивания, но число мне нравится!
Я до конца не понимаю, как npm считает эти скачивания, но число мне нравится!
🔥2
Таков webdev
tg-bot-stats — npm-пакет для сбора и визуализации статистики взаимодействий с ботом Лёгкий Node.js пакет для сбора и визуализации статистики взаимодействий с ботом, использующий SQLite для хранения данных и Chart.js для визуализации. Такого npm-пакета еще…
Добавил перевод на английский язык инструкции по использованию и настройки пакета tg-bot-stats.
github: https://github.com/sqlzzy/tg-bot-stats
npm: https://www.npmjs.com/package/tg-bot-stats
⭐️ P.S. У проекта уже 2 звезды и 167 скачиваний.
Еще раз напишу: аналогов подобного пакета не найдено и он является действительно полезным для создателей телеграм-ботов!
Делитесь ссылкой на пакет со знакомыми разработчиками и владельцами ботов: https://www.npmjs.com/package/tg-bot-stats
#aboutwebdev_личныйпроект #aboutwebdev_tgbotstats
github: https://github.com/sqlzzy/tg-bot-stats
npm: https://www.npmjs.com/package/tg-bot-stats
⭐️ P.S. У проекта уже 2 звезды и 167 скачиваний.
Еще раз напишу: аналогов подобного пакета не найдено и он является действительно полезным для создателей телеграм-ботов!
Делитесь ссылкой на пакет со знакомыми разработчиками и владельцами ботов: https://www.npmjs.com/package/tg-bot-stats
#aboutwebdev_личныйпроект #aboutwebdev_tgbotstats
GitHub
GitHub - sqlzzy/tg-bot-stats: A package for collecting and visualizing bot statistics
A package for collecting and visualizing bot statistics - sqlzzy/tg-bot-stats
🔥1
Forwarded from MoscowJS (Anna Shiryaeva)
Много кто пользуется telegram, но не все знают, как научить его решать нужные вам задачи.
Про это расскажет разработчик Серёжа Осипов в докладе «Свой бот — проще, чем кажется».
Экосистема telegram развивается, и сейчас каждый может создать бота или Web App. А вместе они дают не только мощный инструмент для личной продуктивности, но и для бизнеса.
🤖 В докладе Серёжа поделится историей о том, как благодаря этому упростил себе работу с блогом. И, конечно, даст инструкцию как написать своего бота с мини-приложением.
Тот самый блог Серёжи тут, а еще можно почитать его канал.
MoscowJS 66 + Школа 21, 03.07.25
Регистрация | Промокоды | #moscowjs #moscowjs66
Про это расскажет разработчик Серёжа Осипов в докладе «Свой бот — проще, чем кажется».
Экосистема telegram развивается, и сейчас каждый может создать бота или Web App. А вместе они дают не только мощный инструмент для личной продуктивности, но и для бизнеса.
🤖 В докладе Серёжа поделится историей о том, как благодаря этому упростил себе работу с блогом. И, конечно, даст инструкцию как написать своего бота с мини-приложением.
Тот самый блог Серёжи тут, а еще можно почитать его канал.
MoscowJS 66 + Школа 21, 03.07.25
Регистрация | Промокоды | #moscowjs #moscowjs66
👍1
Темная тема блога
Мой знакомый и соратник по разработке Егор предложил сделать для моего блога темную тему.
Я не стал отказываться от такого предложения и теперь в зависимости от системных настроек будут отображаться приемлемые стили.
Ссылка на блог: https://sqlzzy.dev/
Подписывайтесь на канал Егора: @frtvt
#aboutwebdev_блог
Мой знакомый и соратник по разработке Егор предложил сделать для моего блога темную тему.
Я не стал отказываться от такого предложения и теперь в зависимости от системных настроек будут отображаться приемлемые стили.
Ссылка на блог: https://sqlzzy.dev/
Подписывайтесь на канал Егора: @frtvt
#aboutwebdev_блог
sqlzzy.dev
Обо мне
Осипов Сергей | Разработчик интерфейсов | Обо мне
Отключение бота-агрегатора IT Meetups bot
Я отключаю бота-агрегатора IT Meetups bot.
750+ пользователей подключили его с октября 24 года.
Хорошая была история.
В одного довольно непросто поддерживать бота в рабочем состоянии, с точки зрения отслеживания и добавления новых анонсов.
Да и создавал его в не лучший для себя период, и как будто этот проект является напоминанием о том времени.
Помню, Бот занял 4 место в недельном конкурсе Product Radar.
Завтра бот уходит на заслуженный покой.
Всем спасибо.
#aboutwebdev_itmeetupsbot
Я отключаю бота-агрегатора IT Meetups bot.
750+ пользователей подключили его с октября 24 года.
Хорошая была история.
В одного довольно непросто поддерживать бота в рабочем состоянии, с точки зрения отслеживания и добавления новых анонсов.
Да и создавал его в не лучший для себя период, и как будто этот проект является напоминанием о том времени.
Помню, Бот занял 4 место в недельном конкурсе Product Radar.
Завтра бот уходит на заслуженный покой.
Всем спасибо.
#aboutwebdev_itmeetupsbot
🤯5🔥1