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

时间:2018-08-24 10:28:51

标签: python entity telegram python-telegram-bot telethon

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

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

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

chmod -R u=rwX,g=rwX,o=rX static_dir

但是我无法弄清楚client.send_message(entity,text)参数在不同情况下应该是什么。我发现特别令人困惑的是,对于某些组,指定整数ID似乎可以正常工作,但对于其他组却不能。

例如:

我与具有user_id entity的人以及与具有user_id 11111的另一个人进行正常的一对一聊天。
此外,我属于两个组(实际上是超组),它们具有channel_id 2222233333

我可以将4444411111指定为实体,然后正确地发送消息(分别发送给第一人或第一组)。但是,如果我指定3333322222,则会出现错误:

  

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

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

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

1 个答案:

答案 0 :(得分:1)

我建议阅读文档的这一部分(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")

希望对您有用。