private async Task <TlAbsInputPeer> GetInputPeer(Peer peer, int id) { TlAbsInputPeer receiver; switch (peer) { case Peer.User: receiver = new TlInputPeerUser { UserId = id }; break; case Peer.Chat: receiver = new TlInputPeerChat { ChatId = id }; break; default: var dialogs = (TlDialogs)await _client.GetUserDialogsAsync(); var chat = dialogs.Chats.Lists .OfType <TlChannel>() .FirstOrDefault(c => c.Id == id); receiver = new TlInputPeerChannel { ChannelId = id, AccessHash = chat.AccessHash.Value }; break; } return(receiver); }
public virtual async Task DownloadFileFromContactTest() { var client = NewClient(); await client.ConnectAsync(); var result = await client.GetContactsAsync(); var user = result.Users.Lists .OfType <TlUser>() .FirstOrDefault(x => x.Phone == NumberToSendMessage); var inputPeer = new TlInputPeerUser { UserId = user.Id }; var res = await client.SendRequestAsync <TlMessages>(new TlRequestGetHistory { Peer = inputPeer }); var document = res.Messages.Lists .OfType <TlMessage>() .Where(m => m.Media != null) .Select(m => m.Media) .OfType <TlMessageMediaDocument>() .Select(md => md.Document) .OfType <TlDocument>() .First(); var resFile = await client.GetFile( new TlInputDocumentFileLocation { AccessHash = document.AccessHash, Id = document.Id, Version = document.Version }, document.Size); Assert.True(resFile.Bytes.Length > 0); }