public virtual async Task MakeAuthAsync(string code) { var client = new TLSharp.Core.TelegramClient(apiId, apiHash); await client.ConnectAsync(); var user = await client.MakeAuthAsync(PhoneNumber, phoneCodeHash, code); }
//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); }
private async void btnCheck_Click(object sender, EventArgs e) { var client = new TLSharp.Core.TelegramClient(BuildVar.apiId, BuildVar.apiHash); await client.ConnectAsync(); if (client.IsConnected) { try { btnCheck.Enabled = false; for (int i = 0; i < listBox1.Items.Count; i++) { var number = listBox1.Items[i].ToString(); var normalizedNumber = number.StartsWith("+") ? number.Substring(1) : number; var result = await client.IsPhoneRegisteredAsync(normalizedNumber); if (result) { listBox2.Items.Add(number); listBox1.Items.RemoveAt(i); } } btnCheck.Enabled = true; } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
public static List <ChannelInfo> Test(List <Channel> channels, Int32 id_user) { var client = new TLSharp.Core.TelegramClient(833968, "a6c65fd9460c44e42c5268b5601c849f"); var isAuth = client.IsUserAuthorized(); Console.WriteLine($"Файл авторизации существует: {isAuth}"); client.ConnectAsync().Wait(); var res_2 = StartInfoChannel.GetInfoGroup(channels, client).Result; List <ChannelInfo> ListFoundChannels = StartInfoChannel.GetChannelByUser(res_2, id_user); foreach (var item in ListFoundChannels) { foreach (var item2 in item.Users) { Console.WriteLine("User: "******"Admin: " + item2.FirstName); } } return(ListFoundChannels); }
protected async System.Threading.Tasks.Task SendMessaggioTelegram(string numeroTelefono, string code, string messaggio) { var client = new TLSharp.Core.TelegramClient(106191, "2a5c0da8fcb3acfdf501c3f17fb0fa5f"); await client.ConnectAsync(); var hash = await client.SendCodeRequestAsync(numeroTelefono); var user = await client.MakeAuthAsync(numeroTelefono, hash, code); //get available contacts var result = await client.GetContactsAsync(); //find recipient in contacts var customer = result.Users .Where(x => x.GetType() == typeof(TeleSharp.TL.TLUser)) .Cast <TeleSharp.TL.TLUser>() .FirstOrDefault(x => x.Phone == numeroTelefono); /*if (user.ToList().Count != 0) * { * foreach (var u in user) * { * if (u.phone.Contains("3965604")) * { * //send message * await client.SendMessageAsync(new TLInputPeerUser() { user_id = u.id }, textBox3.Text); * } * } * }*/ // @channelname or chat_id, messaggio da inviare await client.SendMessageAsync(new TeleSharp.TL.TLInputPeerUser() { UserId = customer.Id }, messaggio); }
protected async System.Threading.Tasks.Task SendCodeTelegram(string numeroTelefono) { var client = new TLSharp.Core.TelegramClient(106191, "2a5c0da8fcb3acfdf501c3f17fb0fa5f"); await client.ConnectAsync(); var hash = await client.SendCodeRequestAsync(numeroTelefono); }
private async void btnCheck_Click(object sender, EventArgs e) { var client = new TLSharp.Core.TelegramClient(BuildVar.apiId, BuildVar.apiHash); await client.ConnectAsync(); if (client.IsConnected) { try { btnCheck.Enabled = false; var number = txtNumber.Text; // check mikonim age + dasht bayad ouno hazf konim // age dasht ke hazfesh mikonim, age nadasht ham bikhialesh mishim var normalizedNumber = number.StartsWith("+") ? number.Substring(1) : number; var result = await client.IsPhoneRegisteredAsync(normalizedNumber); MessageBox.Show((result ? "This Number Registered." : "This Number Not Registered.")); btnCheck.Enabled = true; } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
public virtual async Task AuthUser() { var client = new TLSharp.Core.TelegramClient(apiId, apiHash); await client.ConnectAsync(); phoneCodeHash = await client.SendCodeRequestAsync(PhoneNumber); }
public virtual async Task <bool> IsUserAuthorized() { var client = new TLSharp.Core.TelegramClient(apiId, apiHash); await client.ConnectAsync(); return(client.IsUserAuthorized()); }
public async Task <Boolean> Start(Int32 id, String hash) { //if (client == null || client.IsUserAuthorized() == false) //{ // return false; //} client = new TLSharp.Core.TelegramClient(id, hash); await client.ConnectAsync(); return(client.IsConnected); }
private async Task MarkAsRead(TLInputPeerChannel target, TLSharp.Core.TelegramClient telegram) { var ch = new TLInputChannel() { ChannelId = target.ChannelId, AccessHash = target.AccessHash }; var request = new TLRequestReadHistory() { Channel = ch, }; await telegram.SendRequestAsync <bool>(request); }
private async void Auth(TLSharp.Core.TelegramClient client, string PhoneNumber) { if (client.IsUserAuthorized()) { return; } //인증-한번 받으면 된다 var hash = await client.SendCodeRequestAsync(PhoneNumber); var code = "20948"; // you can change code in debugger var user = await client.MakeAuthAsync(PhoneNumber, hash, code); }
public virtual async Task SendMessageToUser(string toUserName, string message) { var client = new TLSharp.Core.TelegramClient(apiId, apiHash); await client.ConnectAsync(); var normalizedUser = (toUserName.StartsWith("@") ? toUserName.Substring(1, toUserName.Length - 1) : toUserName).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); if (user != null) { await client.SendTypingAsync(new TLInputPeerUser() { UserId = user.Id, AccessHash = user.AccessHash.Value }); await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id, AccessHash = user.AccessHash.Value }, message); } //await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id, AccessHash = user.AccessHash.Value }, message); //send message //await client.SendMessageAsync(new TLInputPeerChannel() { ChannelId = chat.Id, AccessHash = chat.AccessHash.Value }, "OUR_MESSAGE"); //var result = await client.SearchUserAsync(normalizedUser, 10); //if (result.Users.Count > 0) //{ // TLUser user = (TLUser)result.Users[0]; // await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id }, message); //} //var normalizedNumber1 = toUserName.StartsWith("@") ? // toUserName.Substring(1, toUserName.Length - 1) : // toUserName; //var user = result.Users // .OfType<TLUser>() // .FirstOrDefault(x => x.Username == toUserName); //await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id }, message); }
/// <summary> /// 전화 번호로 /// </summary> /// <param name="client"></param> /// <param name="PhoneNumber"></param> /// <param name="msg"></param> private async void SendMessageByPhoneNumber(TLSharp.Core.TelegramClient client, string PhoneNumber, string msg) { //연락처를 받아 온다 var rst = await client.GetContactsAsync(); //사용자를 찾는다. var usr = rst.users.lists .Where(x => x.GetType() == typeof(TLUser)) .Cast <TLUser>() .FirstOrDefault(x => x.phone.EndsWith(PhoneNumber)); TLUser tl; await client.SendMessageAsync(new TLInputPeerUser() { user_id = usr.id }, msg); }
public virtual async Task SendMessage(string toNumber, string message) { var client = new TLSharp.Core.TelegramClient(apiId, apiHash); await client.ConnectAsync(); var dialogs = (TLDialogs)await client.GetUserDialogsAsync(); // this is because the contacts in the address come without the "+" prefix var normalizedNumber = toNumber.StartsWith("+") ? toNumber.Substring(1, toNumber.Length - 1) : toNumber; var user = dialogs.Users .OfType <TLUser>() .FirstOrDefault(x => x.Phone == normalizedNumber); await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id, AccessHash = user.AccessHash.Value }, message); }
private async void btStart_Click(object sender, EventArgs e) { var client = new TLSharp.Core.TelegramClient(teleApi.apiId, teleApi.apiHash); await client.ConnectAsync(); while (true) { var state = await client.SendRequestAsync <TLState>(new TLRequestGetState()); var req = new TLRequestGetDifference() { Date = state.Date, Pts = state.Pts, Qts = state.Qts }; var diff = await client.SendRequestAsync <TLAbsDifference>(req) as TLDifference; if (diff != null) { foreach (var upd in diff.OtherUpdates.ToList().OfType <TLUpdateNewChannelMessage>()) { tbReceipt.Text = (upd.Message as TLMessage).Message + tbReceipt.Text; //Console.WriteLine((upd.Message as TLMessage).Message); } foreach (var ch in diff.Chats.ToList().OfType <TLChannel>().Where(x => !x.Left)) { var ich = new TLInputChannel() { ChannelId = ch.Id, AccessHash = (long)ch.AccessHash }; var readed = new TeleSharp.TL.Channels.TLRequestReadHistory() { Channel = ich, MaxId = -1 }; await client.SendRequestAsync <bool>(readed); } } await Task.Delay(500); } }
private async Task ForwardMessagesToChannelHeap(TLDialogs dialogs, IEnumerable <TLMessage> messages, TLInputPeerChannel target, TLSharp.Core.TelegramClient telegram) { var channel = dialogs.Chats .OfType <TLChannel>() .FirstOrDefault(c => c.Title == _myChannelConfiguration.ChannelHeapName); var mgs = new TLRequestForwardMessages() { Id = new TLVector <int>(messages.Select(p => p.Id)), ToPeer = new TLInputPeerChannel() { ChannelId = channel.Id, AccessHash = channel.AccessHash.Value }, FromPeer = new TLInputPeerChannel() { ChannelId = target.ChannelId, AccessHash = target.AccessHash }, RandomId = new TLVector <long>(messages.Select(p => Helpers.GenerateRandomLong())) }; await Task.Delay(10000); await telegram.SendRequestAsync <TLUpdates>(mgs); }
public static async Task <Int32> GetCountParticipantsChannelandSuperGroup(String channelName, TLSharp.Core.TelegramClient client) { if (client == null) { return(-1); } TLAbsDialogs dialogs_temp = await client.GetUserDialogsAsync(); TLDialogsSlice dialogs = dialogs_temp as TLDialogsSlice; TeleSharp.TL.Messages.TLChatFull res = new TeleSharp.TL.Messages.TLChatFull(); try { TLChannel channelInfo = (await client.SendRequestAsync <TeleSharp.TL.Contacts.TLResolvedPeer>( new TeleSharp.TL.Contacts.TLRequestResolveUsername { Username = channelName }).ConfigureAwait(false)).Chats.Last() as TeleSharp.TL.TLChannel; TLRequestGetFullChannel req = new TLRequestGetFullChannel() { Channel = new TLInputChannel() { AccessHash = channelInfo.AccessHash.Value, ChannelId = channelInfo.Id } }; res = await client.SendRequestAsync <TeleSharp.TL.Messages.TLChatFull>(req); } catch { return(-1); } return((res.FullChat as TLChannelFull).ParticipantsCount.Value); }
/// <summary> /// Изменении сессии /// </summary> /// <param name="session"></param> public void Start(SessionTelegram session) => client = session.client;
private async Task ExportMessagesToWord() { using var telegram = new TLSharp.Core.TelegramClient(_authConfiguration.ApiId, _authConfiguration.ApiHash, null, _authConfiguration.SessionUserId); await telegram.ConnectAsync(); await Task.Delay(10000); var dialogs = (TLDialogs)await telegram.GetUserDialogsAsync(); var channel = dialogs.Chats .OfType <TLChannel>() .FirstOrDefault(c => c.Title == _myChannelConfiguration.ChannelHeapName); var inputPeer = new TLInputPeerChannel() { ChannelId = channel.Id, AccessHash = (long)channel.AccessHash }; var offset = 0; var sig = false; await using var fs = new FileStream( Path.Combine( _reportConfiguration.FullPath, $"{_reportConfiguration.Name}-{DateTime.Now:MM-dd-yyyy}.docx" ), FileMode.Create, FileAccess.Write ); var doc = new XWPFDocument(); var paragraph = doc.CreateParagraph(); var run = paragraph.CreateRun(); while (true) { if (sig) { break; } await Task.Delay(10000); var res = await telegram.SendRequestAsync <TLChannelMessages>( new TLRequestGetHistory() { Peer = inputPeer, Limit = 100, AddOffset = offset, OffsetId = 0 } ); var msgs = res.Messages; if (res.Count <= offset) { break; } offset += msgs.Count; foreach (var msg in msgs) { if (!(msg is TLMessage message)) { continue; } if (string.IsNullOrEmpty(message.Message)) { continue; } if (message.Date > (int)DateTimeOffset.Parse(DateTime.UtcNow.ToString("MM/dd/yyyy")) .ToUnixTimeSeconds()) { continue; } if (message.Date < (int)DateTimeOffset.Parse(DateTime.UtcNow.AddDays(-1).ToString("MM/dd/yyyy")) .ToUnixTimeSeconds()) { sig = true; break; } await Task.Delay(1000); var ch = dialogs.Chats .OfType <TLChannel>() .FirstOrDefault(c => c.Id == message.FwdFrom.ChannelId); if (ch == null) { continue; } run.AppendText(@$ "Канал: {ch.Title}"); run.AddCarriageReturn(); run.AppendText( @$ "Дата: {new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(message.Date):d-M-yyyy HH:mm:ss}" ); run.AddCarriageReturn(); run.AppendText( @$ "Сообщение: {message.Message.Replace(" \ n ", string.Empty).Replace(" \ r ", string.Empty).Replace(" \ t ", string.Empty)}" ); run.AddCarriageReturn(); run.AddCarriageReturn(); run.AddCarriageReturn(); } } doc.Write(fs); }
private async Task ForwardMessagesToChannelWithKeywords(TLDialogs dialogs, IEnumerable <TLMessage> messages, TLInputPeerChannel target, TLSharp.Core.TelegramClient telegram) { var messagesFiltered = messages .Where( p => Regex.IsMatch( p.Message.ToLower(), string.Join("|", _keywordsConfiguration.Keywords), RegexOptions.IgnoreCase ) ); if (messagesFiltered.ToList().Count < 1) { return; } var channel = dialogs.Chats .OfType <TLChannel>() .FirstOrDefault(c => c.Title == _myChannelConfiguration.ChannelWithKeywordsName); var mgs = new TLRequestForwardMessages() { Id = new TLVector <int>(messagesFiltered.Select(p => p.Id)), ToPeer = new TLInputPeerChannel() { ChannelId = channel.Id, AccessHash = channel.AccessHash.Value }, FromPeer = new TLInputPeerChannel() { ChannelId = target.ChannelId, AccessHash = target.AccessHash }, RandomId = new TLVector <long>(messagesFiltered.Select(p => Helpers.GenerateRandomLong())) }; await Task.Delay(10000); await telegram.SendRequestAsync <TLUpdates>(mgs); }
/// <summary> /// 서버와 연결을 시작합니다. /// </summary> public async Task Connect() { client = new TLSharp.Core.TelegramClient(_apiId, _apiHash); await client.ConnectAsync(); }
public static async Task <ModelParserInfo> ParserInfoAboutChannelAndSuperGroup(String channelName, TLSharp.Core.TelegramClient client, Int32 countMessageParse = 200) { ModelParserInfo info = new ModelParserInfo(); ChannelInfo result = new ChannelInfo(); List <Int32> AverageViews = new List <Int32>(); TLChannel channelInfo; if (client == null) { return(null); } var dialogs_temp = client.GetUserDialogsAsync().GetAwaiter().GetResult(); TLDialogsSlice dialogs = dialogs_temp as TLDialogsSlice; TeleSharp.TL.Messages.TLChatFull res = new TeleSharp.TL.Messages.TLChatFull(); channelInfo = (client.SendRequestAsync <TeleSharp.TL.Contacts.TLResolvedPeer>( new TeleSharp.TL.Contacts.TLRequestResolveUsername { Username = channelName }).ConfigureAwait(false)).GetAwaiter().GetResult().Chats.Last() as TeleSharp.TL.TLChannel; TLRequestGetFullChannel req = new TLRequestGetFullChannel() { Channel = new TLInputChannel() { AccessHash = channelInfo.AccessHash.Value, ChannelId = channelInfo.Id } }; res = client.SendRequestAsync <TeleSharp.TL.Messages.TLChatFull>(req).GetAwaiter().GetResult(); Int32 offset = 0; result.Channel = channelInfo; result.ChatFull = res; info.ChannelInfo = result; info.CountPeople = (res.FullChat as TLChannelFull).ParticipantsCount.Value; info.Avatar = (res.FullChat as TLChannelFull).ChatPhoto as TLPhoto; info.About = (res.FullChat as TLChannelFull).About; TLChannelMessages temp = new TLChannelMessages(); TLVector <TLAbsMessage> msgs = new TLVector <TLAbsMessage>(); do { try { temp = client.SendRequestAsync <TLChannelMessages> (new TLRequestGetHistory() { Peer = new TLInputPeerChannel() { ChannelId = result.Channel.Id, AccessHash = (long)result.Channel.AccessHash }, Limit = 500, AddOffset = offset, OffsetId = 0 }).GetAwaiter().GetResult(); msgs = temp.Messages; } catch { await Task.Delay(3000); } if (countMessageParse != 0) { offset = temp.Count - countMessageParse; countMessageParse = 0; } if (temp.Count > offset || temp.Count == 0) { offset += msgs.Count; foreach (var msg in msgs) { if (msg is TLMessage) { TLMessage sms = msg as TLMessage; if (sms.Views != null) { AverageViews.Add(sms.Views.Value); } info.CountMessage++; if (sms.Media != null) { info.CountMediaFiles++; if (sms.Media is TLMessageMediaDocument) { info.ChannelParserMediaInfo.CountVideo++; } else if (sms.Media is TLMessageMediaPhoto) { info.ChannelParserMediaInfo.CountPhoto++; } else if (sms.Media is TLMessageMediaWebPage) { info.ChannelParserMediaInfo.CountWebPag++; } else if (sms.Media is TLMessageMediaContact) { info.ChannelParserMediaInfo.CountContact++; } } } if (msg is TLMessageService) { continue; } } } else { break; } } while (temp.Count > offset || temp.Count == 0); if (AverageViews.Count != 0) { info.AverageViews = AverageViews.Sum() / AverageViews.Count; } return(info); }
public async Task <List <TLMessage> > GatherChannelHistory(string channelName, int offset = 0, int maxId = -1, int limit = 50) { List <TLMessage> _resultMessages = new List <TLMessage>(); var client = new TLSharp.Core.TelegramClient(apiId, apiHash); await client.ConnectAsync(); var dialogs = (TLDialogs)await client.GetUserDialogsAsync(); var chat = dialogs.Chats.ToList() .OfType <TLChannel>() .FirstOrDefault(c => c.Title == channelName); if (chat.AccessHash != null) { TLChannel channel = new TLChannel() { Id = chat.Id, AccessHash = chat.AccessHash }; var request = new TLRequestGetFullChannel(); var fullChat = await client.SendRequestAsync <TLRequestGetFullChannel>(request); //var request = new TLRequestGetFullChat() { ChatId = chat.Id }; //var fullChat = await client.SendRequestAsync<TeleSharp.TL.Messages.TLChatFull>(request); //var request = new TLRequestGetMessages() { Id = chat. }; //var fullChat = await client.SendRequestAsync<TeleSharp.TL.Channels.TLRequestGetMessages>(request); //var request = new TLRequestGetAllChats() { }; //var fullChat = await client.SendRequestAsync<TeleSharp.TL.Messages.TLRequestGetAllChats>(request); var tlAbsMessages = await client.GetHistoryAsync( new TLInputPeerChannel { ChannelId = chat.Id, AccessHash = chat.AccessHash.Value }, offset, maxId, limit); var tlChannelMessages = (TLChannelMessages)tlAbsMessages; for (var index = 0; index < tlChannelMessages.Messages.Count - 1; index++) { var tlAbsMessage = tlChannelMessages.Messages.ToList()[index]; var message = (TLMessage)tlAbsMessage; //Now you have the message and you can do what you need with it //the code below is an example of messages classification if (message.Media == null) { _resultMessages.Add(new TLMessage() { Id = message.Id, FromId = chat.Id, Message = message.Message, Views = message.Views, }); } else { switch (message.Media.GetType().ToString()) { case "TeleSharp.TL.TLMessageMediaPhoto": var tLMessageMediaPhoto = (TLMessageMediaPhoto)message.Media; _resultMessages.Add(new TLMessage() { Id = message.Id, FromId = chat.Id, Message = message.Message, Views = message.Views, Media = message.Media, }); break; //case "TeleSharp.TL.TLMessageMediaDocument": // var tLMessageMediaDocument = (TLMessageMediaDocument)message.media; // _resultMessages.Add(new ChannelMessage() // { // Id = message.id, // ChannelId = chat.id, // Content = tLMessageMediaDocument.caption, // Type = EnChannelMessage.MediaDocument, // Views = message.views ?? 0, // }); // break; //case "TeleSharp.TL.TLMessageMediaWebPage": // var tLMessageMediaWebPage = (TLMessageMediaWebPage)message.media; // string url = string.Empty; // if (tLMessageMediaWebPage.webpage.GetType().ToString() != "TeleSharp.TL.TLWebPageEmpty") // { // var webPage = (TLWebPage)tLMessageMediaWebPage.webpage; // url = webPage.url; // } // _resultMessages.Add(new ChannelMessage // { // Id = message.id, // ChannelId = chat.id, // Content = message.message + @" : " + url, // Type = EnChannelMessage.WebPage, // Views = message.views ?? 0, // }); // break; } } } } return(_resultMessages); }