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

问询:无需手机验证下载Telethon公开群组消息的解决办法

解决Telethon Bot调用GetHistoryRequest受限的问题

首先明确:Telegram官方限制了Bot账号调用GetHistoryRequest这类获取历史消息的接口,这是API层面的权限限制,不是Telethon的问题,所以直接用Bot账号走这条路行不通。以下是两种可行的解决方案:

方案1:用普通用户会话文件实现免重复验证

  • 首次运行时,用正规普通用户账号(需绑定手机号)完成一次验证,Telethon会自动生成会话文件(默认命名类似session.session)
  • 后续自动化流程直接加载这个会话文件即可,无需再次输入手机号验证
  • 示例代码:
    from telethon import TelegramClient
    
    # 替换为你自己的API信息
    api_id = 123456
    api_hash = 'abcdef1234567890abcdef1234567890'
    session_file = 'my_telegram_session.session'
    target_group = 'public_group_username'  # 公开群组的用户名或ID
    
    client = TelegramClient(session_file, api_id, api_hash)
    
    async def fetch_new_messages():
        async with client:
            # 获取最新100条消息,可根据需求调整参数
            messages = await client.get_messages(target_group, limit=100)
            for msg in messages:
                # 处理消息逻辑,比如存储到数据库
                print(msg.text)
    
    client.loop.run_until_complete(fetch_new_messages())
    
  • 注意:会话文件相当于账号凭证,务必妥善保管,不要泄露

方案2:用Bot Webhook实时接收新消息

如果你的需求只是获取实时新消息,不需要历史消息,可以采用这种完全符合Bot权限的方式:

  • 给Bot配置公网可访问的Webhook URL,让Telegram主动将群组新消息推送到你的接口
  • 无需主动调用GetHistoryRequest,全程在Bot权限范围内运行
  • 核心逻辑:
    1. 通过BotFather给Bot设置Webhook(命令:/setwebhook)
    2. 编写Web服务接口接收Telegram推送的POST请求
    3. 在接口中解析并处理新消息内容

补充注意事项

  • 普通用户会话文件若长时间闲置可能会失效,只需重新运行一次验证流程即可恢复,频率极低,不会影响自动化稳定性
  • 避免使用批量注册的小号,容易被Telegram封禁,建议使用正规个人账号

内容的提问来源于stack exchange,提问作者ekdz__

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:40:22