发送电报消息以马拉松式节目:一些实体参数工作,别人不一样?(Sending Telegram mes

2019-11-05 02:52发布

我使用的是马拉松式节目的send_message功能将消息发送到不同的聊天记录。

有时候,目的地是另一个用户(只是一个聊天的常规one),有时一个群体,有时是超群的,有时一个通道(其中我是管理员)。

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

client.send_message(entity,text)

但我想不出什么entity参数应该是在不同的情况。 我感到特别困惑的指定整数ID似乎对某些群体做工精细,但不是为别人。

例如:

我与别人谁user_id说明正常的1对1聊天11111 ,同时还与谁已user_id说明另一个人22222
而且我在这已经CHANNEL_ID两组(超群实际上) 3333344444

我可以指定1111133333的实体,以及(分别给第一人或第一组)的消息被正确地发送。 但是,如果我指定的2222244444 ,我发现了一个错误:

无法找到与“{}””任何实体。格式(串)
ValueError异常:找不到对应于“22222”的任何实体

我也收到来自使用相同的马拉松式节目实例的所有4个聊天mesasges,而这一切工作的罚款。

所以我的问题是: 我怎么得到send_message正确的实体数据()?

Answer 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")

我希望对你有用。



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