public async Task <MessageContext> Render(MiddlewareData middlewareData, ITelegramClient telegramClient, CancellationToken cancellationToken)
        {
            var context = middlewareData.Features.RequireOne <SessionFeature>().Context;
            var message = middlewareData.Features.RequireOne <UpdateInfoFeature>().GetAnyMessage();

            if (message == null)
            {
                throw new InvalidOperationException("Cannot send response");
            }

            if (context.SentMessageIds.Any())
            {
                await telegramClient.UpdateMessage(new UpdateMessageData(
                                                       message.Chat.Id.ToString(),
                                                       context.SentMessageIds.First(),
                                                       _messageData
                                                       ), cancellationToken);

                return(MessageContext.Empty());
            }

            var chatId     = message.Chat.Id.ToString();
            var newMessage = await telegramClient.SendMessage(new SendMessageData(
                                                                  chatId, _messageData
                                                                  ), cancellationToken);

            return(MessageContext.Builder()
                   .AddMessageId(newMessage.Id)
                   .Build());
        }
Example #2
0
        public async Task <MessageContext> Render(MiddlewareData middlewareData, ITelegramClient telegramClient, CancellationToken cancellationToken)
        {
            var newMessage = await telegramClient.SendMessage(new SendMessageData(_chatId, _messageData), cancellationToken);

            return(MessageContext.Builder()
                   .AddMessageId(newMessage.Id)
                   .Build());
        }