【问题标题】:Sending Telegram messages with Telethon: some entity parameters work, others don't?使用 Telethon 发送 Telegram 消息:某些实体参数有效,其他参数无效?
【发布时间】:2019-01-30 19:41:20
【问题描述】:

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

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

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

client.send_message(entity,text)

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

例如:

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

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

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

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

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

【问题讨论】:

  • 试试client.send_message(PeerUser(user_id=11111), 'test-message'),其中11111是你发送消息的chat_id,还要添加行from telethon.tl.types import PeerUser

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


【解决方案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")

希望对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    相关资源
    最近更新 更多