Files
pepper_bot/PepperBot/Presentation/BotWorker.cs
T
2026-03-10 17:19:11 +03:00

54 lines
1.7 KiB
C#

using Microsoft.Extensions.Hosting;
using NLog;
using PepperBot.Application.Interfaces;
using PepperBot.Application.Services;
namespace PepperBot;
public class BotWorker : BackgroundService
{
private static readonly ILogger Logger = LogManager.GetCurrentClassLogger();
private readonly DealService _dealService;
private readonly IDealRepository _repository;
private readonly ISubscriptionRepository _subscriptionRepository;
private readonly ITelegramNotifier _telegramNotifier;
public BotWorker(
DealService dealService,
IDealRepository repository,
ISubscriptionRepository subscriptionRepository,
ITelegramNotifier telegramNotifier)
{
_dealService = dealService;
_repository = repository;
_subscriptionRepository = subscriptionRepository;
_telegramNotifier = telegramNotifier;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
await _repository.InitializeAsync(stoppingToken);
await _subscriptionRepository.InitializeAsync(stoppingToken);
// Вся работа с Telegram вынесена в TelegramNotifier
await _telegramNotifier.StartAsync(stoppingToken);
Logger.Info("PepperBot запущен. Опрос скидок каждые 30 секунд.");
while (!stoppingToken.IsCancellationRequested)
{
try
{
await _dealService.CheckAndNotifyAsync(stoppingToken);
}
catch (Exception ex)
{
Logger.Error(ex, "Ошибка при обработке скидок");
}
await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken);
}
}
}