7

我正在使用 Telethon 的send_message函数将消息发送到各种聊天。

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

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

client.send_message(entity,text)

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

例如:

11111我与拥有 user_id的人以及拥有 user_id 的另一个人进行正常的一对一聊天22222
此外,我在两个组(实际上是超级组)中,它们具有 channel_id3333344444.

我可以将11111or指定33333为实体,并且消息会正确发送(分别发送给第一个人或第一组)。但是,如果我指定22222or 44444,则会出现错误:

找不到任何与“{}”相对应的实体。格式(字符串)
ValueError:找不到任何与“22222”相对应的实体

我还使用同一个 Telethon 实例接收来自所有 4 个聊天的消息,而且一切正常。

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

4

1 回答 1

12

我建议阅读文档的这一部分(实体

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

或者我想将消息发送到带有邀请链接的组: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")

我希望对你有用。

于 2018-08-25T19:23:43.760 回答