예제 #1
0
        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());
        }
예제 #2
0
        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());
        }
예제 #3
0
        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)
                                                        ));
            }