2

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

我的代码:

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 个群组,为什么我无法获取所有群组?

4

2 回答 2

2

PR有更新

最终代码是:

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

现在我可以使用TLSharp.Core/TelegramClient.csGetAllChats()中的方法获取完整的聊天列表

于 2020-04-21T21:09:29.053 回答
0

尝试这个:

     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 方法Working with Dialogs

如果您的返回列表中仍然没有显示某些组,请尝试使用 offset = 0 和 limit = 20 ,然后发送另一条消息。使用偏移量 20 的对话框请求,限制 = 20。您可以设置自己的偏移量和限制。

您可以在此链接中找到如何设置偏移量和限制

于 2020-04-20T02:05:24.327 回答