using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Telegram.Bot; using Telegram.Bot.Polling; using Telegrator.Hosting.Components; using Telegrator.MadiatorCore; using Telegrator.Polling; namespace Telegrator.Hosting.Polling { /// /// Service for receiving updates for Hosted telegram bots /// /// /// /// /// /// public class HostedUpdateReceiver(ITelegramBotHost botHost, ITelegramBotClient botClient, IUpdateRouter updateRouter, IOptions options, ILogger logger) : BackgroundService { private readonly ReceiverOptions _receiverOptions = options.Value; private readonly IUpdateRouter _updateRouter = updateRouter; /// protected override async Task ExecuteAsync(CancellationToken stoppingToken) { logger.LogInformation("Starting receiving updates via long-polling"); _receiverOptions.AllowedUpdates = botHost.UpdateRouter.HandlersProvider.AllowedTypes.ToArray(); DefaultUpdateReceiver updateReceiver = new DefaultUpdateReceiver(botClient, _receiverOptions); await updateReceiver.ReceiveAsync(_updateRouter, stoppingToken).ConfigureAwait(false); } } }