代码之家  ›  专栏  ›  技术社区  ›  Ali Akhtari

用telethon向超级组转发消息

  •  1
  • Ali Akhtari  · 技术社区  · 7 年前

    最近,我编写了一个代码,可以将某个用户的每条消息转发给我加入的所有组,但实际上没有。 这是我的密码:

            for message in client.iter_messages('aliakhtari78'):
            try:
                dialogs = client.get_dialogs()
                for dialog in dialogs:
                    id_chat = dialog.message.to_id.channel_id
                    entity = client.get_entity(id_chat)
                    client.forward_messages(
                        entity,  # to which entity you are forwarding the messages
                        message.id,  # the IDs of the messages (or message) to forward
                        'somebody'  # who sent the messages?
                    )
    
            except:
                pass
    

    '阿利亚赫塔里78' 然后得到我加入的组的实体,最后它应该将消息转发给所有组,但它没有,我检查了我的代码,并用一个用户实体替换了实体,它工作了,我知道问题是因为实体,但我不能找出我的问题是什么。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Ali Hashemi    7 年前

    为了通过电报向任何实体发送消息,您需要两条信息:

    1. 实体的常量唯一ID(它是一个整数。不是用户名字符串)
    2. 这个 access_hash 对于每个实体的每个用户,这是不同的

    @username client.get_entity 一个实体 id . 这就是为什么当你这样修改你的代码时它会起作用。但是,在您的代码中,您通过了 channel_id (实体的常量唯一ID)到 client.get\u实体 ,不是 username

    client.get_dialogs 退货 entities 随着 dialogs

    dialogs, entities = client.get_dialogs()
    

    然后只需从 实体 数组到 client.forward_messages

    推荐文章