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()); }
public async Task <MessageContext> Render(MiddlewareData middlewareData, ITelegramClient telegramClient, CancellationToken cancellationToken) { var newMessage = await telegramClient.UpdateMessage(new UpdateMessageData( chatId : _chatId, messageId : _messageId, messageData : _messageData ), cancellationToken); return(MessageContext.Builder() .AddMessageId(newMessage.Id) .Build()); }
public override async Task <MiddlewareData> RenderAsync(MiddlewareData middlewareData, BaseOutMessage message) { if (message.GetType() != typeof(BaseOutMessage) && message.GetType() != typeof(TelegramOutMessage)) { throw new ArgumentException("Unsupported message type " + message.GetType()); } var updateFeature = middlewareData.Features.RequireOne <UpdateInfoFeature>(); var update = updateFeature.Update; var chatId = GetChatId(middlewareData, message); var newMiddlewareData = middlewareData; if (message is TelegramOutMessage telegramOutMessage && telegramOutMessage.UpdateMessage) { var messageId = GetMessageId(middlewareData, message); await _telegramClient.UpdateMessage(new UpdateMessageData( chatId, messageId, GetMessageContent(message) )); }