Таков webdev
62 subscribers
32 photos
2 videos
62 links
Пишу про свои проекты, делюсь полезными ссылками про webdev и мыслями о разработке

Автор: @sqlzzyy
Download Telegram
Как избежать ошибок в Telegram API? (Node.js)

Как и обещал ранее, делюсь с вами способами, как грамотно обработать все ошибки и защитить бота от падений!

Если у вас бот на 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 звёзд.
Я потом зашёл в баланс канала и произошла деанонимизация отправителя звёзд 😁

Такие дела 👮‍♀
Please open Telegram to view this post
VIEW IN TELEGRAM
Планы

Подкаст

Я нашел свой микрофон! Теперь у меня их два, поскольку второй я купил, думая, что потерял первый. А может это знак к тому, чтобы открывать свою студию 😏
После переезда буду записывать новые выпуски подкаста. С несколькими ребятами предварительная договоренность уже имеется. С нетерпением жду общения с ними и как ночью буду делать монтаж 🤟
Выпуски будут выходить на разных платформах.

Бот-агрегатор

Взял небольшой творческий отпуск в разработке фич для бота. Хвалю себя за то, что в короткий промежуток времени реализовал основные и удобные фичи. Бот в рабочем состоянии и это самое главное!
Идеи записываются в блокнот и планомерно будут реализованы!

Такие вот планы у меня на ближайшее время.

Какие бы посты вы хотели чаще видеть? Проголосуйте в опросе!
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_личныйпроект
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Сотрудничество с JUG Ru Group

Недавно мой бот-агрегатор стал информационным партнером серий мероприятий от группы «JUG Ru Group»!

Анонсы предстоящих мероприятий уже в боте!

Всем хорошей недели!

#aboutwebdev_itmeetupsbot
#aboutwebdev_сотрудничество
🔥2👍1
Нашёл золото архива

В студенческие годы участвовал с одногруппниками в международной Олимпиаде по программированию 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_моярекомендация
🔥1
🔥2
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
🔥1
Таков 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
🔥1
Дебют в роли спикера

#aboutwebdev_митап
Forwarded from MoscowJS (Anna Shiryaeva)
Много кто пользуется telegram, но не все знают, как научить его решать нужные вам задачи.

Про это расскажет разработчик Серёжа Осипов в докладе «Свой бот — проще, чем кажется».

Экосистема telegram развивается, и сейчас каждый может создать бота или Web App. А вместе они дают не только мощный инструмент для личной продуктивности, но и для бизнеса.

🤖 В докладе Серёжа поделится историей о том, как благодаря этому упростил себе работу с блогом. И, конечно, даст инструкцию как написать своего бота с мини-приложением.

Тот самый блог Серёжи тут, а еще можно почитать его канал.

MoscowJS 66 + Школа 21, 03.07.25
Регистрация | Промокоды | #moscowjs #moscowjs66
👍1
Темная тема блога

Мой знакомый и соратник по разработке Егор предложил сделать для моего блога темную тему.
Я не стал отказываться от такого предложения и теперь в зависимости от системных настроек будут отображаться приемлемые стили.

Ссылка на блог: https://sqlzzy.dev/

Подписывайтесь на канал Егора: @frtvt

#aboutwebdev_блог
База, проверенная временем и опытом
🔥5
👍3🔥3
Простой веб-сайт

https://simplesite.ayra.ch/
Отключение бота-агрегатора IT Meetups bot

Я отключаю бота-агрегатора IT Meetups bot.

750+ пользователей подключили его с октября 24 года.

Хорошая была история.

В одного довольно непросто поддерживать бота в рабочем состоянии, с точки зрения отслеживания и добавления новых анонсов.

Да и создавал его в не лучший для себя период, и как будто этот проект является напоминанием о том времени.

Помню, Бот занял 4 место в недельном конкурсе Product Radar.

Завтра бот уходит на заслуженный покой.

Всем спасибо.

#aboutwebdev_itmeetupsbot
🤯5🔥1
- статус по задаче пока не изменился. Она в работе
👍3🔥1🤯1