private async Task ReadMessages() { TLRequestReadHistory readHistory = new TeleSharp.TL.Messages.TLRequestReadHistory() { Peer = botPeer }; var response = await client.SendRequestAsync <TLAffectedMessages>(readHistory); }
public int ReceiveMessages(TLClient client, MessageRepository messageRepository) { TLInputPeerUser target = null; bool hayNuevos = false; int messageCount = 0; int firstMessage = 0; try { var dialogs = GetUserDialogs(client); IEnumerable <TLDialog> listDialogs = dialogs.Dialogs.ToList().Where(x => (x.UnreadCount > 0)); foreach (var dia in listDialogs) { hayNuevos = true; if (dia.Peer is TLPeerUser) { var peer = dia.Peer as TLPeerUser; var chat = dialogs.Users.ToList().OfType <TLUser>().First(x => x.Id == peer.UserId); target = new TLInputPeerUser { UserId = chat.Id, AccessHash = (long)chat.AccessHash }; var hist = GetHistory(client, target, dia); if (hist is TLMessagesSlice) { var h = hist as TLMessagesSlice; var history = h.Messages.ToList(); for (var i = 0; i < history.Count; i++) { var mens = history[i] as TLMessage; if (i == 0) { firstMessage = mens.Id; } if (!mens.Out) { Chat c = new Chat { Created = (new DateTime(1970, 1, 1)).AddSeconds((double)mens.Date).AddHours(1), FromTo = chat.Phone, Mensaje = mens.Message, Send = false, Seen = false }; messageRepository.InsertChat(c); messageCount++; } } } else if (hist is TLMessages) { var h = hist as TLMessages; var history = h.Messages.ToList(); for (var i = 0; i < history.Count; i++) { var mens = history[i] as TLMessage; if (i == 0) { firstMessage = mens.Id; } if (!mens.Out) { Chat c = new Chat { Created = (new DateTime(1970, 1, 1)).AddSeconds((double)mens.Date).AddHours(1), FromTo = chat.Phone, Mensaje = mens.Message, Send = false, Seen = false }; messageRepository.InsertMessage(c); messageCount++; } } } } if (firstMessage > 0) { var readed = new TeleSharp.TL.Messages.TLRequestReadHistory { Peer = target }; var affectedMessages = Task.Run(() => client.SendRequestAsync <TLAffectedMessages>(readed)); affectedMessages.Wait(); var resultado = affectedMessages.Result; } } return(messageCount); } catch (Exception ex) { return(-1); } }