TLSharp Fetch 组列表问题

TLSharp Fetch Group List Issue

我无法获取完整的组列表,仅响应returns新组

我的代码:

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.MaxValue0时输出为15组,当Limit = int.MinValue输出为7组

但问题是我有超过 15 个群组加入电报为什么我不能全部获取它们?

试试这个:

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

如果您想要包含消息和辅助数据的完整聊天列表,请使用 messages.dialogs 而不是 messages.dialogsSlice

如果要return当前用户对话列表,使用messages.getDialogs

你的情况是TLDialogs

在此处检查 API 方法 link Working with Dialogs

如果仍然有一些组没有显示在您的 return 列表中,请尝试使用 offset = 0 和 limit = 20 ,然后发送另一个 messages.Dialogs 偏移量为 20、limit = 20 的请求。您可以设置自己的偏移量和限制。

您可以在此处找到如何设置偏移量和限制 link

此处有更新PR

最终代码为:

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

现在我可以在 TLSharp.Core/TelegramClient.cs

中使用 GetAllChats() 方法获取完整的聊天列表