using Insight.Localizer; using Insight.TelegramBot; using Insight.TelegramBot.Handling.Handlers; using Microsoft.Extensions.Logging; using Nocr.TelegramClient.AppServices.Bots.MessageDispatcher; using Nocr.TelegramClient.AppServices.Handlers.BaseHandlers; using Nocr.TelegramClient.AppServices.Users; using Nocr.TextMatcher.Api.Contracts.TextMatches; using Telegram.Bot.Types; namespace Nocr.TelegramClient.AppServices.Handlers.Messages.SubscriptionsMessage; public class SubscriptionsMessageHandler : ViewSubscriptionHandlerBase, IMatchingUpdateHandler { private readonly IUsersService _usersService; public SubscriptionsMessageHandler( ILogger logger, ILocalizer localizer, IMessageDispatcherQueue messageQueue, IUsersService usersService, IBot bot, ITextSubscriptionsController subscriptionsController) : base(logger, localizer, messageQueue, bot, subscriptionsController) { _usersService = usersService ?? throw new ArgumentNullException(nameof(usersService)); } public async Task Handle(Update update, CancellationToken cancellationToken = default) { var telegramId = update.Message.From.Id; var user = await _usersService.GetOrCreate(telegramId, update.Message.From.Username, cancellationToken); var subscriptions = await SubscriptionsController.GetByUserId(user.Id, cancellationToken); var subscription = subscriptions.MinBy(x => x.Id); await SendSubscriptionMessage(telegramId, subscription, CancellationToken.None); } }