最近,我编写了代码,该代码应该将来自特定用户的每条消息转发给我加入的所有组,但事实并非如此。 这是我的代码:
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'发送给我的每条消息,然后获取我加入的组的实体,最后它应将消息转发给所有组,但否,我检查了代码并用用户实体替换了实体,并且它起作用了,并且我知道问题是由于实体引起的,但是我无法找出问题所在。 此外,很抱歉在我的问题中写错了。
答案 0 :(得分:3)
要向Telegram中的任何实体发送消息,您需要两条信息:
access_hash
您只能将@username
传递给client.get_entity
,Telethon会自动将@username
解析为具有id
和access_hash
的实体。这就是当您像这样更改代码时它起作用的原因。但是,在您的代码中,您已经将channel_id
(这是实体的恒定唯一ID)传递给了client.get_entity
,而不是username
。
请注意,client.get_dialogs
返回entities
和dialogs
。您只是忽略了实体!这是获取所有实体的数组的方法:
dialogs, entities = client.get_dialogs()
然后只需将相应的实体从entities
数组传递到client.forward_messages
。