Пример #1
0
        //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);
        }
Пример #2
0
 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());
     }
 }
Пример #3
0
        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();
        }
Пример #4
0
 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());
     }
 }
Пример #5
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;
                    }
                }
            }
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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);
            }
        }