Python 使用telethon将消息转发到超级组

Python 使用telethon将消息转发到超级组,python,python-3.x,telegram,python-telegram-bot,telethon,Python,Python 3.x,Telegram,Python Telegram Bot,Telethon,最近,我编写了一段代码,可以将某个用户的每条消息转发给我加入的所有组,但事实并非如此。 这是我的代码: for message in client.iter_messages('aliakhtari78'): try: dialogs = client.get_dialogs() for dialog in dialogs: id_chat = dialog.message.to_id

最近,我编写了一段代码,可以将某个用户的每条消息转发给我加入的所有组,但事实并非如此。 这是我的代码:

        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
在这段代码中,我首先获取“aliakhtari78”发送给我的每条消息,然后获取我加入的组的实体,最后它应该将消息转发给所有组,但它没有,我检查我的代码并用用户实体替换实体,它工作了,我知道问题是因为实体,但是我不能找出我的问题是什么。
此外,我很抱歉在我的问题中写错了。

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

  • 实体的常量唯一ID(它是一个整数,不是用户名字符串)
  • 访问\u散列
    ,对于每个实体的每个用户都是不同的
  • 您只能将
    @username
    传递给
    客户端。获取实体
    ,Telethon会自动将
    @username
    解析为具有
    id
    访问散列
    的实体。这就是为什么当你像那样修改代码时它会起作用。但是,在您的代码中,您已将
    channel\u id
    (实体的恒定唯一id)传递给
    客户端。获取实体
    ,而不是
    用户名

    请注意,
    client.get\u对话框
    返回
    实体
    以及
    对话框
    。您刚刚忽略了实体!这是获取所有实体的数组的方式:

    dialogs, entities = client.get_dialogs()
    

    然后,只需将相应的实体从
    实体
    数组传递到
    客户端。转发消息

    我尝试了你的代码,但它也不起作用。这里是我的代码,正如您看到的,您编写的代码行不起作用。没有了try and Exception,我得到了这个错误:“dialogs,entities=client.get_dialogs()ValueError:太多的值无法解包(预期为2)”我现在发现了我的问题,在我的完整代码中,我在我的范围内使用了try Exception 2次,当我删除时,我的代码工作正常。