public void DownloadFile(TLMessagesSlice messages, TelegramClient client) { TLDocument document = GetFileData(messages); string file_name = GetFileName(document); var loc = new TLInputDocumentFileLocation() { AccessHash = document.AccessHash, Id = document.Id, Version = document.Version }; var mb = 1048576; var upperLimit = (int)Math.Pow(2, Math.Ceiling(Math.Log(document.Size, 2))) * 4; var limit = Math.Min(mb, upperLimit); var currentOffset = 0; File.WriteAllText(file_name, ""); using (var fs = File.OpenWrite(file_name)) { while (currentOffset < document.Size) { var file = client.GetFile(loc, limit, currentOffset).ConfigureAwait(false).GetAwaiter().GetResult(); fs.Write(file.Bytes, currentOffset, file.Bytes.Length); currentOffset += file.Bytes.Length; } fs.Close(); } }
public TelegramMessages(TLMessagesSlice messages) { Messages = messages.Messages; Chats = messages.Chats; Users = messages.Users; Count = messages.Count; }
public TLDocument GetFileData(TLMessagesSlice messages) { TLMessage message = (TLMessage)messages.Messages.AsEnumerable().ElementAt(0); TLMessageMediaDocument mediadata = (TLMessageMediaDocument)message.Media; TLDocument filedata = (TLDocument)mediadata.Document; return(filedata); }
static public int GetMessageId(TLMessagesSlice dialogs) { var all_messages = dialogs.Messages.AsEnumerable().ToList(); lastmessage = all_messages.Where(c => c.GetType() == typeof(TLMessage)).Cast <TLMessage>().ElementAt(0); int msg_id = lastmessage.Id; return(msg_id); }
public bool AccInStock(TLMessagesSlice messages) { TLMessage message = (TLMessage)messages.Messages.AsEnumerable().ElementAt(0); if (message.Message == "🕹 В этой категории пока нету аккаунтов\n🚁 Бот напишет вам как пополнит аккаунты" || message.Message == "🕹 There currently are no available accounts in this category.\n🚁 Bot will send you a message after replenishment of accounts.") { return(false); } else { return(true); } }
public void GetLanguage(TLMessagesSlice msgs) { var lastmsg = (TLMessage)msgs.Messages.AsEnumerable().ElementAt(0); if (lastmsg.Message == "📍 Choose what you need:") { Account.language = "en"; } else if (lastmsg.Message == "📍 Выберите что вам нужно:") { Account.language = "ru"; } }
public bool IsMedia(TLMessagesSlice messages) { TLMessage message = (TLMessage)messages.Messages.AsEnumerable().ElementAt(0); TLMessageMediaDocument mediadata = (TLMessageMediaDocument)message.Media; if (mediadata == null) { return(false); } else { return(true); } }
public TLMessagesSlice GetHistory(TelegramClient client) { try { var result = (TLMessages)client.GetHistoryAsync(peer).Result; TLMessagesSlice msgs = new TLMessagesSlice(); msgs.Messages = result.Messages; msgs.Users = result.Users; msgs.Chats = result.Chats; return(msgs); } catch (System.InvalidCastException) { var result = (TLMessagesSlice)client.GetHistoryAsync(peer).Result; return(result); } }
public virtual async Task DownloadFileFromContactTest() { TelegramClient client = this.NewClient(); TelegramAuthModel authModel = new TelegramAuthModel() { ApiId = this.ApiId, ApiHash = this.ApiHash }; await client.AuthenticateAsync(authModel); TeleSharp.TL.Contacts.TLContacts result = await client.GetContactsAsync(); TLUser user = result.Users .OfType <TLUser>() .FirstOrDefault(x => x.Phone == this.NumberToSendMessage); TLInputPeerUser inputPeer = new TLInputPeerUser() { UserId = user.Id }; TLMessagesSlice res = await client.SendRequestAsync <TLMessagesSlice>(new TLRequestGetHistory() { Peer = inputPeer }); TLDocument document = res.Messages .OfType <TLMessage>() .Where(m => m.Media != null) .Select(m => m.Media) .OfType <TLMessageMediaDocument>() .Select(md => md.Document) .OfType <TLDocument>() .First(); TeleSharp.TL.Upload.TLFile resFile = await client.GetFile( new TLInputDocumentFileLocation() { AccessHash = document.AccessHash, Id = document.Id, Version = document.Version }, document.Size); Assert.IsTrue(resFile.Bytes.Length > 0); }
static async Task runAsync(string[] args) { var config = System.IO.File.ReadAllLines("client.config"); var connectionInfo = new ConnectionInfo(config[2], config[3], new PasswordAuthenticationMethod(config[3], config[4])); var sshClient = new SshClient(connectionInfo); var sshCommand = config[5]; var client = new TelegramClient(int.Parse(config[0]), config[1]); await client.ConnectAsync(); if (!client.IsUserAuthorized()) { Console.WriteLine("Please enter your phone number"); var number = Console.ReadLine(); var hash = await client.SendCodeRequestAsync(number); Console.WriteLine("Enter the code you recieved from Telegram"); var code = Console.ReadLine(); TLUser user = null; try { user = await client.MakeAuthAsync(number, hash, code); } catch (CloudPasswordNeededException) { var password = await client.GetPasswordSetting(); Console.WriteLine("Enter your 2FA Password"); var password_str = Console.ReadLine(); user = await client.MakeAuthWithPasswordAsync(password, password_str); } } var result = await client.GetContactsAsync(); var userToSendTo = result.Users .Where(x => x.GetType() == typeof(TLUser)) .Cast <TLUser>() .FirstOrDefault(x => x.Username == "browny99"); var logPeer = new TLInputPeerUser() { UserId = userToSendTo.Id }; await client.SendMessageAsync(logPeer, "Started monitoring"); string UserNameToSendMessage = "@corgigroupagreebot"; var unameResult = await client.SearchUserAsync(UserNameToSendMessage); var userByName = unameResult.Users .Where(x => x.GetType() == typeof(TLUser)) .OfType <TLUser>() .FirstOrDefault(x => x.Username == UserNameToSendMessage.TrimStart('@')); int retryCounter = 0; while (!System.IO.File.Exists("cancel.wjdummy")) { try { TLInputPeerUser botToCheck = new TLInputPeerUser() { UserId = userByName.Id, AccessHash = (long)userByName.AccessHash }; await client.SendMessageAsync(botToCheck, "/start"); await Task.Delay(TimeSpan.FromSeconds(30)); TLAbsMessages history = await client.GetHistoryAsync(botToCheck, limit : 1); TLMessagesSlice slice = (TLMessagesSlice)history; var message = ((TLMessage)slice.Messages.ElementAt(0)); if (message.Out == false && message.Message.StartsWith("Hey, good to see you again")) { var request = new TLRequestReadHistory(); request.Peer = botToCheck; await client.SendRequestAsync <TLAffectedMessages>(request); retryCounter = 0; } else { retryCounter++; await client.SendMessageAsync(logPeer, "30 sec unresponsive"); } if (retryCounter > 5) { sshClient.Connect(); var res = sshClient.CreateCommand(sshCommand).Execute(); sshClient.Disconnect(); await client.SendMessageAsync(logPeer, "Restarted server\n\n" + res); await Task.Delay(TimeSpan.FromSeconds(90)); retryCounter = 0; } } catch (Exception e) { try { await client.SendMessageAsync(logPeer, "Error: \n" + e.ToString()); } catch (Exception ex) { Console.WriteLine($"ERROR\n\n{e}\n{ex}\n\nENDERROR"); return; } } } }
private async void TLCode() { try { int api_id = 110553; string api_hash = "9f3a9f8bd417e76ce805d394537c3f03"; string phone = "79850156275"; string guid = "9A5EF0EA-76A5-49AB-ABEF-F412848A706B"; string fullPath = Directory.GetCurrentDirectory() + "\\" + guid + ".dat"; #region Connect var client = new TelegramClient(api_id, api_hash, new FileSessionStore(), fullPath); bool conect = await client.ConnectAsync(); //var hash = await client.SendCodeRequestAsync(phone); //var code = "51971"; //var user = await client.MakeAuthAsync(phone, hash, code); #endregion #region GetCotact var absDialogs = (TLDialogs)await client.GetUserDialogsAsync(); //TLDialogs dialogs = (TLDialogs) absDialogs; //var chat = absDialogs.Chats.ToList() // .Where(c => c.GetType() == typeof(TLChannel)) // .Cast<TLChannel>() // .FirstOrDefault(c => c.Title == "Йобатряд_Mint"); var chatWars = absDialogs.Users.ToList() .Where(c => c.GetType() == typeof(TLUser)) .Cast <TLUser>() .FirstOrDefault(c => c.FirstName == "Chat Wars"); #endregion #region SendMessage //await client.SendTypingAsync(new TLInputPeerUser() { UserId = chatWars.Id }); Thread.Sleep(300); //Using TLInputPeerUser with access hash: //try //{ // await client.SendMessageAsync(new TLInputPeerUser() { UserId = chatWars.Id, AccessHash = chatWars.AccessHash.Value }, "🌲Лес"); //} //catch (Exception e) //{ // Debug.Print("Using TLInputPeerUser with access hash:"); // Debug.Print(e.Message); //} TLMessagesSlice x = (TLMessagesSlice)await client.GetHistoryAsync(new TLInputPeerUser() { UserId = chatWars.Id, AccessHash = chatWars.AccessHash.Value }, 0, Int32.MaxValue, 100); var x_new = x.Messages.ToList().Where(c => c.GetType() == typeof(TLMessage)); foreach (TLMessage a in x_new) { string s = String.Join(";", a.Id.ToString(), a.FromId, a.Message, a.Date); } Debug.Print("-------------------------"); #endregion } catch (Exception e) { Debug.Print("------Error Message------"); Debug.Print(e.Message); Debug.Print("-------------------------"); Debug.Print("----------Error----------"); Debug.Print(e.ToString()); Debug.Print("-------------------------"); } }
private async Task GetMessages() { try { TLAbsDialogs Dialogs = await Client.GetUserDialogsAsync(); TLDialogs Dlogs = Dialogs as TLDialogs; int i = 0; foreach (TLUser user in Dlogs.users.lists) { TLAbsMessages messages = null; string type = (Dlogs.dialogs.lists[i].peer.GetType() + "").Replace("TeleSharp.TL.", ""); string peerID = ""; //MessageBox.Show(type); switch (type) { case "TLPeerUser": TLInputPeerUser ipeer = new TLInputPeerUser(); ipeer.access_hash = (long)user.access_hash; ipeer.user_id = user.id; peerID = user.id + ""; messages = await Client.GetHistoryAsync(ipeer, 0, 999999, 1); break; case "TLPeerChannel": break; case "TLPeerChat": break; case "TLPeerNotifyEventsAll": break; case "TLPeerNotifyEventsEmpty": break; case "TLPeerNotifySettings": break; case "TLPeerNotifySettingsEmpty": break; case "TLPeerSettings": break; default: break; } if (messages != null) { try { TLMessages msgs = messages as TLMessages; TLMessagesSlice msgs2 = messages as TLMessagesSlice; if (msgs != null) { foreach (var msg in msgs.messages.lists) { string uniq = ""; TLMessage msgg = msg as TLMessage; if (msgg != null) { uniq = peerID + "_" + msgg.id + "# " + msgg.message; if (UpdatesList.Items.IndexOf(uniq) < 0) { UpdatesList.Items.Add(uniq); } } } } else if (msgs2 != null) { foreach (var msg in msgs2.messages.lists) { string uniq = ""; TLMessage msgg = msg as TLMessage; if (msgg != null) { uniq = peerID + "_" + msgg.id + "# " + msgg.message; if (UpdatesList.Items.IndexOf(uniq) < 0) { UpdatesList.Items.Add(uniq); } } } } } catch (Exception ex) { ErrorsBox.Items.Add(ex.Message); } } i++; } //await GetUpdates(); } catch (Exception ex) { ErrorsBox.Items.Add(ex.Message); } }
private async WTask.Task GetMessages(int uID, long uAccess, string type = "chat") { Loading(null, true); TLRequestMessagesGetHistory reqH = new TLRequestMessagesGetHistory(); reqH.setAddOffset(0); reqH.setLimit(100); reqH.setOffsetId(0); reqH.setOffsetDate(0); reqH.setMinId(0); reqH.setMaxId(999999); TLInputPeerUser upeer = new TLInputPeerUser(); TLInputPeerChat cpeer = new TLInputPeerChat(); TLInputPeerChannel chpeer = new TLInputPeerChannel(); switch (type.ToLower()) { case "user": upeer = new TLInputPeerUser(); upeer.setAccessHash(uAccess); upeer.setUserId(uID); reqH.setPeer(upeer); break; case "chat": cpeer = new TLInputPeerChat(); cpeer.setChatId(uID); reqH.setPeer(cpeer); break; case "channel": chpeer = new TLInputPeerChannel(); chpeer.setAccessHash(uAccess); chpeer.setChannelId(uID); reqH.setPeer(chpeer); break; default: break; } //var res = NewApi.Api().doRpcCall(reqH); var res = await WTask.Task.Run(() => NewApi.Api().doRpcCall(reqH)); string notify = ""; if (res == null) { notify = "درخواست نتیجه ای نداشت!"; //NotifyBar.ForeColor = Color.Orange; } else { MessagesDGV.Rows.Clear(); if (res.GetType() == typeof(TLMessages)) { try { TLMessages Messages = (TLMessages)res; foreach (var msg in Messages.getMessages()) { try { TLMessage message = (TLMessage)msg; MessagesDGV.Rows.Add(message.getDate(), message.getId(), message.getMessage(), uID, uAccess); } catch { } } } catch { } } else if (res.GetType() == typeof(TLMessagesSlice)) { try { TLMessagesSlice Messages = (TLMessagesSlice)res; foreach (var msg in Messages.getMessages()) { try { TLMessage message = (TLMessage)msg; MessagesDGV.Rows.Add(message.getDate(), message.getId(), message.getMessage(), uID, uAccess); } catch { } } } catch { } } else if (res.GetType() == typeof(TLChannelMessages)) { TLChannelMessages Messages = (TLChannelMessages)res; foreach (var msg in Messages.getMessages()) { try { TLMessage message = (TLMessage)msg; MessagesDGV.Rows.Add(message.getDate(), message.getId(), message.getMessage(), uID, uAccess); } catch { } } } } Loading(null, false, notify); }