gpt4 book ai didi

python - 使用 Telethon : some entity parameters work, 发送 Telegram 消息,其他人则不发送?

转载 作者:行者123 更新时间:2023-12-01 01:39:50 26 4
gpt4 key购买 nike

我正在使用 Telethon 的 send_message功能向各种聊天发送消息。

有时,目的地是另一个用户(只是常规的一对一聊天),有时是一个组,有时是一个 super 组,有时是一个 channel (我是其中的管理员)。

如果我理解正确的话,语法应该是:

client.send_message(实体,文本)

但我无法弄清楚在不同情况下 entity 参数应该是什么。我发现特别令人困惑的是指定整数 id 似乎对某些组工作正常,但对其他组则不然。

例如:

我与 user_id 11111 的某人以及 user_id 22222 的另一个人进行正常的一对一聊天。
此外,我属于两个组(实际上是 super 组),其channel_id 3333344444

我可以指定 1111133333 作为实体,并且消息会正确发送(分别发送到第一个人或第一组)。但是,如果我指定 2222244444,我会收到错误:

Cannot find any entity corresponding to "{}"'.format(string)
ValueError: Cannot find any entity corresponding to "22222"

我还使用同一个 Telethon 实例从所有 4 个聊天中接收消息,一切正常。

所以我的问题是:如何获取 send_message() 的正确实体数据?

最佳答案

我建议阅读文档的这一部分([entities][1])

例如,我想将消息发送给用户名为: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

的 channel
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")

希望对你有用。[1]:https://docs.telethon.dev/en/stable/concepts/entities.html

关于python - 使用 Telethon : some entity parameters work, 发送 Telegram 消息,其他人则不发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52002524/

26 4 0