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()); }