Telegram 机器人可以读取频道消息吗

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

电报机器人可以读取/访问我或机器人都不是管理员的电报频道吗?

我知道直到去年11月这是不可能的,但我听说有人这样做了,但到目前为止我还做不到。

我非常感谢您的意见和知识。

P.s.任何解决方法都会很棒。

python web-scraping telegram telegram-bot telegram-api
2个回答
35
投票

常见问题解答内容如下:

  1. 所有机器人,无论设置如何,都将收到:

    • 所有服务消息。
    • 与用户私人聊天的所有消息。
    • 来自其所属频道的所有消息。
  2. 机器人管理员和禁用隐私模式的机器人将收到除其他机器人发送的消息之外的所有消息。

  3. 启用隐私模式的机器人将收到:

    • 明确针对他们的命令(例如,/command@this_bot)。
    • 如果机器人是最后一个向群组发送消息的机器人,则来自用户的一般命令(例如 /start)。
    • 通过此机器人发送的消息。
    • 回复任何暗示或明确针对此机器人的消息。

因此,如果您的机器人是该频道的成员,它将收到除其他机器人发送的消息之外的所有消息。


0
投票

您可能可以使用其他类型的 Telegram API:Telegram [客户端] API 和 TDLib

使用 telethon 库可以轻松阅读频道历史记录(请参阅 telethon 文档)。

为此,我们需要一个

api_id
和一个
api_hash
。因此,请执行以下操作:

  1. 登录Telegram核心
  2. 打开API开发工具区
  3. 在那里填写简单的表格
  4. 现在您可以收到您的
    api_id
    api_hash

    有关更多信息,请参阅 Telegram 的帮助文档,了解如何获取 API 凭证

这里是获取 targetChannelId 的最后 5 消息的示例代码:

from telethon import TelegramClient


API_ID = 123456     # See above for how to get it
API_HASH = '123abc' # See above for how to get it
client = TelegramClient('my-client', API_ID, API_HASH)


async def main():
    async for message in client.iter_messages('targetChannelId', limit=5):
        print(message.id, message.text)


with client:
    client.loop.run_until_complete(main())

首次运行此代码时,它会询问您的电话号码或机器人令牌。以 +9912345... 格式输入您的

电话号码
,其中
99
是您的国家/地区代码,其余是您的电话号码。 然后,它可能会向您的 Telegram 应用程序发送登录代码;在控制台中输入它。

注意:只有用户(电话号码)才能看到频道历史消息;机器人不能(至少在电视马拉松中)。仅当机器人是频道管理员之一时,才能侦听频道更新

client.iter_messages()
接受其他参数,如
min_id
,可用于仅在特定消息之后获取消息(例如,我们可以保存已处理的最后一条消息ID,并在下次将该ID传递为
min_id
,所以仅返回该消息之后的消息)。

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