public override async Task <bool> SendMessage(string message) { try { long randomId = Helpers.GenerateRandomLong(); MessageModelUndelivered undeliveredMessage = new MessageModelUndelivered() { MessageType = MessageModelUndelivered.Type.Text, Text = message, Timestamp = DateTime.Now, RandomId = randomId }; ProcessNewMessage(undeliveredMessage); // TODO: npe? messages_SentMessage sentMessage = await session.Api.messages_sendMessage(InputPeer, message, randomId); int date, id, pts, seq; if (sentMessage.Constructor == Constructor.messages_sentMessage) { Messages_sentMessageConstructor sent = (Messages_sentMessageConstructor)sentMessage; id = sent.id; pts = sent.pts; seq = sent.seq; date = sent.date; } else if (sentMessage.Constructor == Constructor.messages_sentMessageLink) { Messages_sentMessageLinkConstructor sent = (Messages_sentMessageLinkConstructor)sentMessage; id = sent.id; pts = sent.pts; seq = sent.seq; date = sent.date; List <contacts_Link> links = sent.links; // TODO: process links } else { logger.error("unknown sentMessage constructor"); return(false); } if (session.Updates.processUpdatePtsSeqDate(pts, seq, date) == false) { messages.Remove(undeliveredMessage); return(false); } ; int messageIndex = messages.IndexOf(undeliveredMessage); if (messageIndex != -1) { messages[messageIndex] = new MessageModelDelivered(TL.message(id, session.SelfId, dialog.peer, true, true, date, message, TL.messageMediaEmpty())); } else { logger.error("not found undelivered message to confirmation"); } TelegramSession.Instance.Dialogs.Model.UpDialog(this); return(true); } catch (Exception ex) { logger.error("exception {0}", ex); return(false); } }
public override async Task<bool> SendMessage(string message) { try { long randomId = Helpers.GenerateRandomLong(); MessageModelUndelivered undeliveredMessage = new MessageModelUndelivered() { MessageType = MessageModelUndelivered.Type.Text, Text = message, Timestamp = DateTime.Now, RandomId = randomId }; ProcessNewMessage(undeliveredMessage); // TODO: npe? messages_SentMessage sentMessage = await session.Api.messages_sendMessage(InputPeer, message, randomId); int date, id, pts, seq; if (sentMessage.Constructor == Constructor.messages_sentMessage) { Messages_sentMessageConstructor sent = (Messages_sentMessageConstructor) sentMessage; id = sent.id; pts = sent.pts; seq = sent.seq; date = sent.date; } else if (sentMessage.Constructor == Constructor.messages_sentMessageLink) { Messages_sentMessageLinkConstructor sent = (Messages_sentMessageLinkConstructor) sentMessage; id = sent.id; pts = sent.pts; seq = sent.seq; date = sent.date; List<contacts_Link> links = sent.links; // TODO: process links } else { logger.error("unknown sentMessage constructor"); return false; } if (session.Updates.processUpdatePtsSeqDate(pts, seq, date) == false) { messages.Remove(undeliveredMessage); return false; }; int messageIndex = messages.IndexOf(undeliveredMessage); if (messageIndex != -1) { messages[messageIndex] = new MessageModelDelivered(TL.message(id, session.SelfId, dialog.peer, true, true, date, message, TL.messageMediaEmpty())); } else { logger.error("not found undelivered message to confirmation"); } TelegramSession.Instance.Dialogs.Model.UpDialog(this); return true; } catch (Exception ex) { logger.error("exception {0}", ex); return false; } }
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); } }
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); } }