/// <summary> /// Возвращает код-во людей /// </summary> /// <param name="channelName"></param> /// <returns>Получение кол-во людей (int) в канале , если что-то пошло не так вернет -1</returns> public async Task <Int32> GetCountParticipantsChannelandSuperGroup(String channelName) { 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); }
public TelegramDialogs(TLDialogsSlice dialogs) { Dialogs = dialogs.Dialogs; Messages = dialogs.Messages; Chats = dialogs.Chats; Users = dialogs.Users; Count = dialogs.Count; }
/// <summary> //Получаем список подписаных чатов /// </summary> /// <returns></returns> public async Task <StringBuilder> GetAllChatTelegram() { try { sb.Append("#\tDate\tTime\tMID\tTUID\tText" + Environment.NewLine); TelegramClient client = new TelegramClient(apiId, apiHash); await client.ConnectAsync(); TLDialogsSlice dialogs = (TLDialogsSlice)await client.GetUserDialogsAsync(); // Получение списка чатов // var chat2 = dialogs.Chats.Where(c => c.GetType() == typeof(TLChannel)).ToList(); var dialog = dialogs.Dialogs.Where(c => c.GetType() == typeof(TLDialogs)); var dialog1 = dialogs.Users.Where(c => c.GetType() == typeof(TLUser)); var messa = dialogs.Messages.Where(c => c.GetType() == typeof(TLMessages)); var chat4 = dialogs.Chats.Where(c => c.GetType() == typeof(TLAbsChat)).ToList(); //TLPeerChannel var chat3 = dialogs.Chats.Where(c => c.GetType() == typeof(TLPeerChannel)).ToList(); //TLPeerChannel var chat2 = dialogs.Chats.Take(104).ToList(); // Where(106).ToList();TLPeerChannel var chat6 = dialogs.Chats.All(c => c.Constructor == 1910543603); // Where(106).ToList();TLPeerChannel // var chat2 = dialogs.Chats.Take(105).ToList();// Where(106).ToList(); // var chat3 = dialogs.Chats.TakeWhile(n => n.Count > 0).ToList();// Where(106).ToList(); // var chat2 = dialogs.Chat.Where(c => c.GetType() == typeof(TLChat)).ToList(); var chat123 = dialogs.Chats.Where(c => c.GetType() == typeof(TLChannel)).ToList(); // if (chat123.Count>0) if (chat2.Count > 0) { sb.Append("Список чатов: " + Environment.NewLine + "Дата " + DateTime.Now + "Количество чатов " + chat2.Count ); // foreach (TeleSharp.TL.TLChannel myChat in chat2) TLChat foreach (TeleSharp.TL.TLChat myChat in chat2) //TLChat { sb.Append("***************" + Environment.NewLine + "Id чата " + myChat.Id + "\t" + "Название чата " + myChat.Title + "\t" + // "Хешш чата " + myChat.AccessHash + "\t" + "***************" + Environment.NewLine); } SaveTextFileBuilder(sb, "Список чатов .txt"); } } catch (Exception ex) { } return(sb); }
private async Task GetPublicChannelsAsync(TelegramClient client, TLDialogsSlice dialogs) { foreach (TLAbsChat element in dialogs.Chats) { if (element is TLChannel) { var offset = 0; TLChannel channel = element as TLChannel; var chan = await client.SendRequestAsync <TeleSharp.TL.Messages.TLChatFull>(new TLRequestGetFullChannel() { Channel = new TLInputChannel() { ChannelId = channel.Id, AccessHash = (long)channel.AccessHash } }); TLInputPeerChannel inputPeer = new TLInputPeerChannel() { ChannelId = channel.Id, AccessHash = (long)channel.AccessHash }; } } }
public static async Task <ChannelInfo> GetInfoGroup(String channelName, TLSharp.Core.TelegramClient client) { ChannelInfo result = new ChannelInfo(); TLChannel channelInfo; if (client == null) { return(null); } var dialogs_temp = await client.GetUserDialogsAsync(); TLDialogsSlice dialogs = dialogs_temp as TLDialogsSlice; TeleSharp.TL.Messages.TLChatFull res = new TeleSharp.TL.Messages.TLChatFull(); try { 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(null); } Int32 offset = 0; result.Channel = channelInfo; result.ChatFull = res; while (offset < (res.FullChat as TLChannelFull).ParticipantsCount) { var pReq = new TLRequestGetParticipants() { Channel = new TLInputChannel() { AccessHash = channelInfo.AccessHash.Value, ChannelId = channelInfo.Id }, Filter = new TLChannelParticipantsRecent() { }, Limit = 200, Offset = offset }; var pRes = await client.SendRequestAsync <TLChannelParticipants>(pReq); //TLChatParticipantAdmin for (Int32 i = 0; i < pRes.Participants.Count; i++) { if (pRes.Participants[i] is TLChannelParticipantEditor || pRes.Participants[i] is TLChannelParticipantCreator || pRes.Participants[i] is TLChannelParticipantModerator) { result.Admins.Add(pRes.Users[i] as TLUser); } } result.Users.AddRange(pRes.Users.Cast <TLUser>()); offset += 200; await Task.Delay(500); } return(result); }
//public virtual async Task AuthUser() //{ // var client = NewClient(); // await client.ConnectAsync(); // var hash = await client.SendCodeRequestAsync(NumberToAuthenticate); // var code = CodeToAuthenticate; // you can change code in debugger too // if (String.IsNullOrWhiteSpace(code)) // { // throw new Exception("CodeToAuthenticate is empty in the app.config file, fill it with the code you just got now by SMS/Telegram"); // } // TLUser user = null; // try // { // user = await client.MakeAuthAsync(NumberToAuthenticate, hash, code); // } // catch (CloudPasswordNeededException ex) // { // var passwordSetting = await client.GetPasswordSetting(); // var password = PasswordToAuthenticate; // user = await client.MakeAuthWithPasswordAsync(passwordSetting, password); // } // catch (InvalidPhoneCodeException ex) // { // throw new Exception("CodeToAuthenticate is wrong in the app.config file, fill it with the code you just got now by SMS/Telegram", // ex); // } // Assert.IsNotNull(user); // Assert.IsTrue(client.IsUserAuthorized()); //} public async Task <string> button3_ClickAsync() { try { bool stop = true; int count = 2; client = new TelegramClient(apiId, apiHash); await client.ConnectAsync(); //var hash = await client.SendCodeRequestAsync("+79179037140"); //var code = "72772"; //var user = await client.MakeAuthAsync("+79179037140", hash, code); // DownloadFileFromWrongLocationTest(); sb.Append("#\tDate\tTime\tMID\tTUID\tText" + Environment.NewLine); TLDialogsSlice dialogs = (TLDialogsSlice)await client.GetUserDialogsAsync(); //Получаем список чатов(диалогов) // var tempDialogsChats = dialogs.Chats; // выгружаем полученные список чатов foreach (var element in dialogs.Chats) { if (element is TLChat) { TLChat chats = element as TLChat; listChats += $"Название {chats.Title} ID чата {chats.Id} " + Environment.NewLine; } if (element is TLChannel) { TLChannel chats = element as TLChannel; listChats += $"Название {chats.Title} ID чата {chats.Id} " + Environment.NewLine; } if (element is TLChatForbidden) { TLChatForbidden chats = element as TLChatForbidden; listChats += $"Название {chats.Title} ID чата {chats.Id} " + Environment.NewLine; } //if (chats is TLDialogS) // continue; } SaveTextFile(listChats, "Список чатов.txt"); TLChannel chat = dialogs.Chats.Where(c => c.GetType() == typeof(TLChannel)).Cast <TLChannel>().FirstOrDefault(c => c.Id == VKFID); //Выбираем нужный нам чат //if (chat == null) // { // } TLInputPeerChannel inputPeer = new TLInputPeerChannel() { ChannelId = chat.Id, AccessHash = (long)chat.AccessHash }; while (stop) { if (n > count) { stop = false; } try { TLChannelMessages res = await client.SendRequestAsync <TLChannelMessages> //получаем список все собщений из выбранного чата (new TLRequestGetHistory() { Peer = inputPeer, Limit = 1000, AddOffset = offset, OffsetId = 0 }); var msgs = res.Messages; // выгружаем список сообщений count = res.Count++; if (res.Count > offset) { offset += msgs.Count; foreach (TLAbsMessage msg in msgs) { if (msg is TLMessage) { TLMessage message = msg as TLMessage; sb.Append(n.ToString() + "\t" + ConvertFromUnixTimestamp(message.Date).ToLocalTime().ToString("dd'.'MM'.'yyyy") + "\t" + ConvertFromUnixTimestamp(message.Date).ToLocalTime().ToString("HH':'mm':'ss") + "\t" + message.Id + "\t" + message.FromId + "\t" + message.Message + Environment.NewLine); } if (msg is TLMessageService) { continue; } n++; } SaveTextFile(sb.ToString()); SaveTextFileBuilder(sb); Thread.Sleep(22000); //Thread.Sleep(22000); //to avoid TelegramFloodException 36,67 минут https://www.yandex.ru/search/?lr=43&offline_search=1&text=%D0%BA%D0%B0%D0%BB%D1%8C%D0%BA%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80%20%D1%81%D0%B5%D0%BA%D1%83%D0%BD%D0%B4%20%D0%B2%20%D0%BC%D0%B8%D0%BD%D1%83%D1%82%D1%8B } else { break; } } catch (Exception ex) { SaveTextFile("Ошибка +" + ex, @"LogError.txt"); return(ex.Message); // MessageBox.Show(ex.Message); // break; } finally { await Task.Delay(22000); //чтобы обойти TelegramFloodException SaveTextFile("Завершение работы", "Завершение работы.txt"); } } return(listChats); //MessageBox.Show("Done"); } catch (Exception ex) { SaveTextFile("Ошибка +" + ex, @"LogError.txt"); return(ex.ToString()); } }
/// <summary> /// Получаем все сообщения из текущих чатов /// </summary> /// <returns></returns> public async Task <StringBuilder> GetChatTelegram() { //StartText(); try { TelegramClient client = new TelegramClient(apiId, apiHash); await client.ConnectAsync(); //var hash = await client.SendCodeRequestAsync("+79179037140"); //string stop = ""; //var code = "13643"; //var user = await client.MakeAuthAsync("+79179037140", hash, code); // var temp = ConfigurationManager.AppSettings[nameof(ApiHash)]; sb.Append("#\tDate\tTime\tMID\tTUID\tText" + Environment.NewLine); TLDialogsSlice dialogs = (TLDialogsSlice)await client.GetUserDialogsAsync(); // Получение списка чатов //var chat123 = dialogs.Chats.Where(c => c.GetType() == typeof(TLChannel)).ToList(); //foreach (TeleSharp.TL.TLChannel myChat in chat123) //{ // sb.Append("***************" + Environment.NewLine + // "Id чата"+ myChat.Id + "\t" + // "Название чата"+ myChat.Title + "\t" + // "Хешш чата" +myChat.AccessHash + "\t" + // "***************" + Environment.NewLine); //} //SaveTextFileBuilder(sb, "Messages.txt"); // Получаем ВЫБРАНЫЙ ЧАТ ПО ID TLChannel chat = dialogs.Chats.Where(c => c.GetType() == typeof(TLChannel)).Cast <TLChannel>().FirstOrDefault(c => c.Id == VKFID); // TLChannel channel = dialogs.Dialogs. TLInputPeerChannel inputPeer = new TLInputPeerChannel() { ChannelId = chat.Id, AccessHash = (long)chat.AccessHash }; while (countMessa != 100) { try { TLChannelMessages res = await client.SendRequestAsync <TLChannelMessages> (new TLRequestGetHistory() { Peer = inputPeer, Limit = 1000, AddOffset = offset, OffsetId = 0 }); var msgs = res.Messages; allCountMess = res.Count; if (res.Count > offset) { offset += msgs.Count; foreach (TLAbsMessage msg in msgs) { if (msg is TLMessage) { TLMessage message = msg as TLMessage; sb.Append("***************" + Environment.NewLine + n.ToString() + "\t" + ConvertFromUnixTimestamp(message.Date).ToLocalTime().ToString("dd'.'MM'.'yyyy") + "\t" + //ConvertFromUnixTimestamp(message.Date).ToLocalTime().ToString("HH':'mm':'ss") + "\t" + ConvertFromUnixTimestamp(message.Date).ToLocalTime().ToString("HH':'mm':'ss") + "\t" + "ID message" + message.Id + "\t" + message.FromId + "\t" + message.Message + Environment.NewLine + "***************" + Environment.NewLine); } if (msg is TLMessageService) { continue; } n++; countMessa++; } Thread.Sleep(22000); //to avoid TelegramFloodException SaveTextFileBuilder(sb, "Messages.txt"); Console.WriteLine($"Всего собщений в чате {allCountMess} + {Environment.NewLine} Получно {n}" + Environment.NewLine); } else { break; } } catch (Exception ex) { string tempEx = $"Ошибка при получении списка сособщения из чата {VKFID}" + Environment.NewLine + ex; SaveTextFile(tempEx); break; } finally { // await Task.Delay(22000); //чтобы обойти TelegramFloodException } } } catch (Exception ex) { string tempEx = $"Ошибка при получении списка сособщения из чата {VKFID}" + Environment.NewLine + ex; SaveTextFile(tempEx); } finally { // SaveTextFileBuilder(sb, "Messages.txt"); // return sb; } return(sb); }
public async Task <StringBuilder> GetChatTelegram() { TelegramClient client = new TelegramClient(apiId, apiHash); sb.Append("#\tDate\tTime\tMID\tTUID\tText" + Environment.NewLine); TLDialogsSlice dialogs = (TLDialogsSlice)await client.GetUserDialogsAsync(); // Получение списка чатов TLChannel chat = dialogs.Chats.Where(c => c.GetType() == typeof(TLChannel)).Cast <TLChannel>().FirstOrDefault(c => c.Id == VKFID); TLInputPeerChannel inputPeer = new TLInputPeerChannel() { ChannelId = chat.Id, AccessHash = (long)chat.AccessHash }; while (countMessa == 100) { try { TLChannelMessages res = await client.SendRequestAsync <TLChannelMessages> (new TLRequestGetHistory() { Peer = inputPeer, Limit = 1000, AddOffset = offset, OffsetId = 0 }); var msgs = res.Messages; if (res.Count > offset) { offset += msgs.Count; foreach (TLAbsMessage msg in msgs) { if (msg is TLMessage) { TLMessage message = msg as TLMessage; sb.Append(n.ToString() + "\t" + ConvertFromUnixTimestamp(message.Date).ToLocalTime().ToString("dd'.'MM'.'yyyy") + "\t" + ConvertFromUnixTimestamp(message.Date).ToLocalTime().ToString("HH':'mm':'ss") + "\t" + message.Id + "\t" + message.FromId + "\t" + message.Message + Environment.NewLine); } if (msg is TLMessageService) { continue; } n++; countMessa++; } Thread.Sleep(22000); //to avoid TelegramFloodException } else { break; } } catch (Exception ex) { string tempEx = $"Ошибка при получении списка сособщения из чата {VKFID}" + Environment.NewLine; //MessageBox.Show(ex.Message); break; } finally { await Task.Delay(22000); //чтобы обойти TelegramFloodException } } return(sb); // textBox2.Text = sb.ToString(); // MessageBox.Show("Done"); }
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); }