You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Telethon读取公开群组中的消息?

解决Telethon读取公开群组消息时的BotMethodInvalidError错误

错误原因

这个错误是因为你用机器人账号(通过@BotFather创建的)调用了Telegram限制机器人使用的API方法。Telegram对机器人账号的权限做了严格限制,GetHistoryRequest(也就是iter_messages底层调用的方法)不在机器人允许的API范围内。

解决方案

必须使用普通用户账号(非机器人)的api_id和api_hash来初始化TelegramClient,具体步骤如下:

  1. 获取普通用户的API凭证

    • 登录Telegram官方开发者后台,注册一个新应用,获取对应的api_id和api_hash
    • 注意:这里需要使用你自己的普通Telegram账号(不是机器人)登录开发者后台
  2. 修改代码使用普通用户凭证
    替换原代码中的机器人凭证为普通用户的api_id和api_hash,第一次运行代码时会提示你输入手机号和验证码完成登录验证:

from telethon.sync import TelegramClient

# 替换为你的普通用户api_id和api_hash
api_id = '你的普通用户api_id'
api_hash = '你的普通用户api_hash'

with TelegramClient('user_session', api_id, api_hash) as client:
    chat_entity = client.get_entity('https://t.me/new_ton_news')
    # 可通过limit参数限制读取的消息数量,避免一次性加载过多数据
    for message in client.iter_messages(chat_entity, limit=20):
        print(message.sender_id, ':', message.text)

额外注意事项

  • 机器人账号仅能通过Webhooks或getUpdates接口获取新消息,无法主动拉取历史消息
  • 使用普通用户账号操作时,需遵守Telegram的使用条款,避免频繁发起请求导致账号被限制

内容的提问来源于stack exchange,提问作者Твоя мама

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 03:10:55