|

Обновление проги мониторинга ковров Artisan. Практически 2.0

Ссылка на первую часть:

Переписал своего бота мониторинга ковров практически с нуля.

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

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

  • Команды телеграм-бота. То есть они в принципе появились и ими можно пользоваться.
  • Команда /get. Основное нововведение. Если вам не нужно постоянно получать уведомления о том какие ковры появились, а какие закончились, можно отписаться от уведомлений через /stop, но при этом по команде /get получать все доступные на данный момент ковры или только интересные вам.
    То есть «/get 99» вернёт только ковры у которых в коде продукта есть 99, а «/get 99 xxl» — только те у которых в коде есть и 99 и xxl.
Кстати, недавно вышел новый ковёр (キ83) . На сайте появился, а больше нигде никаких анонсов почему-то нет.
  • Индивидуальные фильтры уведомлений. Если лично вам не нужны уведомления о том, что в продаже появились классические ковры размера S — это можно организовать. Пока фильтр настраивается только с моей стороны.
из переписки с пользователем бота

Немного технической информации для любителей программирования:

  • Это всё ещё приложение на NET8
  • Пишу и собираю всё в линуксе в VS Code
  • Для основы сервиса использовал шаблон Worker, но так как кода не особо много и он не сложный, дополнительно на микросервисы внутри ихней HostedService инфраструктуры не стал дробить. Просто в пределах одного воркера на функциональные классы поделил и всё.
  • Конфиги и данные храню в JSON. Сериализую периодически в файл встроенным сериализатором (System.Text.Json.JsonSerializer)

Прочая обвязка

  • Для телеграм-бота использую `Telegram.Bot`
  • Для логгирования `log4net`
  • Для прикручивания к линуксовому диспетчеру служб Systemd — `Microsoft.Extensions.Hosting.Systemd`
  • Для отображения таблички у себя на сайте использую `DataTables` (офигенная штука). И снова планировщик cron, который с бэкенда во фронтенд копирует периодически файлик с данными.
  • Для персональных фильтров изпользовал `Dynamic.Linq` — тоже классная вещь, не надо самому мутить свой контракт и парсер для него.

Вроде всё… Программа простая, но так приятно смотреть как оно всё само работает)