【问题标题】:C# TLSharp delete user chatC# TLSharp 删除用户聊天
【发布时间】:2020-01-14 00:51:57
【问题描述】:

如何删除聊天用户 C# TLSharp?错误聊天ID

var dialogs = await client.GetUserDialogsAsync(limit: 50) as TLDialogs;
var dialog = (dialogs.Dialogs[0]) as TLDialog;
var id= (dialog.Peer as TLPeerUser).UserId;
var deleteRequest = new TLRequestDeleteChatUser()
{  
   UserId = new TLInputUser() {
         UserId = id
   }
};
await client.SendRequestAsync<TLUpdates>(deleteRequest );

【问题讨论】:

  • 当你运行上面的代码时,你得到了什么错误?您还能提供哪些其他详细信息?
  • 错误 CHAT_ID_INVALID。
  • TLDialog不包含chat_id,可能不对TLMethod(TLRequestDeleteChatUser)使用
  • TLRequestDeleteChatUser 需要两个变量,ChatIdUserId。您正在为 deleteRequest 提供 UserId 而不是 ChatId
  • 如何获取chat_id?

标签: c# telegram


【解决方案1】:

如果您只是在测试如何删除用户,那么这可能有助于为您提供更好的想法。

我不想做任何假设,但这是从第一次聊天中删除第一个参与者的方法之一。我建议使用 Debugger 来了解如何使用 Linq 过滤掉您有兴趣删除的聊天和用户。

    var dialogs = (TLDialogs)await client.GetUserDialogsAsync(limit: 50);

    TLChat chat = dialogs.Chats.OfType<TLChat>().FirstOrDefault();
    int userId = 0; // User ID To Delete

    var request = new TLRequestGetFullChat() { ChatId = chat.Id };
    var fullChat = await client.SendRequestAsync<TeleSharp.TL.Messages.TLChatFull>(request);

    var participants = (fullChat.FullChat as TeleSharp.TL.TLChatFull).Participants as TLChatParticipants;
    var p = participants.Participants.FirstOrDefault();

    if (p is TLChatParticipant)
    {
        var participant = p as TLChatParticipant;
        Console.WriteLine($"\t{participant.UserId}");
        userId = participant.UserId;
    }
    else if (p is TLChatParticipantAdmin)
    {
        var participant = p as TLChatParticipantAdmin;
        Console.WriteLine($"\t{participant.UserId}**");
        userId = participant.UserId;
    }
    else if (p is TLChatParticipantCreator)
    {
        var participant = p as TLChatParticipantCreator;
        Console.WriteLine($"\t{participant.UserId}**");
        userId = participant.UserId;
    }

    var deleteRequest = new TLRequestDeleteChatUser()
    {
        ChatId = chat.Id,
        UserId = new TLInputUser()
        {
            UserId = userId
        }
    };
    await client.SendRequestAsync<TLUpdates>(deleteRequest);

查看从here查找频道、参与者、同行、聊天等的示例代码

【讨论】:

  • 此对话在聊天中不存在,仅在对话中出现。 dialogs.Chats.OfType().FirstOrDefault();此行返回 null
  • 如果你得到一个空值,那是因为你没有聊天可以删除用户
  • 在 Telegram 客户端我看到了这个对话框,但他不在 dialogs.Chats 中。他只在 dialogs.Dialogs
猜你喜欢
  • 2013-03-30
  • 2015-01-25
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多