使用 Telethon 发送 Telegram 消息:一些实体参数有效,其他的无效?

Sending Telegram messages with Telethon: some entity parameters work, others don't?

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

有时,目标是另一个用户(一次聊天中的普通用户),有时是一个群组,有时是一个超级群组,有时是一个频道(我是其中的管理员)。

如果我没理解错的话,语法应该是:

client.send_message(entity,text)

但我无法弄清楚 entity 参数在不同情况下应该是什么。我发现特别令人困惑的是,指定一个整数 ID 似乎对某些组有效,但对其他组无效。

例如:

我与拥有 user_id 11111 的人进行正常的一对一聊天,还与另一个拥有 user_id 22222 的人进行正常的一对一聊天。
此外,我属于两个组(实际上是超级组),它们具有 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)

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

希望对你有用