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.MaxValue或0时输出为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()
方法获取完整的聊天列表
我无法获取完整的组列表,仅响应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.MaxValue或0时输出为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()
方法获取完整的聊天列表