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

无原创建账号时如何通过HTTP API token访问Telegram bot接收消息

无原账号访问Telegram Bot消息的可行方案

前置校验:确认Token有效性

首先先确认你持有的API Token仍有效,执行以下命令:

curl https://api.telegram.org/bot<替换成你的Bot Token>/getMe
  • 若返回结果中ok字段值为true,说明Token正常,可执行后续操作;若返回false说明Token已被吊销,无操作权限。

核心实现逻辑

只要持有有效Bot Token,不需要登录原绑定账号即可接管Bot的消息接收通道,Telegram Bot的更新(所有传入消息、交互事件)同一时间只会推送给一个活跃的接收端,一旦你的接收端上线,原绑定账号将无法再收到Bot的新消息推送。


方法1:零依赖命令行直接拉取(适合临时查看积压消息)

  1. 先清除可能残留的Webhook配置,避免消息被推到旧的无效服务地址,执行命令:
curl https://api.telegram.org/bot<替换成你的Bot Token>/deleteWebhook?drop_pending_updates=false

注意必须携带参数drop_pending_updates=false,否则会清空所有未消费的积压消息,导致你看不到之前收到的内容。

  1. 拉取全量积压消息:
curl https://api.telegram.org/bot<替换成你的Bot Token>/getUpdates?offset=-1&timeout=30

返回结果中包含所有未被消费的传入消息、交互事件,以及Bot对应会话的待同步内容。
3. 持续接收实时消息:每次拉取结果后取其中最大的update_id值,下一次请求将offset参数设为该值+1,循环调用即可持续收到新消息,不会遗漏。

方法2:本地脚本长期运行(适合稳定接收+消息转发)

不需要配置公网映射、不需要调试复杂的Webhook服务,直接用长轮询模式写极简脚本即可,Python示例代码如下:

import requests
import time

# 替换为你自己的Bot Token
BOT_TOKEN = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
# 替换为你自己新Telegram账号的Chat ID,可通过Telegram内公开的ID查询Bot获取,不需要可留空
TARGET_CHAT_ID = ""
offset = -1

if __name__ == "__main__":
    # 启动先清Webhook
    requests.get(f"https://api.telegram.org/bot{BOT_TOKEN}/deleteWebhook", params={"drop_pending_updates": False})
    while True:
        try:
            resp = requests.get(
                f"https://api.telegram.org/bot{BOT_TOKEN}/getUpdates",
                params={"offset": offset, "timeout": 30}
            ).json()
            if resp["ok"]:
                for update in resp["result"]:
                    offset = update["update_id"] + 1
                    # 控制台打印全量更新内容
                    print(update)
                    # 配置了目标Chat ID的话自动转发所有更新到你的新账号
                    if TARGET_CHAT_ID:
                        requests.post(
                            f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
                            params={
                                "chat_id": TARGET_CHAT_ID,
                                "text": f"收到Bot更新:{str(update)}"
                            }
                        )
        except Exception as e:
            print(f"连接出错,1秒后重试:{e}")
        time.sleep(1)

本地安装requests依赖后直接运行即可,所有消息会实时打印在控制台,配置自己新账号的Chat ID后还能自动把消息转发到你常用的账号上,不用守着控制台看。


常见踩坑说明

  • 之前用localhost相关源码调试失败,基本都是两个原因:一是没有提前清除残留的Webhook配置,消息被推到了旧地址;二是没有正确维护offset参数,导致重复拉取或者拉不到新消息。
  • 不要调用logOut接口,该接口仅对用户账号生效,用Bot Token调用会直接吊销当前Token,永久失去Bot控制权。
  • 未被消费的积压消息最长保留24小时,超过24小时的历史消息(包括Bot之前发给原账号的已读内容)无法通过Bot API拉取,这是Telegram的机制限制,没有绕过方法;接管后所有新的收发内容都可以完整留存。
  • 后续如果需要把Bot完全绑定到你的新账号,直接在新账号上找@BotFather,发送你的Bot Token即可完成归属转移,不需要原账号验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:21:49