47 lines
1.5 KiB
C#
47 lines
1.5 KiB
C#
using ChatBot.Services.Telegram.Interfaces;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace ChatBot.Services
|
|
{
|
|
/// <summary>
|
|
/// Hosted service wrapper for TelegramBotService to handle scoped dependencies
|
|
/// </summary>
|
|
public class TelegramBotHostedService : IHostedService
|
|
{
|
|
private readonly IServiceProvider _serviceProvider;
|
|
private readonly ILogger<TelegramBotHostedService> _logger;
|
|
private ITelegramBotService? _botService;
|
|
|
|
public TelegramBotHostedService(
|
|
IServiceProvider serviceProvider,
|
|
ILogger<TelegramBotHostedService> logger
|
|
)
|
|
{
|
|
_serviceProvider = serviceProvider;
|
|
_logger = logger;
|
|
}
|
|
|
|
public async Task StartAsync(CancellationToken cancellationToken)
|
|
{
|
|
_logger.LogInformation("Starting Telegram Bot Hosted Service...");
|
|
|
|
using var scope = _serviceProvider.CreateScope();
|
|
_botService = scope.ServiceProvider.GetRequiredService<ITelegramBotService>();
|
|
|
|
await _botService.StartAsync(cancellationToken);
|
|
}
|
|
|
|
public async Task StopAsync(CancellationToken cancellationToken)
|
|
{
|
|
_logger.LogInformation("Stopping Telegram Bot Hosted Service...");
|
|
|
|
if (_botService != null)
|
|
{
|
|
await _botService.StopAsync(cancellationToken);
|
|
}
|
|
}
|
|
}
|
|
}
|