public async Task MarkUserMessagesAsReadAsync(TLAbsInputPeer peer) { var r = new TLRequestReadHistory { peer = peer, max_id = 0 }; await _telegramClient.SendRequestAsync <object>(r); }
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 { } }
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; }
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 } }
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; } } } }