Roc*_*uts 5 python entity telegram python-telegram-bot telethon
我正在使用 Telethon 的send_message函数向各种聊天发送消息。
有时,目的地是另一个用户(只是一个聊天中的普通用户),有时是一个组,有时是一个超级组,有时是一个频道(我是其中的管理员)。
如果我理解正确,语法应该是:
client.send_message(entity,text)
但我无法弄清楚entity在不同情况下参数应该是什么。我发现特别令人困惑的是指定整数 id 似乎对某些组有效,但对其他组无效。
例如:
我与拥有 user_id 的11111人以及另一个拥有 user_id 的人进行了正常的一对一聊天22222。
此外,我分为两个组(实际上是超级组),它们具有 channel_id33333和44444.
我可以指定11111或33333作为实体,并且消息被正确发送(分别发送给第一个人或第一组)。但是,如果我指定22222or 44444,则会出现错误:
找不到对应于“{}”'的任何实体。格式(字符串)
ValueError:找不到对应于“22222”的任何实体
我还使用同一个 Telethon 实例从所有 4 个聊天中收到消息,并且一切正常。
所以我的问题是:如何为 send_message() 获取正确的实体数据?
Ali*_*abi 10
我建议阅读文档的这一部分(实体)
例如,我想将消息发送给具有用户名的用户: 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")
Run Code Online (Sandbox Code Playgroud)
或者我想使用用户名将消息发送到频道: 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")
Run Code Online (Sandbox Code Playgroud)
或者我想将消息发送到一个带有邀请链接的组: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")
Run Code Online (Sandbox Code Playgroud)
我希望对你有用。
| 归档时间: |
|
| 查看次数: |
11406 次 |
| 最近记录: |