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”发送给我的每条消息,然后获取我加入的组的实体,最后它应该将消息转发给所有组,但它没有,我检查我的代码并用用户实体替换实体,它工作了,我知道问题是因为实体,但是我不能找出我的问题是什么。
此外,我很抱歉在我的问题中写错了。为了通过电报向任何实体发送消息,您需要两条信息:
访问\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次,当我删除时,我的代码工作正常。