Навигация по каналу
Для удобного поиска по постам канала я добавил теги по темам:
#aboutwebdev_js — про js
#aboutwebdev_css — про css
#aboutwebdev_html — про html
#aboutwebdev_личныйпроект — про личные проекты
#aboutwebdev_моярекомендация — мои рекомендации
#aboutwebdev_itmeetupsbot — про развитие бота-агрегатора IT-мероприятий (Проект закрыт)
#aboutwebdev_боты — про тг-ботов
#aboutwebdev_авторскаястатья — авторские статьи
#aboutwebdev_анонс — анонсы моих проектов, статей
#aboutwebdev_митап — мнение про посещенный митап
#aboutwebdev_блог — про развитие своего блога
#aboutwebdev_кодпен — мои поделки в кодпене
#aboutwebdev_опенсорс — вклад в опенсорс
#aboutwebdev_обо_мне — кратко о себе
#aboutwebdev_мнение — мое мнение
#aboutwebdev_веб — про веб
#aboutwebdev_конфиги — делюсь конфигами и сборками
#aboutwebdev_sass_scss — про препроцессор sass/scss
#aboutwebdev_tgbotstats — про развитие npm-пакета для сбора статистики во взаимодействии с тг-ботом
#aboutwebdev_сотрудничество — сотрудничество с каналами, мероприятиями и все такое
#aboutwebdev_мем — мемы
Со временем список будет пополняться😎
Для удобного поиска по постам канала я добавил теги по темам:
#aboutwebdev_js — про js
#aboutwebdev_css — про css
#aboutwebdev_html — про html
#aboutwebdev_личныйпроект — про личные проекты
#aboutwebdev_моярекомендация — мои рекомендации
#aboutwebdev_itmeetupsbot — про развитие бота-агрегатора IT-мероприятий (Проект закрыт)
#aboutwebdev_боты — про тг-ботов
#aboutwebdev_авторскаястатья — авторские статьи
#aboutwebdev_анонс — анонсы моих проектов, статей
#aboutwebdev_митап — мнение про посещенный митап
#aboutwebdev_блог — про развитие своего блога
#aboutwebdev_кодпен — мои поделки в кодпене
#aboutwebdev_опенсорс — вклад в опенсорс
#aboutwebdev_обо_мне — кратко о себе
#aboutwebdev_мнение — мое мнение
#aboutwebdev_веб — про веб
#aboutwebdev_конфиги — делюсь конфигами и сборками
#aboutwebdev_sass_scss — про препроцессор sass/scss
#aboutwebdev_tgbotstats — про развитие npm-пакета для сбора статистики во взаимодействии с тг-ботом
#aboutwebdev_сотрудничество — сотрудничество с каналами, мероприятиями и все такое
#aboutwebdev_мем — мемы
Со временем список будет пополняться
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍1
Выбираем лого
Важно ваше мнение по поводу лого.
Ниже оставьте свой голос за лого, которое вам больше понравилось.
Если есть свои идеи, то напиши их в комментариях!
Благодарю!
Важно ваше мнение по поводу лого.
Ниже оставьте свой голос за лого, которое вам больше понравилось.
Если есть свои идеи, то напиши их в комментариях!
Благодарю!
Возвращение на текущую страницу в боте
Предыстория
В первой версии бота при возвращении к списку событий переход всегда был на первую страницу.
Я задумался: как мне реализовать возвращение на ту страницу, на которой находится событие?
И ко мне пришла идея! Сейчас поделюсь ею с вами!
Идея
У каждого события есть id-команда, чтобы при клике по ней отображалась информация о событии.
К примеру, /msk_m_1802.
Через регулярку я беру отдельные части id-команды, чтобы взаимодействовать с БД и функционалом бота.
msk — это id города, в котором проходит событие. Этот id я передаю в callback_data кнопки "К списку мероприятий", чтобы вернуться к списку событий, проходящих в Москве.
1802 — это id события, которое я передаю для его поиска в БД, чтобы отобразить актуальную информацию о нем.
Я добавил номер страницы и теперь id-команда выглядит так: /msk_2_m_1802
2 — это номер страницы, на которой находится событие. Соответственно, ее я передаю в callback_data кнопки "К списку мероприятий", чтобы вернуться на ту страницу, на которой находилось мероприятие.
Как это реализовано в коде
Блок-схема
Ниже прикрепляю блок-схему реализации функционала возвращения на страницу.
Теперь событие может находиться даже на 100 странице и пользователь может сразу вернуться на ту же страницу после просмотра информации!
Всем кода без легаси и багов!
#aboutwebdev_itmeetupsbot #aboutwebdev_боты
Предыстория
В первой версии бота при возвращении к списку событий переход всегда был на первую страницу.
Я задумался: как мне реализовать возвращение на ту страницу, на которой находится событие?
И ко мне пришла идея! Сейчас поделюсь ею с вами!
Идея
У каждого события есть id-команда, чтобы при клике по ней отображалась информация о событии.
К примеру, /msk_m_1802.
Через регулярку я беру отдельные части id-команды, чтобы взаимодействовать с БД и функционалом бота.
msk — это id города, в котором проходит событие. Этот id я передаю в callback_data кнопки "К списку мероприятий", чтобы вернуться к списку событий, проходящих в Москве.
1802 — это id события, которое я передаю для его поиска в БД, чтобы отобразить актуальную информацию о нем.
Я добавил номер страницы и теперь id-команда выглядит так: /msk_2_m_1802
2 — это номер страницы, на которой находится событие. Соответственно, ее я передаю в callback_data кнопки "К списку мероприятий", чтобы вернуться на ту страницу, на которой находилось мероприятие.
Как это реализовано в коде
handleItemButtons.js
await bot.onText(/\/(\w+)\_(\d+)\_m\_(\d+)/, async (msg, match) => { // обрабатываем нажатие на id-команду /msk_2_m_1802
city = match[1]; // id города
currentPage = Number(match[2]); // страница, на которой находилось событие в списке
idItem = Number(match[3]); // id события
showItem(bot, msg, city, idItem, currentPage); // функция для отображения информации о событии
});
await bot.on("callback_query", async function onCallbackQuery(callbackQuery) {
const regexpToMeetups = /^toMeetups\_(\w+)\_(\d+)/; // регулярка, чтобы бот понимал какая кнопка была нажата
if (data.match(regexpToMeetups)) {
city = data.match(regexpToMeetups)[1];
currentPage = Number(data.match(regexpToMeetups)[2]);
}
if (regexpToMeetups.test(data)) {
await showList(bot, chatId, messageId, city, username, currentPage); // функция для отображения списка событий
}
});
showItem.js
await bot.sendMessage(HELPERS.getChatId(msg), messages, {
reply_markup: {
inline_keyboard: itemKeyboard(city, currentPage), // передается id города и номер страницы с событием для кнопки "К списку мероприятий"
},
});
itemKeyboard.js
[
[
{
text: "К списку мероприятий",
callback_data: `toMeetups_${city}_${currentPage}`,
},
],
];
Блок-схема
Ниже прикрепляю блок-схему реализации функционала возвращения на страницу.
Теперь событие может находиться даже на 100 странице и пользователь может сразу вернуться на ту же страницу после просмотра информации!
Всем кода без легаси и багов!
#aboutwebdev_itmeetupsbot #aboutwebdev_боты
100👍1
Телеграм бот для создания своего списка желаний
Предыстория
Осенью прошлого года я написал телеграм бота для создания списка желаний.
При запуске создавался json-файл, в который записывались желания.
С того времени мои знания пополнились многими интересными решениями, которые мне захотелось применить в этом боте.
Сегодня я представляю вашему вниманию телеграм бота с созданием БД для записи своих желаний.
Что нового
При запуске теперь создается папка database в структуре проекта с файлом БД.
Добавил просмотр информации желания через команду.
Также было добавлено последовательное заполнение информации о желании: сначала добавляется ссылка, потом название желания.
Изменилась структура проекта. Стало проще ориентироваться по ней.
Исходный код
Исходный код проекта с БД: https://github.com/sqlzzy/wishlist-tg-bot-db
Исходный код проекта с JSON: https://github.com/sqlzzy/wishlist-telegram-bot
#aboutwebdev_личныйпроект #aboutwebdev_боты #aboutwebdev_опенсорс
Предыстория
Осенью прошлого года я написал телеграм бота для создания списка желаний.
При запуске создавался json-файл, в который записывались желания.
С того времени мои знания пополнились многими интересными решениями, которые мне захотелось применить в этом боте.
Сегодня я представляю вашему вниманию телеграм бота с созданием БД для записи своих желаний.
Что нового
При запуске теперь создается папка database в структуре проекта с файлом БД.
Добавил просмотр информации желания через команду.
Также было добавлено последовательное заполнение информации о желании: сначала добавляется ссылка, потом название желания.
Изменилась структура проекта. Стало проще ориентироваться по ней.
Исходный код
Исходный код проекта с БД: https://github.com/sqlzzy/wishlist-tg-bot-db
Исходный код проекта с JSON: https://github.com/sqlzzy/wishlist-telegram-bot
#aboutwebdev_личныйпроект #aboutwebdev_боты #aboutwebdev_опенсорс
12👍1
Анонсы
Про логотип
Недавно проходил опрос по выбору логотипа.
Одинаковое количество голосов в опросе и по реакциям в комментариях набрали два логотипа.
Я выбрал из них вариант Ивана. Крутой олдскульный логотип!
Скоро выйдут
В ближайшее время выйдут:
- крупное обновление бота для составления списков желаний;
- мой новый проект;
Конкурс
К выходу нового проекта будет конкурс! Подробнее о нём я напишу в понедельник.
#aboutwebdev_анонс
Про логотип
Недавно проходил опрос по выбору логотипа.
Одинаковое количество голосов в опросе и по реакциям в комментариях набрали два логотипа.
Я выбрал из них вариант Ивана. Крутой олдскульный логотип!
Скоро выйдут
В ближайшее время выйдут:
- крупное обновление бота для составления списков желаний;
- мой новый проект;
Конкурс
К выходу нового проекта будет конкурс! Подробнее о нём я напишу в понедельник.
#aboutwebdev_анонс
👍2🔥2🤯1
Я решил пока отменить текущий конкурс. Проведу его после новогодней суеты.
Но без подарков перед новым годом всё равно не останетесь!
Анонс будет в ближайшее время🍸
Но без подарков перед новым годом всё равно не останетесь!
Анонс будет в ближайшее время
Please open Telegram to view this post
VIEW IN TELEGRAM
100👍1🤯1
Обновление бота для создания своего списка желаний
Сразу после выхода поста про бота для списка желаний у меня появилось несколько идей, как его можно ещё улучшить и добавить новые функции.
Теперь я готов поделиться последними изменениями и новыми возможностями.
Обновления
Распишу изменения по пунктам.
1) Добавлены кнопки "Поделиться списком", "Поделиться всем списком", "Поделиться"
"Поделиться списком" — позволяет делиться списком желаний текущей страницы.
"Поделиться всем списком" — позволяет делиться полным списком желаний.
"Поделиться" — позволяет делиться отдельным желанием.
P.S. Благодарю Лену за идею с репостами в комментариях.🥂
2) Переработано добавление нового желания
Ранее нельзя было добавить желание без ссылки, и я сразу взялся это исправлять. Теперь на первом шаге нужно добавить заголовок, а затем по желанию — ссылку. Чтобы добавить ссылку достаточно нажать на соответствующую кнопку и ввести её.
Такое пошаговое добавление информации — уникальная функция, которой пока нет ни в одном другом моём боте. Рад, что удалось реализовать эту задумку.
3) Изменение информации
Теперь работать с добавленным желанием стало удобнее:
- вы можете менять заголовок или ссылку, не удаляя желание и не создавая новое;
- если ссылка изначально не была добавлена, её можно указать через функцию редактирования;
- при изменении заголовка или ссылки отображается информация о том, что было изменено: показываются старый и новый заголовок или ссылка, чтобы вы могли видеть, какие изменения были внесены.
4) Улучшенная навигация
Навигация стала более логичной и удобной:
- если вы находитесь в меню изменения информации желания, нажатие кнопки "Назад" отменит действие и вернёт вас в меню самого желания;
- при добавлении желания также можно отменить действие и вернуться в главное меню, нажав на кнопку "Отмена".
5) Информация при репосте списка или желания
Теперь при репосте списка или отдельного желания будет отображаться вся информация:
- статус желания (исполнено или не исполнено);
- заголовок;
- ссылка.
Исходный код
Код проекта с БД: https://github.com/sqlzzy/wishlist-tg-bot-db
#aboutwebdev_личныйпроект #aboutwebdev_боты #aboutwebdev_опенсорс
Сразу после выхода поста про бота для списка желаний у меня появилось несколько идей, как его можно ещё улучшить и добавить новые функции.
Теперь я готов поделиться последними изменениями и новыми возможностями.
Обновления
Распишу изменения по пунктам.
1) Добавлены кнопки "Поделиться списком", "Поделиться всем списком", "Поделиться"
"Поделиться списком" — позволяет делиться списком желаний текущей страницы.
"Поделиться всем списком" — позволяет делиться полным списком желаний.
"Поделиться" — позволяет делиться отдельным желанием.
P.S. Благодарю Лену за идею с репостами в комментариях.
2) Переработано добавление нового желания
Ранее нельзя было добавить желание без ссылки, и я сразу взялся это исправлять. Теперь на первом шаге нужно добавить заголовок, а затем по желанию — ссылку. Чтобы добавить ссылку достаточно нажать на соответствующую кнопку и ввести её.
Такое пошаговое добавление информации — уникальная функция, которой пока нет ни в одном другом моём боте. Рад, что удалось реализовать эту задумку.
3) Изменение информации
Теперь работать с добавленным желанием стало удобнее:
- вы можете менять заголовок или ссылку, не удаляя желание и не создавая новое;
- если ссылка изначально не была добавлена, её можно указать через функцию редактирования;
- при изменении заголовка или ссылки отображается информация о том, что было изменено: показываются старый и новый заголовок или ссылка, чтобы вы могли видеть, какие изменения были внесены.
4) Улучшенная навигация
Навигация стала более логичной и удобной:
- если вы находитесь в меню изменения информации желания, нажатие кнопки "Назад" отменит действие и вернёт вас в меню самого желания;
- при добавлении желания также можно отменить действие и вернуться в главное меню, нажав на кнопку "Отмена".
5) Информация при репосте списка или желания
Теперь при репосте списка или отдельного желания будет отображаться вся информация:
- статус желания (исполнено или не исполнено);
- заголовок;
- ссылка.
Исходный код
Код проекта с БД: https://github.com/sqlzzy/wishlist-tg-bot-db
#aboutwebdev_личныйпроект #aboutwebdev_боты #aboutwebdev_опенсорс
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Канал Серёжи про webdev
Телеграм бот для создания своего списка желаний
Предыстория
Осенью прошлого года я написал телеграм бота для создания списка желаний.
При запуске создавался json-файл, в который записывались желания.
С того времени мои знания пополнились многими интересными…
Предыстория
Осенью прошлого года я написал телеграм бота для создания списка желаний.
При запуске создавался json-файл, в который записывались желания.
С того времени мои знания пополнились многими интересными…
👍2
Ваше мнение
Напишите свое мнение по каналу: что нравится, чего не хватает и что можно добавить?
Буду рад прочитать ваши мнение и пожелания!
Конкурс среди комментаторов
30 декабря среди комментаторов рандом выберет трех человек, которым подарю 300 звезд каждому.
Пост с результатами будет после выбора рандома.
Таков подарок к новому году от админа канала🍸
Напишите свое мнение по каналу: что нравится, чего не хватает и что можно добавить?
Буду рад прочитать ваши мнение и пожелания!
Конкурс среди комментаторов
30 декабря среди комментаторов рандом выберет трех человек, которым подарю 300 звезд каждому.
Пост с результатами будет после выбора рандома.
Таков подарок к новому году от админа канала
Please open Telegram to view this post
VIEW IN TELEGRAM
Про 2024 год
Год был волнообразным и насыщенным на события.
Более подробно написал про 2024 год в заметках: https://sqlzzy.dev/notes/2024.html
Она же и первая заметка в моем блоге!⌨️
Всех с наступающим и с Новым годом! 🎄
#aboutwebdev_блог #aboutwebdev_обо_мне
Год был волнообразным и насыщенным на события.
Более подробно написал про 2024 год в заметках: https://sqlzzy.dev/notes/2024.html
Она же и первая заметка в моем блоге!
Всех с наступающим и с Новым годом! 🎄
#aboutwebdev_блог #aboutwebdev_обо_мне
Please open Telegram to view this post
VIEW IN TELEGRAM
sqlzzy.dev
Про 2024
Осипов Сергей | Разработчик интерфейсов | Заметки | Про 2024
👍2🔥2
Руководства и статьи по TypeScript
С нового года начал плотно изучать TypeScript и его основы основ.
По велению судьбы сразу наткнулся на статью из пяти частей с кратким описанием и примерами основных моментов TypeScript.
Первая, вторая, третья, четвертая и пятая части.
Далее нашел еще пару интересных ресурсов: руководство на русском языке и карманный справочник.
В руководстве на русском языке есть еще книга и статьи для более глубокого изучения и JS, и TS.
А в карманном справочнике можно ознакомиться с другими руководствами по языкам программирования.
Все описанные статьи и руководства добавлены на страницу с полезностями: https://library.sqlzzy.dev/
На странице можно найти много ссылок с руководствами, статьями, плейлистами и ресурсами для вдохновения!
Она активно пополняется новинками!
Добавляйте страницу в закладки!
#aboutwebdev_моярекомендация
С нового года начал плотно изучать 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_боты
В течение часа выйдет новое обновление для 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
Telegram
IT Meetups Bot
Бот-агрегатор IT-мероприятий
🔥2👍1
node-schedule: Планировщик задач для Node.js (Часть 1)
Недавно начал изучать планирование и выполнение задач в Node.js и мне встретилась библиотека node-schedule.
node-schedule — это библиотека для планирования и выполнения задач в Node.js, которая позволяет легко настроить выполнение кода по расписанию. Она поддерживает гибкие интервалы (например, каждый день, каждый понедельник, через несколько минут и т.д.), а также предоставляет возможность запускать задачи в определённое время, что делает её полезной для таких сценариев, как регулярные очистки базы данных, отправка уведомлений и выполнение других задач.
Установка
Основные возможности
1. Планирование задач по времени (например, ежедневно в определённый час).
2. Использование cron-выражений для гибкости настройки.
3. Использование JavaScript объектов Date для точного времени выполнения.
Пример
Расписание с использованием объекта Date
node-schedule поддерживает использование JavaScript объектов Date, что позволяет точно настроить время выполнения задачи.
Расписание с использованием cron-выражений
node-schedule поддерживает cron-подобные выражения, что позволяет задать сложные расписания для выполнения задач.
Пример cron-выражения:
-
-
-
Удаление или отмена задачи
Если вам нужно отменить задачу до её выполнения, вы можете использовать метод
Повторение задач с интервалами
Можно настроить выполнение задачи через определённые интервалы времени, используя
Пример: выполнение задачи каждые 5 секунд:
Использование параметров при выполнении задач
Вы можете передавать параметры в функцию, которую выполняет задача. Для этого можно использовать замыкания или передавать аргументы через функции.
#aboutwebdev_js
Недавно начал изучать планирование и выполнение задач в 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 внутри функции, выполняемой по расписанию.
Основные методы и API
-
-
-
-
Пример с переустановкой задачи
В итоге
node-schedule — это мощный инструмент для планирования и выполнения задач в Node.js. Он удобен, гибок и поддерживает различные способы задания времени для выполнения задач (cron, объекты Date и интервалы). Библиотека полезна для создания приложений, которые требуют регулярных или отсроченных операций, таких как отправка уведомлений, очистка базы данных или выполнение любых других повторяющихся задач.
#aboutwebdev_js
Обработка ошибок
Для долгосрочных задач важно иметь механизм обработки ошибок, чтобы избежать сбоев. Вы можете использовать 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