private async Task <string> HandleMessageAsync(Message message) { if (message.Text.StartsWith("/subscribe")) { await SubscriptionDB.CreateAsync(new TelegramSubscription { ChatId = message.Chat.Id }).ConfigureAwait(false); return("Welcome! You subscribed to the notifications."); } if (message.Text.StartsWith("/ping")) { return("Pong!"); } if (message.Text.StartsWith("/last")) { var lastMessage = await NotificationsDB.LoadLatestAsync().ConfigureAwait(false); if (lastMessage == null) { return("No messages yet."); } var lastMessageTime = lastMessage.Timestamp + (message.Date - DateTime.UtcNow); var formattedStatus = FormatBookingStatus(lastMessage.Status); return($"Latest message was at {lastMessageTime:T}\n{formattedStatus}"); } return(@"Usage: /subscribe - subscribe to notifications "); }
public async Task NotifyAsync(BookingStatus bookingStatus) { const string bookingUnavailable = "Vérification de disponibilité"; if (bookingStatus.Title.Contains(bookingUnavailable)) { bookingStatus.PageSource = null; } await NotificationsDB.InsertAsync(new TelegramNotification { Status = bookingStatus }).ConfigureAwait(false); var lastNotification = await NotificationsDB.LoadLatestAsync().ConfigureAwait(false); if (bookingStatus.Title == lastNotification?.Status?.Title || bookingStatus.Title.Contains(bookingUnavailable)) { return; } await NotifySubscribersAsync(bookingStatus).ConfigureAwait(false); }