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));
        }
Пример #2
0
        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);
                }
            }
        }