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

Автор: @sqlzzyy
Download Telegram
Итоги конкурса

Отзыв о канале оставил только Сергей, то ему уже отправлены 350 звёзд.

Серёга, благодарю тебя за отзыв!
С наступающим Новым годом!
🔥3👍2
Про 2024 год

Год был волнообразным и насыщенным на события.

Более подробно написал про 2024 год в заметках: https://sqlzzy.dev/notes/2024.html

Она же и первая заметка в моем блоге! ⌨️

Всех с наступающим и с Новым годом! 🎄

#aboutwebdev_блог #aboutwebdev_обо_мне
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Руководства и статьи по TypeScript

С нового года начал плотно изучать TypeScript и его основы основ.

По велению судьбы сразу наткнулся на статью из пяти частей с кратким описанием и примерами основных моментов TypeScript.
Первая, вторая, третья, четвертая и пятая части.

Далее нашел еще пару интересных ресурсов: руководство на русском языке и карманный справочник.
В руководстве на русском языке есть еще книга и статьи для более глубокого изучения и JS, и TS.
А в карманном справочнике можно ознакомиться с другими руководствами по языкам программирования.

Все описанные статьи и руководства добавлены на страницу с полезностями: https://library.sqlzzy.dev/
На странице можно найти много ссылок с руководствами, статьями, плейлистами и ресурсами для вдохновения!
Она активно пополняется новинками!

Добавляйте страницу в закладки!

#aboutwebdev_моярекомендация
🔥2
Обновления IT Meetups Bot

В течение часа выйдет новое обновление для IT Meetups Bot — бота-агрегатора IT-мероприятий. Расскажу подробнее о новых функциях и изменениях.

Новые функции

1) Список всех мероприятий

Теперь появилась возможность просмотреть мероприятия из всех городов сразу! Идею вывода полного списка событий предложил Зар.

2) Обновленная структура краткой информации

В краткой информации о мероприятии (которая отображается в списке) теперь указаны формат и стоимость билета — чтобы вам было удобнее выбирать.

3) Улучшенная сортировка

Мероприятия теперь сортируются корректно — строго по дате и времени проведения. Больше никакого хаоса!

4) Новые города

География расширяется! По предложению Зара в список добавлены новые города: Челябинск, Пермь, Екатеринбург, Новосибирск и Ульяновск.

5) Кнопка "Поддержать"
Теперь вы можете поддержать проект и мой труд через платформу Boosty.

Что дальше?

Работа над новыми функциями уже ведется. Совсем скоро поделюсь с вами еще большим количеством обновлений!

P.S. Спасибо Зару за ценные идеи и вклад в развитие IT Meetups Bot! 😎

#aboutwebdev_itmeetupsbot #aboutwebdev_личныйпроект #aboutwebdev_боты
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
node-schedule: Планировщик задач для Node.js (Часть 1)

Недавно начал изучать планирование и выполнение задач в Node.js и мне встретилась библиотека node-schedule.

node-schedule — это библиотека для планирования и выполнения задач в Node.js, которая позволяет легко настроить выполнение кода по расписанию. Она поддерживает гибкие интервалы (например, каждый день, каждый понедельник, через несколько минут и т.д.), а также предоставляет возможность запускать задачи в определённое время, что делает её полезной для таких сценариев, как регулярные очистки базы данных, отправка уведомлений и выполнение других задач.

Установка


npm install node-schedule


Основные возможности

1. Планирование задач по времени (например, ежедневно в определённый час).
2. Использование cron-выражений для гибкости настройки.
3. Использование JavaScript объектов Date для точного времени выполнения.

Пример


const schedule = require('node-schedule');

// Планирование задачи на определённое время
const job = schedule.scheduleJob('42 * * * *', function(){
console.log('Задача выполняется каждый час на 42-й минуте');
});


Расписание с использованием объекта Date

node-schedule поддерживает использование JavaScript объектов Date, что позволяет точно настроить время выполнения задачи.


const schedule = require('node-schedule');

// Выполнить задачу 1 января 2026 года в 00:00:00
const date = new Date(2026, 0, 1, 0, 0, 0);
const job = schedule.scheduleJob(date, function(){
console.log('Новый год! Выполняем задачу!');
});


Расписание с использованием cron-выражений

node-schedule поддерживает cron-подобные выражения, что позволяет задать сложные расписания для выполнения задач.

Пример cron-выражения:

- * * * * * — каждую минуту.
- 0 0 * * * — каждый день в полночь.
- */5 * * * * — каждые 5 минут.


const schedule = require('node-schedule');

// Выполнить задачу каждый день в полночь
const job = schedule.scheduleJob('0 0 * * *', function(){
console.log('Задача выполняется каждый день в полночь');
});

// Выполнить задачу каждые 5 минут
const job2 = schedule.scheduleJob('*/5 * * * *', function(){
console.log('Задача выполняется каждые 5 минут');
});


Удаление или отмена задачи

Если вам нужно отменить задачу до её выполнения, вы можете использовать метод cancel().


const job = schedule.scheduleJob('*/5 * * * *', function(){
console.log('Эта задача должна выполняться каждые 5 минут');
});

// Остановим задачу через 10 секунд
setTimeout(function(){
job.cancel();
console.log('Задача отменена');
}, 10000);


Повторение задач с интервалами

Можно настроить выполнение задачи через определённые интервалы времени, используя scheduleJob() и JavaScript Date с динамическим расчётом следующего времени для задачи.

Пример: выполнение задачи каждые 5 секунд:

const schedule = require('node-schedule');

// Выполнение задачи через 5 секунд
const job = schedule.scheduleJob('*/5 * * * * *', function(){
console.log('Задача выполняется каждые 5 секунд');
});


Использование параметров при выполнении задач

Вы можете передавать параметры в функцию, которую выполняет задача. Для этого можно использовать замыкания или передавать аргументы через функции.


const schedule = require('node-schedule');

// Пример с параметрами
const job = schedule.scheduleJob('0 0 * * *', function(){
const message = 'Ежедневная задача';
sendNotification(message);
});

function sendNotification(msg) {
console.log(`Уведомление: ${msg}`);
}


#aboutwebdev_js
👍2
node-schedule: Планировщик задач для Node.js (Часть 2)

Обработка ошибок

Для долгосрочных задач важно иметь механизм обработки ошибок, чтобы избежать сбоев. Вы можете использовать try-catch внутри функции, выполняемой по расписанию.


const schedule = require('node-schedule');

const job = schedule.scheduleJob('*/5 * * * *', function(){
try {
// Ваш код
throw new Error("Произошла ошибка!");
} catch (error) {
console.error("Ошибка при выполнении задачи:", error.message);
}
});


Основные методы и API

- scheduleJob(cronPattern, callback) — запланировать задачу с использованием cron-выражения или объекта Date.
- cancel() — отменить задачу, которая ещё не была выполнена.
- reschedule(newCronPattern) — переустановить расписание задачи.
- nextInvocation() — получить дату и время следующего выполнения задачи.

Пример с переустановкой задачи


const schedule = require('node-schedule');

const job = schedule.scheduleJob('*/10 * * * *', function(){
console.log('Задача выполняется каждые 10 минут');
});

// Переустанавливаем задачу для выполнения каждые 15 минут
setTimeout(() => {
job.reschedule('*/15 * * * *');
console.log('Расписание задачи изменено');
}, 30000);


В итоге

node-schedule — это мощный инструмент для планирования и выполнения задач в Node.js. Он удобен, гибок и поддерживает различные способы задания времени для выполнения задач (cron, объекты Date и интервалы). Библиотека полезна для создания приложений, которые требуют регулярных или отсроченных операций, таких как отправка уведомлений, очистка базы данных или выполнение любых других повторяющихся задач.

#aboutwebdev_js
👍3
Обновления IT Meetups Bot: подписка на города, новые города и удобная навигация!

Рад поделиться свежими новостями о новых функциях и изменениях в боте-агрегаторе IT Meetups Bot. Вот что теперь доступно:

1) Подписка на город

Теперь вы можете подписаться на уведомления о мероприятиях в выбранном городе. Даже если в вашем городе пока нет событий, вы получите уведомление, как только они появятся! В уведомлении будет краткое описание и ссылка для подробной информации.
Управлять подписками легко: можно отписаться как от одного города, так и сразу от всех.

2) Добавлены новые города

Список городов пополняется! Теперь бот поддерживает:
Казань, Уфу, Омск, Томск, Нижний Новгород, Ростов-на-Дону, Калининград, Краснодар, Сочи, Ижевск и Иннополис.

3) Пагинация для городов

Список городов растёт, поэтому сделал удобную навигацию. Теперь вы сможете возвращаться на ту же страницу, с которой выбрали город, вместо того, чтобы листать всё заново.

4) Улучшенная сортировка мероприятий

Обновил сортировку в разделе «Все мероприятия»: теперь всё по порядку: по дате и времени.

Что дальше?

Чат идей вдохновляет! Уже внедрил некоторые предложения (например, подписку на города). Работа над новым функционалом продолжается.

Если заметите баг или у вас есть идея, обязательно напишите в чат!

Подключайте бота и следите за IT-мероприятиями вашего города. Спасибо, что пользуетесь!

#aboutwebdev_itmeetupsbot #aboutwebdev_личныйпроект #aboutwebdev_боты
👍2🔥1
Сотрудничество

Недавно мой бот-агрегатор стал информационным партнером мероприятия «Профессиональная межрегиональная IT-конференция "Merge"»!

Это мое первое сотрудничество с IT-мероприятиями!

Есть еще приятный бонус для пользователей моего бота и канала: по промокоду ITMEETUPSBOT можно получить 10% скидки при покупке билета!

Скоро будут еще новости!

А пока побежал пилить фичи для бота!

Всем прекрасных выходных!

#aboutwebdev_itmeetupsbot #aboutwebdev_сотрудничество
👍4🔥2
Новости с полей сотрудничества

Прилетели новости с полей сотрудничества с мероприятиями!

Мой бот-агрегатор стал информационным партнером мероприятия «Summer Merge»!

Уже по традиции есть приятный бонус для пользователей моего бота и канала: по промокоду ITMEETUPSBOT можно получить 10% скидки при покупке билета!

Подключайте бота и по подписке на город получайте уведомления о новых мероприятиях!

Скоро выложу кое-что интересное!

Всем прекрасного начала недели!

#aboutwebdev_itmeetupsbot #aboutwebdev_сотрудничество
Обновление IT Meetups Bot (30.01.25)

В течение часа выйдет новое обновление для IT Meetups Bot — бота-агрегатора IT-мероприятий. Поделюсь подробностями о новых функциях и изменениях.

Что нового?

1) Оценка бота

Добавлен раздел "Оценить бота", где вы можете поставить свою оценку! В любой момент вы можете изменить свою оценку.
Ваше мнение важно для меня!

2) Список "Онлайн мероприятия"

Теперь есть отдельный список для онлайн-мероприятий: вебинары, трансляции и воркшопы. На этот раздел можно подписаться, чтобы получать уведомления о новых анонсах!

3) Изменения в форме анонса

Обязательные поля теперь отмечены звездочками. Также при выборе формата мероприятия будут появляться соответствующие поля. Например, если выбрать формат "Офлайн" или "Офлайн с онлайн-трансляцией", отобразятся поля для выбора города и ввода адреса.
Поле "Ссылка на регистрацию" теперь необязательное, так как для некоторых форматов, например, для завтраков, регистрация не требуется. Если ссылки нет, кнопка "Регистрация" в боте не будет отображаться.

4) Для админа

Для администраторов теперь предусмотрено автоудаление прошедших мероприятий из общего списка. Каждый день в 00:01 будет запускаться процесс, который будет автоматически удалять устаревшие события. Это позволит поддерживать актуальность списка мероприятий.
Также добавлен раздел "Заявки", где отображаются все заявки на анонсы мероприятий.

5) Пасхалка!

В бота добавлена пасхалка, которая намекает на одно из будущих нововведений! Если найдете её, напишите об этом в комментариях под постом!

Что дальше?

Вот некоторые из моих планов на развитие бота:
Для администраторов будет добавлена функция уведомлений о новых заявках, что позволит быстрее с ними ознакомиться и одобрить.

В планах добавить:
- предпросмотр анонса, чтобы увидеть, как он будет выглядеть в списке и в полном формате;
- возможность написать отзыв о боте в разделе "Оценить бота";
- возможность создавать анонсы регулярных мероприятий.

И, конечно, будут другие нововведения, о которых вы узнаете в следующих обновлениях!

#aboutwebdev_itmeetupsbot #aboutwebdev_личныйпроект #aboutwebdev_боты
🔥4
Если у вас будет задача с разными таймзонами, не лезьте.
Оно вас сожрет. 😐

#aboutwebdev_мнение
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🤯1
Обновление №3 (10.02.2025)

В ближайшее время выйдет новое обновление для IT Meetups Bot — бота-агрегатора IT-мероприятий. Расскажу, какие новые функции и улучшения вас ждут.

Что нового?

1) Напоминания о мероприятиях

Это была одна из самых ожидаемых функций, которую я хотел реализовать с самого начала разработки бота.

Как работают напоминания?

Напоминания отправляются в часовом поясе, который вы выбираете при их создании.

Например, если мероприятие проходит в Новосибирске в 14:00 20.03.2025 (таймзона: Asia/Krasnoyarsk), а вы выбрали таймзону Asia/Omsk, то напоминание за 1 день в 9:00 придет вам по Asia/Omsk, а по времени Asia/Krasnoyarsk это будет 8:00 19.03.2025.

Время и дата напоминания для scheduleJobs устанавливаются в UTC, чтобы уведомления приходили точно в выбранное вами время.

Уже запланированные часы не отображаются в клавиатуре при создании нового напоминания.

Напоминания можно удалить в любой момент.

На первое время установил лимит на создание не больше 10 напоминаний на одного пользователя.

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

2) WebApp для предложений мероприятий

Теперь можно удобно подать заявку на добавление мероприятия через WebApp прямо внутри бота!

3) Личный кабинет

Добавлена кнопка "Личный кабинет", где можно посмотреть свои подписки и напоминания.

4) Уведомления для админа о новых заявках

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

5) Поправлена проверка для ссылки на регистрацию

Недавно в чат написали про баг при вставке ссылки на регистрацию. Теперь идет проверка только на наличие у сайта протокола HTTPS.
HTTPS — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности.

Что дальше?

Основные функции, которые я планировал, уже добавлены. Но впереди еще много идей и новых возможностей!

Если нашли баг — напишите в чат. Я старался протестировать все сценарии работы с напоминаниями, но что-то могло ускользнуть.

Спасибо за вашу поддержку! 🍸

#aboutwebdev_itmeetupsbot #aboutwebdev_личныйпроект #aboutwebdev_боты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Архивное фото студенческих времен.
Настраиваю сервера и проверяю отправку данных между ними.

#aboutwebdev_обо_мне
👍2🔥2
WIN-WIN

На прошлой неделе мне написал Сергей – представитель комьюнити мобильных разработчиков Coffee&Code, с предложением размещать анонсы их еженедельных встреч в боте IT Meetups Bot.

Мы обсудили детали и пришли к отличному решению – создать API, которое будет автоматически передавать информацию о предстоящих встречах. Согласовали удобную структуру данных, чтобы интеграция прошла максимально просто.

Теперь анонсы Coffee&Code будут появляться в боте каждую неделю без лишних действий. Автоматизация – наше всё!

В итоге получился настоящий WIN-WIN: быстро нашли общий язык и договорились о взаимовыгодном сотрудничестве!

#aboutwebdev_itmeetupsbot #aboutwebdev_сотрудничество
🔥4👍3🤯2
Завтра выйдет обновление бота!
А чуть позже расскажу про безопасную обработку ошибок в боте!

😎📖
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Обновление №4 (24.02.2025)

В ближайшее время выйдет новое обновление для IT Meetups Bot — бота-агрегатора IT-мероприятий. Делюсь свежими функциями и улучшениями!

Что нового?

1) Добавление бота в чат

Теперь можно добавлять бота в групповые чаты, чтобы быть в курсе предстоящих мероприятий!

Как это работает?
- Сделайте бота администратором чата.
- Отправьте команду /start в группе.

Администраторы смогут управлять подписками и создавать уведомления для чата!
Если напоминание хочет создать участник без админских прав, бот уведомит его об этом.

2) Новые команды

Добавлены новые команды для удобства:
- /notifications — Напоминания
- /subs — Подписки
- /cities — Города
- /all_meetups — Все мероприятия
- /online_meetups — Онлайн-мероприятия

3) Оценка бота в чате

Теперь каждый участник чата может оценить бота, оставив свой голос! Все оценки будут учтены.

4) Улучшенная обработка ошибок

Бот стал надежнее!
Добавил глобальные обработчики ошибок Telegram API, чтобы он не крашился в случае сбоев и продолжал работать бесперебойно.
Отдельный пост про обработку ошибок скоро выйдет!

5) Другие изменения

Мелкие, но важные доработки:
- в списке «Все мероприятия» теперь отображается город события;
- убраны названия таймзон из описания мероприятий для упрощения;
- если пользователь заблокировал бота, все его подписки автоматически удаляются.

Что дальше?

Последние 4 месяца я активно развивал бота, параллельно работая на основной работе.
Идей для развития еще очень много! Постепенно буду внедрять новые функции.
Планы амбициозные!
Спасибо всем за поддержку!

Чат бота | Поддержать

#aboutwebdev_itmeetupsbot #aboutwebdev_личныйпроект #aboutwebdev_боты
👍1
Как избежать ошибок в 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