Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
 public TelegramMessages(TLMessagesSlice messages)
 {
     Messages = messages.Messages;
     Chats    = messages.Chats;
     Users    = messages.Users;
     Count    = messages.Count;
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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";
            }
        }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 8
0
 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);
     }
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
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;
                    }
                }
            }
        }
Ejemplo n.º 11
0
        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("-------------------------");
            }
        }
Ejemplo n.º 12
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);
            }
        }
Ejemplo n.º 13
0
        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);
        }