【问题标题】:How to delete a private chat (pyrogram)如何删除私人聊天(热图)
【发布时间】:2022-06-20 14:39:45
【问题描述】:

我尝试了 pyrogram.raw.functions.messages.DeleteChat 但得到以下引用 pyrogram.errors.exceptions.bad_request_400.PeerIdInvalid: Telegram says: [400 PEER_ID_INVALID] - The peer id being used is invalid or not known yet. Make sure you meet the peer before interacting with it (caused by "messages.DeleteChat")

account.UpdateNotifySettings 也有同样的问题。

await client.invoke(UpdateNotifySettings(peer=await client.resolve_peer(cid),settings=InputPeerNotifySettings(silent=True)))

我已阅读此文档 https://docs.pyrogram.org/faq/peer-id-invalid-error,并且我确信 client.archive_chats 的 id 正确,可与相同的 id 配合使用。

id是这样的5126101582.是不是还有别的id或者我的代码错了

注意: 我需要的是this

【问题讨论】:

    标签: python telegram pyrogram


    【解决方案1】:

    更新

    好的,我想我也找到了个人聊天的解决方案! 我在搞点别的事情,阅读this part of the documentation,我想出了一种列出每个对话及其各自ID的方法:

    from pyrogram import Client
    
    app = Client("my_client")
    
    
    async def main():
        async with app:
            async for dialog in app.get_dialogs():
                print(str(dialog.chat.id) + " - " + str(dialog.chat.first_name or str(dialog.chat.title)) )
    
    
    app.run(main()) 
    

    基本上,它的作用是遍历您的所有聊天,并在群组/频道的情况下输出他们的 ID 和“标题”,在与人聊天的情况下输出名称。您会注意到,有些 id 会在输出前带有连字符 (-),而有些则不会。 您将需要复制带有或不带有连字符的确切字符串,然后您可以这样做以删除聊天中的所有消息:

    from pyrogram import Client
    
    app = Client("Telecom")
    
    async def main():
        
        await app.start()
        async for message in app.get_chat_history("1212345678"):
            await app.delete_messages("1212345678", message.id)
    
    app.run(main())
    

    --------------- 更新结束 ---------- --------------

    我不清楚你是想只删除特定聊天的消息还是想删除聊天本身。 无论如何,这就是文档所说的:

    chat_id (int | str) – 目标聊天的唯一标识符 (int) 或用户名 (str)。对于您的个人云(已保存的消息),您可以简单地使用“我”或“自我”。对于您 Telegram 通讯录中存在的联系人,您可以使用他的电话号码 (str)。

    参考: Pyrogram Documentation - Delete Messages

    因此,您无法从具有该 ID 的聊天中删除消息,除非它是频道/机器人/组 - 并且由于您收到此错误,我假设您想删除与某人的聊天。

    现在,如果您尝试删除(比方说)带有频道的消息,有多种方法可以检索正确的 ID。 我最常使用的是 web.telegram 并将其更改为“旧版”版本。 到达那里后,单击要删除消息的聊天 ID。您应该看到如下内容: Telegram URL 您将需要“c”之后和下划线之前的数字。 所以假设我的号码是 c1503123456789_1111111111111 您将使用 1503123456789。 您还需要在其中添加 -100。所以最终的数字将是: -1001503123456789。

    我希望能有所帮助。 祝你好运!

    【讨论】:

    • 好吧,事实上我需要的是删除一个私人聊天 (i.stack.imgur.com/xiKgp.png) 并将其永久静音。正如我所说,它在 archive_chats() 中运行良好。
    【解决方案2】:

    您可以使用leave_chat 方法删除对话框。

    离开聊天或频道

    await app.leave_chat(chat_id)
    

    离开基本聊天并删除对话

    await app.leave_chat(chat_id, delete=True)
    

    Chat的绑定方法离开。

    用作以下内容的快捷方式:

    await client.leave_chat(123456789)
    

    例子

    await chat.leave()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多