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

问题描述 投票:0回答:1

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

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

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

client.send_message(entity,text)

但我无法弄清楚

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

例如:

我与具有 user_id

11111
的人以及另一个具有 user_id
22222
的人进行正常的一对一聊天。
此外,我分为两个组(实际上是超级组),它们的channel_id
33333
44444

我可以指定

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

找不到与“{}”'.format(string)对应的任何实体
ValueError:找不到与“22222”对应的任何实体

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

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

python entity telegram python-telegram-bot telethon
1个回答
16
投票

我建议阅读文档的这一部分([实体][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

的频道
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

© www.soinside.com 2019 - 2024. All rights reserved.