Выпуск списка TLSharp Fetch Group - PullRequest
1 голос
/ 20 апреля 2020

Я не могу получить полный список групп , ответ возвращает только новые группы

мой код:

var dialogs = (TLDialogsSlice)await client.GetUserDialogsAsync();
                    var chats = dialogs.Chats
                      .Where(c => c.GetType() == typeof(TLChat))
                      .Cast<TLChat>();

                    Console.WriteLine("Count : " + chats.Count());

я использую этот метод:

public async Task<TLAbsDialogs> GetUserDialogsAsync()
        {
            var peer = new TLInputPeerChat();
            return await client.SendRequestAsync<TLAbsDialogs>(
                new TLRequestGetDialogs() { OffsetPeer = peer, Limit = int.MaxValue });
        }


var dialogs = await GetUserDialogsAsync() as TLDialogsSlice;
                    var chats = dialogs.Chats
                               .OfType<TLChat>()
                               .ToList();
                    Console.WriteLine("Count : " + chats.Count());

, когда Limit = int.MaxValue или 0 выход составляет 15 групп, когда Limit = int.MinValue вывод 7 групп

но проблема у меня более 15 групп, объединенных в телеграмму почему я не могу получить их все?

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

обновление здесь из этого PR

и окончательный код:

var AllChats = await client.GetAllChats();
var groups = AllChats.Chats.OfType<TLChat>().ToList();
Console.WriteLine("Count : " + groups.Count());

Теперь я могу получить полный список чатов, используя метод GetAllChats() в TLSharp.Core / TelegramClient.cs

0 голосов
/ 20 апреля 2020

Попробуйте:

     var dialogs = (TLDialogs)await client.GetUserDialogsAsync() as TLDialogs;
       var chats = dialogs.Chats
                   .OfType<TLChat>()
                   .ToList();
     Console.WriteLine("Count : " + chats.Count());  

Если вам нужен полный список чатов с сообщениями и вспомогательными данными, используйте messages.dialogs вместо messages.dialogsSlice

Если вы хотите вернуть текущий диалог пользователя, используйте messages.getDialogs

В вашем случае это TLDialogs

Проверьте методы API здесь по этой ссылке Работа с диалогами

Если по-прежнему некоторые группы не отображаются в вашем списке возврата, попробуйте использовать offset = 0 и limit = 20, затем отправьте другие сообщения. Запрос диалога со смещением 20, limit = 20. Вы можете просто установить собственное смещение и ограничение .

Здесь вы можете узнать, как установить смещение и лимит, по этой ссылке

.
...