Telegram bot使用ngrok配置webhook提示Invalid webhook url specified错误
报错核心原因
- Telegram Bot 平台要求 webhook 地址必须使用 HTTPS 协议,你当前传入的是 http 开头的 ngrok 地址,不符合平台规则,直接被判定为无效URL。
- 代码拼接URL时缺少路径分隔符
/,最终拼接出来的地址格式错误,比如你的ngrok地址加TOKEN后会变成http://c026-122-161-51-216.ngrok.ioxxxxxx(xxxxxx是你的TOKEN),本身就是不合法的路径。 - 你之前尝试释放8443端口无法解决问题,因为本次报错和端口占用无关。
解决步骤
- 复制ngrok启动后给出的HTTPS前缀地址,不要用HTTP的。
- 修正代码中
set_webhook的调用逻辑,补充路径分隔符,修改后的代码如下:
# 把原来的http改成https,地址最后加斜杠 bot.set_webhook("https://c026-122-161-51-216.ngrok.io/" + TOKEN)
- 可选优化:将Flask启动配置修改为监听所有网卡,避免本地访问限制:
app.run(host='0.0.0.0', port=8443)
- 注意ngrok免费版本每次重启都会生成新的临时域名,每次启动机器人前都要更新代码里的ngrok地址,避免地址失效。
内容的提问来源于stack exchange,提问作者sky_walker18
相关产品推荐
相关产品推荐

