예제 #1
0
        public BitmapImage this[TLChatForbidden forbiddenChat]
        {
            get
            {
                if (forbiddenChat == null)
                {
                    return(null);
                }

                if (_context.TryGetValue(forbiddenChat.Title, out Tuple <TLBitmapSource, WeakReference <BitmapImage> > reference) &&
                    reference.Item2.TryGetTarget(out BitmapImage target))
                {
                    return(target);
                }

                var bitmap = new TLBitmapSource(forbiddenChat);
                _context[forbiddenChat.Title] = new Tuple <TLBitmapSource, WeakReference <BitmapImage> >(bitmap, new WeakReference <BitmapImage>(bitmap.Image));
                return(bitmap.Image);
            }
        }
예제 #2
0
        //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());
            }
        }