Обновление проги мониторинга ковров Artisan. Практически 2.0
Ссылка на первую часть:
Переписал своего бота мониторинга ковров практически с нуля.
Если раньше это была обычная программа, которую раз в полчаса запускал планировщик, то теперь это служба, которая работает круглосуточно, мониторит ковры нонстоп, а также отвечает на команды подписчиков в телеге.
Новые функции:
- Команды телеграм-бота. То есть они в принципе появились и ими можно пользоваться.
- Команда /get. Основное нововведение. Если вам не нужно постоянно получать уведомления о том какие ковры появились, а какие закончились, можно отписаться от уведомлений через /stop, но при этом по команде /get получать все доступные на данный момент ковры или только интересные вам.
То есть «/get 99» вернёт только ковры у которых в коде продукта есть 99, а «/get 99 xxl» — только те у которых в коде есть и 99 и xxl.
- Индивидуальные фильтры уведомлений. Если лично вам не нужны уведомления о том, что в продаже появились классические ковры размера S — это можно организовать. Пока фильтр настраивается только с моей стороны.
Немного технической информации для любителей программирования:
- Это всё ещё приложение на NET8
- Пишу и собираю всё в линуксе в VS Code
- Для основы сервиса использовал шаблон Worker, но так как кода не особо много и он не сложный, дополнительно на микросервисы внутри ихней HostedService инфраструктуры не стал дробить. Просто в пределах одного воркера на функциональные классы поделил и всё.
- Конфиги и данные храню в JSON. Сериализую периодически в файл встроенным сериализатором (System.Text.Json.JsonSerializer)
Прочая обвязка
- Для телеграм-бота использую `Telegram.Bot`
- Для логгирования `log4net`
- Для прикручивания к линуксовому диспетчеру служб Systemd — `Microsoft.Extensions.Hosting.Systemd`
- Для отображения таблички у себя на сайте использую `DataTables` (офигенная штука). И снова планировщик cron, который с бэкенда во фронтенд копирует периодически файлик с данными.
- Для персональных фильтров изпользовал `Dynamic.Linq` — тоже классная вещь, не надо самому мутить свой контракт и парсер для него.
Вроде всё… Программа простая, но так приятно смотреть как оно всё само работает)