public Task HandleUpdateAsync(PackageUpdate update, CancellationToken cancellationToken) { // TODO: Each call to ParseMessageFor needs to be localized for each user var tasks = new List <Task>(update.Channels.Count()); foreach (var channel in update.Channels) { Thread.CurrentThread.CurrentUICulture = new CultureInfo(channel.LanguageCode); var message = _parser.ParseMessageFor(update.Updates, update.Previous, true); tasks.Add(SendMessageToChats(message, channel.Channels, cancellationToken)); } return(Task.WhenAll(tasks)); }
private async Task SendPackagesToChat(ITelegramBotClient client, IEnumerable <Package> packages, long channel, CancellationToken cancellationToken) { var messages = _parser.SplitMessage(_parser.ParseMessageFor(packages)); var lastMessage = messages.Last(); foreach (var msg in messages) { await client.SendTextMessageAsync( chatId : channel, text : msg, parseMode : ParseMode.Markdown, cancellationToken : cancellationToken ); if (msg != lastMessage) { await client.SendChatActionAsync(channel, ChatAction.Typing, cancellationToken); await Task.Delay(_settings.ConsecutiveMessagesInterval, cancellationToken); } } }