使用 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 33333
和 44444
.
我可以指定 11111
或 33333
作为实体,并且消息被正确发送(分别发送给第一个人或第一组)。但是,如果我指定 22222
或 44444
,则会出现错误:
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")
希望对你有用
我正在使用 Telethon 的 send_message 功能向各种聊天发送消息。
有时,目标是另一个用户(一次聊天中的普通用户),有时是一个群组,有时是一个超级群组,有时是一个频道(我是其中的管理员)。
如果我没理解错的话,语法应该是:
client.send_message(entity,text)
但我无法弄清楚 entity
参数在不同情况下应该是什么。我发现特别令人困惑的是,指定一个整数 ID 似乎对某些组有效,但对其他组无效。
例如:
我与拥有 user_id 11111
的人进行正常的一对一聊天,还与另一个拥有 user_id 22222
的人进行正常的一对一聊天。
此外,我属于两个组(实际上是超级组),它们具有 channel_id 33333
和 44444
.
我可以指定 11111
或 33333
作为实体,并且消息被正确发送(分别发送给第一个人或第一组)。但是,如果我指定 22222
或 44444
,则会出现错误:
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")
希望对你有用