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

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_id3333344444.

我可以指定1111133333作为实体,并且消息被正确发送(分别发送给第一个人或第一组)。但是,如果我指定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)

我希望对你有用。