Example #1
0
        private ChatConstructor GetChatFromStatedMessage(Messages_statedMessageConstructor message)
        {
            var serviceMessage = message.message as MessageServiceConstructor;
            var peerChat       = serviceMessage.to_id as PeerChatConstructor;

            var createdChatId = peerChat.chat_id;

            return(message.chats.OfType <ChatConstructor>().Single(c => c.id == createdChatId));
        }
Example #2
0
        private void Process(Messages_statedMessageConstructor statedMessage)
        {
            if (!processUpdatePtsSeq(statedMessage.pts, statedMessage.seq))
            {
                return;
            }

            ProcessUsers(statedMessage.users);
            ProcessChats(statedMessage.chats);

            ProcessNewMessage(statedMessage.message);
        }
 public override void OnResponse(BinaryReader reader)
 {
     message = TL.Parse <Messages_statedMessageConstructor>(reader);
 }
Example #4
0
        public async Task SendMedia(InputMedia media)
        {
            try {
                long randomId = Helpers.GenerateRandomLong();

                // PHOTO IS HERE
                MessageModelUndelivered undeliveredMessage = new MessageModelUndelivered()
                {
                    MessageType = MessageModelUndelivered.Type.Text,
                    Text        = "",
                    Timestamp   = DateTime.Now,
                    RandomId    = randomId
                };

                ProcessNewMessage(undeliveredMessage);

                messages_StatedMessage sentMessage =
                    await session.Api.messages_sendMedia(InputPeer, media, randomId);

                Message message;
                int     pts, seq;
                if (sentMessage.Constructor == Constructor.messages_statedMessage)
                {
                    Messages_statedMessageConstructor sentMessageConstructor =
                        (Messages_statedMessageConstructor)sentMessage;

                    session.Updates.ProcessChats(sentMessageConstructor.chats);
                    session.Updates.ProcessUsers(sentMessageConstructor.users);

                    pts     = sentMessageConstructor.pts;
                    seq     = sentMessageConstructor.seq;
                    message = sentMessageConstructor.message;
                }
                else if (sentMessage.Constructor == Constructor.messages_statedMessageLink)
                {
                    Messages_statedMessageLinkConstructor statedMessageLink =
                        (Messages_statedMessageLinkConstructor)sentMessage;

                    session.Updates.ProcessChats(statedMessageLink.chats);
                    session.Updates.ProcessUsers(statedMessageLink.users);
                    // TODO: process links

                    pts     = statedMessageLink.pts;
                    seq     = statedMessageLink.seq;
                    message = statedMessageLink.message;
                }
                else
                {
                    logger.error("unknown messages_StatedMessage constructor");
                    return;
                }

                if (!session.Updates.processUpdatePtsSeq(pts, seq))
                {
                    logger.error("send media process updates failed");
                    messages.Remove(undeliveredMessage);
                    return;
                }

                TelegramSession.Instance.Dialogs.Model.UpDialog(this);

                int messageIndex = messages.IndexOf(undeliveredMessage);
                if (messageIndex != -1)
                {
                    MessageModel          messageModel = new MessageModelDelivered(message);
                    MessageModelDelivered newMessage   = (MessageModelDelivered)messageModel;
                    var selectedMessages = from msg in messages
                                           where msg is MessageModelDelivered && ((MessageModelDelivered)msg).Id == messageModel.Id
                                           select msg;
                    if (selectedMessages.Any())
                    {
                        messages.RemoveAt(messageIndex);
                    }
                    else
                    {
                        messages[messageIndex] =
                            new MessageModelDelivered(message);
                    }
                }
                else
                {
                    logger.error("not found undelivered message to confirmation");
                }
            }
            catch (Exception ex) {
                logger.error("Error sending media {0}", ex);
            }
        }
Example #5
0
        private void Process(Messages_statedMessageConstructor statedMessage) {
            if(!processUpdatePtsSeq(statedMessage.pts, statedMessage.seq)) {
                return;
            }

            ProcessUsers(statedMessage.users);
            ProcessChats(statedMessage.chats);

            ProcessNewMessage(statedMessage.message);
        }
Example #6
0
 public override void OnResponse(BinaryReader reader)
 {
     message = TL.Parse<Messages_statedMessageConstructor>(reader);
 }