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