无原创建账号时如何通过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:零依赖命令行直接拉取(适合临时查看积压消息)
- 先清除可能残留的Webhook配置,避免消息被推到旧的无效服务地址,执行命令:
curl https://api.telegram.org/bot<替换成你的Bot Token>/deleteWebhook?drop_pending_updates=false
注意必须携带参数
drop_pending_updates=false,否则会清空所有未消费的积压消息,导致你看不到之前收到的内容。
- 拉取全量积压消息:
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
相关产品推荐
相关产品推荐

