【问题标题】:Telethon, how to get an entity?Telethon,如何获得实体?
【发布时间】:2017-11-10 18:58:59
【问题描述】:

我开始使用Telethon 将 python 应用程序与电报 API 集成。我能够启动它并发送一些消息。

发送消息的函数获取一个实体作为第一个参数。到目前为止,我从返回实体列表的 get_dialogs 函数中获取了这个实体。我知道我想向哪个组发送消息,并且不想每次都通过 get_dialogs 来获取实体。

那么我可以使用哪个函数给我一个实体来传递它来发送消息? 我期望应该有一个函数可以获取组 ID(或组中的类似独特特征)作为输入,并将实体作为响应传递给我。但到目前为止,我无法找到任何功能。

def send_message(self,
                     entity,# <--------------- how can I get this entity?
                     message,
                     markdown=False,
                     no_web_page=False):

【问题讨论】:

    标签: python telegram telethon


    【解决方案1】:

    如果您不想每次都查询,您可以将群组/聊天/用户或您想要的任何内容保存在外部文件中。 send_message 实际上采用的是 InputPeer,在您的情况下,它可以是 InputChat

    假设您知道聊天 ID 是什么,您可以执行以下操作:

    from telethon.tl.types import InputPeerChat
    
    chat = InputPeerChat(desired_chat_id)
    client.send_message(chat, 'your message')
    

    【讨论】:

    • 太棒了!这正是我一直在寻找的。谢谢
    • 我能够使用 InputPeerChat 向群组发送消息,但不能向超级群组和频道发送消息。我应该使用另一种方法将超组 ID 或频道 ID 转换为实体吗?对于频道,我收到此错误:telethon.errors.RPCError: (RPCError(...), 'Invalid object ID for a chat. 请确保传递正确的类型。')
    • 实际上我找到了通道,使用 InputPeerChannel 并将 access_hash 作为第二个参数传递。但对于超级群体来说,仍然不确定使用哪种方法。
    • @apadana 超级组应该被视为频道,所以尝试一下?
    • 超级组应该被视为频道:是的,效果很好!
    猜你喜欢
    • 2021-01-31
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 2014-03-06
    相关资源
    最近更新 更多