我正在使用Telethon的send_message功能向各种聊天发送消息。
有时候,目的地是另一个用户(只是一个普通的一对一聊天),有时是一个组,有时是一个超级组,有时是一个频道(我是我的管理员)。
如果我理解正确,那么语法应该是:
chmod -R u=rwX,g=rwX,o=rX static_dir
但是我无法弄清楚client.send_message(entity,text)
参数在不同情况下应该是什么。我发现特别令人困惑的是,对于某些组,指定整数ID似乎可以正常工作,但对于其他组却不能。
例如:
我与具有user_id entity
的人以及与具有user_id 11111
的另一个人进行正常的一对一聊天。
此外,我属于两个组(实际上是超组),它们具有channel_id 22222
和33333
。
我可以将44444
或11111
指定为实体,然后正确地发送消息(分别发送给第一人或第一组)。但是,如果我指定33333
或22222
,则会出现错误:
找不到与“ {}”对应的任何实体。.format(string)
ValueError:找不到与“ 22222”相对应的任何实体
我也正在使用同一Telethon实例从所有4个聊天中接收消息,并且一切正常。
所以我的问题是:如何获取send_message()的正确实体数据?
答案 0 :(得分:1)
我建议阅读文档的这一部分(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")
或者我想通过 invite_link 将邮件发送到网上论坛: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")
希望对您有用。