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 "); }
private void PopulateCBSub() { List <Subscription> subs = new List <Subscription>(); subs = SubscriptionDB.GetSubscriptions(); cbSubscription.DisplayMember = "Name"; cbSubscription.ValueMember = "ID"; cbSubscription.DataSource = subs; }
private async Task NotifySubscribersAsync(BookingStatus bookingStatus) { var errors = new List <Exception>(); var subscriptions = await SubscriptionDB.LoadAllAsync().ConfigureAwait(false); foreach (var subscription in subscriptions) { try { await Bot.SendTextMessageAsync(subscription.ChatId, FormatBookingStatus(bookingStatus), ParseMode.Markdown).ConfigureAwait(false); } catch (Exception e) { errors.Add(e); } } if (errors.Any()) { throw new AggregateException(errors); } }