コード例 #1
0
        /// <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);
        }
コード例 #2
0
 public TelegramDialogs(TLDialogsSlice dialogs)
 {
     Dialogs  = dialogs.Dialogs;
     Messages = dialogs.Messages;
     Chats    = dialogs.Chats;
     Users    = dialogs.Users;
     Count    = dialogs.Count;
 }
コード例 #3
0
ファイル: Telega.cs プロジェクト: Dims-M/ZapuskatorApp
        /// <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);
        }
コード例 #4
0
        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
                    };
                }
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: Telega.cs プロジェクト: Dims-M/ZapuskatorApp
        //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());
            }
        }
コード例 #7
0
ファイル: Telega.cs プロジェクト: Dims-M/ZapuskatorApp
        /// <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);
        }
コード例 #8
0
        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");
        }
コード例 #9
0
        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);
        }