【问题标题】:TLSharp Fetch Group List IssueTLSharp 获取组列表问题
【发布时间】:2020-04-20 01:24:06
【问题描述】:

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

我的代码:

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 个群组加入了电报为什么我不能全部获取?

【问题讨论】:

  • 用 Limit=100 检查
  • 如果你使用 TLDialogsSlice 检查是否有切片,这意味着 TLDialogsSlice 是否有任何限制,比如 MaxValue 是 15 什么的。
  • :( 没有关于这个限制,但我确信核心中有一些东西需要更新看看这个问题,它是相似的:github.com/sochix/TLSharp/issues/674
  • 应该有一些解决方法来处理。
  • 是的,兄弟,我尝试对 TLSharp 项目进行一些更新,例如将类型从 int 更改为 long/decimal,但会遇到更多异常...

标签: c# telegram tlsharp


【解决方案1】:

来自PR的更新在这里

最后的代码是:

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

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

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

【讨论】:

    【解决方案2】:

    试试这个:

         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

    在此链接 Working with Dialogs 上查看 API 方法

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

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

    【讨论】:

    • 你好兄弟,如果匹配 groupName 变量,你的代码将只返回一个组,但我的情况是我需要获取我已经加入电报的所有组,我的代码只返回 15 个新组,但我有更多那15,谢谢你的回复兄弟
    • 同样的结果兄弟:/
    • 只返回 15 个组我有超过 15 个我不知道为什么!我很困惑
    • 您已经在代码中提到了“聊天”,它是一个包含组和频道的列表(向量)。
    • 这是否与您的问题有关stackoverflow.com/questions/44923382/…
    猜你喜欢
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    相关资源
    最近更新 更多