【发布时间】:2019-01-30 19:41:20
【问题描述】:
我正在使用 Telethon 的 send_message 功能向各种聊天室发送消息。
有时,目标是另一个用户(只是普通的一次聊天),有时是一个组,有时是一个超级组,有时是一个频道(我是其中的管理员)。
如果我理解正确,语法应该是:
client.send_message(entity,text)
但我无法弄清楚 entity 参数在不同情况下应该是什么。我发现特别令人困惑的是,指定整数 id 似乎对某些组工作正常,但对其他组则不行。
例如:
我与用户 ID 为 11111 的人以及另一个用户 ID 为 22222 的人进行正常的一对一聊天。
此外,我分为两个组(实际上是超级组),它们具有 channel_id 33333 和 44444。
我可以将11111 或33333 指定为实体,并且消息会正确发送(分别发送给第一个人或第一组)。但是,如果我指定 22222 或 44444,则会出现错误:
找不到任何与“{}”'.format(string)对应的实体
ValueError:找不到任何与“22222”对应的实体
我还使用同一个 Telethon 实例接收来自所有 4 个聊天的消息,并且一切正常。
所以我的问题是:如何为 send_message() 获取正确的实体数据?
【问题讨论】:
-
试试
client.send_message(PeerUser(user_id=11111), 'test-message'),其中11111是你发送消息的chat_id,还要添加行from telethon.tl.types import PeerUser。
标签: python entity telegram python-telegram-bot telethon