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

Telegram Bot迁移服务器后数据库丢失,如何获取历史启动用户ID列表?

获取Telegram Bot历史启动用户ID的解决方案

Telegram Bot API本身没有提供直接获取所有曾启动过机器人的用户ID的接口,但可以通过客户端API调用messages.getDialogs方法实现,具体步骤如下:

  • 核心逻辑:通过机器人账号登录Telegram客户端API,遍历机器人的所有对话列表,过滤出用户类型的对话并提取ID。注意需要使用机器人的API ID、API Hash(而非Bot Token)来调用客户端API,Bot Token仅能访问Bot API接口。

  • 实现步骤:

    1. 在Telegram开发者平台获取机器人对应的API ID和API Hash(与Bot Token分开申请)。
    2. 使用支持客户端API的开发库(如Python的Pyrogram或Telethon)编写脚本:
      • 以Telethon为例,初始化客户端并完成机器人账号登录
      • 遍历所有对话,筛选出用户对话并提取user_id
    3. 示例代码(Telethon):
      from telethon import TelegramClient
      
      # 替换为你的实际信息
      api_id = 123456
      api_hash = 'abcdef1234567890abcdef1234567890'
      
      # 初始化客户端,session文件会保存登录状态
      client = TelegramClient('bot_session', api_id, api_hash)
      
      async def collect_user_ids():
          user_ids = set()
          # 遍历所有对话
          async for dialog in client.iter_dialogs():
              if dialog.is_user:
                  user_ids.add(dialog.id)
          # 保存结果到文件
          with open('bot_user_ids.txt', 'w') as f:
              f.write('\n'.join(map(str, user_ids)))
          print(f"成功获取{len(user_ids)}个唯一用户ID,已保存到bot_user_ids.txt")
      
      # 运行脚本
      with client:
          client.loop.run_until_complete(collect_user_ids())
      
    4. 注意事项:
      • 仅能抓取机器人仍保留对话记录的用户,若用户主动删除对话则无法获取
      • 避免频繁调用接口,防止触发Telegram的频率限制
      • 确保机器人账号状态正常,无限制或封禁情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:35:28