代码之家  ›  专栏  ›  技术社区  ›  RocketNuts

用Telethon发送电报信息:一些实体参数起作用,另一些不起作用?

  •  0
  • RocketNuts  · 技术社区  · 6 年前

    send_message 向各种聊天室发送消息的功能。

    client.send_message(entity,text)

    但我不知道 entity 参数应该在不同的情况下。我发现特别令人困惑的是,对于某些组,指定整数id似乎工作得很好,但对于其他组,则不行。

    例如:

    11111 ,以及其他具有用户id的用户 22222 .
    此外,我在两个组(实际上是超级组)中,它们有通道id 33333 44444 .

    我可以指定 11111个 作为实体,消息被正确发送(分别发送给第一个人或第一组)。但是如果我指定 22222个 ,我得到一个错误:

    找不到与“{}”对应的任何实体。格式(字符串)
    值错误:找不到与“22222”对应的任何实体

    所有4个聊天的mesasges都使用同一个Telethon实例,一切正常。

    所以我的问题是: 如何获取send_message()的正确实体数据?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Alihossein shahabi    6 年前

    我建议你读一下文件的这一部分( entities

    例如,我要将消息发送给用户名为的用户: alix

    client = TelegramClient('session_name',
                        api_id,
                        api_hash,
                        )
    client.start()
    destination_user_username='alix'
    entity=client.get_entity(destination_user_username)
    client.send_message(entity=entity,message="Hi")
    

    或者我想将消息发送到用户名为的频道: test_ali3

    client = TelegramClient('session_name',
                        api_id,
                        api_hash
                        )
    client.start()
    
    destination_channel_username='test_ali3'
    entity=client.get_entity(destination_channel_username)
    client.send_message(entity=entity,message="Hi")
    

    或者我想将消息发送到 邀请链接 : https://t.me/joinchat/Bn4WIhMF1T_ZAF-yM6WbHw

    client = TelegramClient('session_name',
                        api_id,
                        api_hash
                        )
    client.start()
    destination_group_invite_link='https://t.me/joinchat/Bn4WIhMF1T_ZAF-yM6WbHw'
    entity=client.get_entity(destination_group_invite_link)
    client.send_message(entity=entity,message="Hi")