Esempio n. 1
0
        public async Task MarkUserMessagesAsReadAsync(TLAbsInputPeer peer)
        {
            var r = new TLRequestReadHistory
            {
                peer   = peer,
                max_id = 0
            };

            await _telegramClient.SendRequestAsync <object>(r);
        }
Esempio n. 2
0
 private void MarkMessageRead(TelegramClient client, TLAbsInputPeer peer, int id)
 {
     // An exception happens here but it's not fatal.
     try
     {
         var request = new TLRequestReadHistory();
         request.MaxId = id;
         request.Peer  = peer;
         client.SendRequestAsync <bool>(request).Wait();
     }
     catch { }
 }
Esempio n. 3
0
        internal static async Task MarkMessagesAsRead()
        {
            try
            {
                Console.WriteLine("Marking messages as read....");
                var client1 = Auth.Client1();
                var client2 = Auth.Client2();
                await client1.ConnectAsync();

                var target2 = new TLInputPeerUser {
                    UserId = User2Id
                };
                var readed2 = new TLRequestReadHistory {
                    Peer = target2
                };
                await client1.SendRequestAsync <TLAffectedMessages>(readed2);

                Console.WriteLine("Marked messages from " + ImporterApp.NameUser2 + " as read in " + Auth.phone1 + " account.");
                await client2.ConnectAsync();

                var target1 = new TLInputPeerUser {
                    UserId = User1Id
                };
                var readed1 = new TLRequestReadHistory {
                    Peer = target1
                };
                await client2.SendRequestAsync <TLAffectedMessages>(readed1);

                Console.WriteLine("Marked messages from " + ImporterApp.NameUser1 + " as read in " + Auth.phone2 + " account.");
            }
            catch (FloodException ex)
            {
                string time;
                time = ex.TimeToWait.ToString();
                Console.WriteLine(floodlimit + time);
                Thread.Sleep(ex.TimeToWait);
                MarkMessagesAsRead().Wait();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unknown error while marking messages as read. Here is the full exception code:\n\n" + ex);
                Console.WriteLine("\n\nPress ENTER to try it again. If you receive another error after trying again, please, post the full exception code in a new issue in GitHub, describing the issue as much as possible.");
                Console.ReadLine();
                MarkMessagesAsRead().Wait();
            }
            return;
        }
Esempio n. 4
0
 public async Task ReadMessage(TLUser user, TLMessage message)
 {
     try
     {
         int  ID   = ((TeleSharp.TL.TLUser)user).Id;
         long hash = ((TeleSharp.TL.TLUser)user).AccessHash.Value;
         var  req  = new TLRequestReadHistory()
         {
             ConfirmReceived = true,
             MessageId       = message.Id,
             Peer            = new TLInputPeerUser {
                 UserId = ID, AccessHash = hash
             },
             Sequence = 2
         };
         await client.SendRequestAsync <Boolean>(req);
     }catch (Exception ex)
     {
         //////////////////////////////////////Causes stuped undocumented exceptions, but works norm
     }
 }
Esempio n. 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;
                    }
                }
            }
        }