//public virtual async Task<string> GetLastMessageFromUser(string sUserName) //{ // string sResult; // var client = new TLSharp.Core.TelegramClient(apiId, apiHash); // await client.ConnectAsync(); // var normalizedUser = (sUserName.StartsWith("@") ? // sUserName.Substring(1, sUserName.Length - 1) : // sUserName).ToLower(); // var dialogs = (TLDialogs)await client.GetUserDialogsAsync(); // var user = dialogs.Users // .Where(x => x.GetType() == typeof(TLUser)) // .OfType<TLUser>() // .FirstOrDefault(x => x.Username != null && x.Username.ToLower() == normalizedUser); // TLAbsMessages tlAbsMessages = await client.GetHistoryAsync(new TLInputPeerUser() { // UserId = user.Id, // AccessHash = user.AccessHash.Value // }, 0, -1, 100); // TLMessages tlMessages = (TLMessages)tlAbsMessages; // TLMessage lastmessage = (TLMessage)tlMessages.Messages[0]; // sResult = lastmessage.FromId.ToString() + ":" + lastmessage.Message; // return sResult; //} public virtual async Task <TLMessage> GetLastMessageFromUser(string sUserName) { TLMessage lastmessage = null; var client = new TLSharp.Core.TelegramClient(apiId, apiHash); await client.ConnectAsync(); var normalizedUser = (sUserName.StartsWith("@") ? sUserName.Substring(1, sUserName.Length - 1) : sUserName).ToLower(); var dialogs = (TLDialogs)await client.GetUserDialogsAsync(); var user = dialogs.Users .Where(x => x.GetType() == typeof(TLUser)) .OfType <TLUser>() .FirstOrDefault(x => x.Username != null && x.Username.ToLower() == normalizedUser); TLAbsMessages tlAbsMessages = await client.GetHistoryAsync(new TLInputPeerUser() { UserId = user.Id, AccessHash = user.AccessHash.Value }, 0, -1, 100); if (tlAbsMessages.GetType() == typeof(TLMessagesSlice)) { var castMessages = (TLMessagesSlice)tlAbsMessages; lastmessage = (TLMessage)castMessages.Messages[0]; } else if (tlAbsMessages.GetType() == typeof(TLMessages)) { TLMessages tlMessages = (TLMessages)tlAbsMessages; lastmessage = (TLMessage)tlMessages.Messages[0]; } return(lastmessage); }
public void AddAndFilterMessages(TLAbsMessages msgs) { try { all_messages = (TLMessages)msgs; for (int i = 0; i < all_messages.Messages.Count; i++) { if (all_messages.Messages[i].ToString() == "TeleSharp.TL.TLMessage") { var message = (TLMessage)all_messages.Messages[i]; string tmp_msg = message.Message.ToString(); if (tmp_msg.Contains("instagram.com")) { filtered_messages.Add(message); } } else { //MessageBox.Show("To MessageService - pierdole to..."); } } } catch (Exception ex) { System.Diagnostics.Debug.Write("sad " + ex.Message.ToString()); } }
private async Task UpdateChat(TLAbsInputPeer peer, int lastMessageId) { TLAbsMessages history = null; //int retries = 5; //for (int i = 0; i < retries; ++i) //{ // try // { // history = await client.GetHistoryAsync(peer, minId: currentChatLastMessageId); // break; // } // catch (IOException) // { // await client.ConnectAsync(true); // if (i == retries - 1) // { // throw; // } // } // catch (InvalidOperationException ex) // { // if (ex.Message == "Couldn't read the packet length") // { // await client.ConnectAsync(true); // } // else throw; // } //} history = await client.GetHistoryAsync(peer, minId : currentChatLastMessageId); var result = TelegramMessages.FromTLMessages(history); if (result == null) { currentChatLastMessageId = 0; return; } currentChatLastMessageId = result.Messages.OfType <TLMessage>().FirstOrDefault()?.Id ?? 0; foreach (var item in result.Messages.OfType <TLMessage>().Reverse()) { var senderU = result.Users.OfType <TLUser>().FirstOrDefault(x => x.Id == item.FromId); rtbMain.AppendText(Environment.NewLine); rtbMain.AppendText(new UserView(senderU, item)); } rtbMain.ScrollToEnd(); }
public static TelegramMessages FromTLMessages(TLAbsMessages absMessages) { if (absMessages is TLMessages messages) { return(new TelegramMessages(messages)); } else if (absMessages is TLMessagesSlice messagesSlice) { return(new TelegramMessages(messagesSlice)); } else if (absMessages is TLChannelMessages channelMessages) { return(new TelegramMessages(channelMessages)); } else { throw new Exception("Unsupported type " + absMessages.GetType()); } }
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 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 void GetHistory_Click(object sender, EventArgs e) { try { string path1 = Path.Combine(Application.StartupPath, "Download"); string path2 = Path.Combine(Application.StartupPath, "Download", tbNumber.Text); if (!Directory.Exists(path1)) { Directory.CreateDirectory(path1); } if (!Directory.Exists(path2)) { Directory.CreateDirectory(path2); } TxtHistory.Clear(); _resultUserMessages.Clear(); NumberToSendMessage = tbNumber.Text; if (string.IsNullOrWhiteSpace(NumberToSendMessage)) { return; } // this is because the contacts in the address come without the "+" prefix var normalizedNumber = NumberToSendMessage.StartsWith("+") ? NumberToSendMessage.Substring(1, NumberToSendMessage.Length - 1) : NumberToSendMessage; var client = NewClient(); await client.ConnectAsync(); var result = await client.GetContactsAsync(); var user = result.users.lists.ToList() .OfType <TLUser>() .FirstOrDefault(x => x.phone == normalizedNumber); if (user == null) { throw new System.Exception("Number was not found in Contacts List of user: "******"TeleSharp.TL.TLMessageMediaDocument": { var media = (TLMessageMediaDocument)item.Media; var document = (TLDocument)media.document; TLDocumentAttributeFilename filename = null; try { var count = document.attributes.lists.ToList().Count; switch (count) { case 1: { filename = (TLDocumentAttributeFilename)(document.attributes.lists.ToList()[0]); break; } case 2: { filename = (TLDocumentAttributeFilename)(document.attributes.lists.ToList()[1]); break; } case 3: { try { filename = (TLDocumentAttributeFilename)(document.attributes.lists.ToList()[2]); } catch { filename = (TLDocumentAttributeFilename)(document.attributes.lists.ToList()[1]); TxtHistory.Text += "==>" + item.FromId + " : " + "@Gif \n"; } break; } default: break; } } catch (Exception) { } var resFile = await client.GetFile( new TLInputDocumentFileLocation() { access_hash = document.access_hash, id = document.id, version = document.version, }, document.size); SaveData(resFile.bytes, filename.file_name); break; } case "TeleSharp.TL.TLMessageMediaPhoto": { var media = (TLMessageMediaPhoto)item.Media; var caption = media.caption; var photo = (TLPhoto)media.photo; var count = photo.sizes.lists.ToList().Count(); var photosize = (TLPhotoSize)photo.sizes.lists.ToList()[count - 1]; var photoLocation = (TLFileLocation)photosize.location; var resFile = await client.GetFile(new TLInputFileLocation() { local_id = photoLocation.local_id, secret = photoLocation.secret, volume_id = photoLocation.volume_id }, photosize.size, 0); string filenamet = ""; Guid name; var imageType = resFile.type; switch (imageType.Constructor) { case 8322574: { name = Guid.NewGuid(); filenamet = name.ToString() + ".jpg"; break; } case -891180321: { name = Guid.NewGuid(); filenamet = name.ToString() + ".gif"; break; } case 172975040: { name = Guid.NewGuid(); filenamet = name.ToString() + ".png"; break; } default: { name = Guid.NewGuid(); filenamet = name.ToString(); break; } } SaveData(resFile.bytes, filenamet); break; } default: { break; } } } else { TxtHistory.Text += "==>" + item.FromId + " : " + item.Message + Environment.NewLine; TxtHistory.AppendText("\n"); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }