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

通过GitHub部署到Heroku的Telegram Bot无法接收Webhook消息求助

解决Telegram Bot部署Heroku后Webhook无法接收消息的问题

我之前把Telegram Bot部署到Heroku时也踩过类似的Webhook坑,咱们一步步排查解决:

1. 先修复最容易忽略的函数名冲突

看你的代码里,/start和/help命令的处理器函数名都是send_welcome,这会导致后面的/help处理器直接覆盖前面的/start处理器!Bot根本没法正确响应命令,看起来就像没收到消息。

赶紧把函数名改成不同的:

@bot.message_handler(commands=['start']) # welcome message handler
def send_start_welcome(message):
    # 你的/start逻辑代码
@bot.message_handler(commands=['help']) # help message handler
def send_help_welcome(message):
    # 你的/help逻辑代码

2. 验证Webhook URL是否配置正确

代码里的bot.set_webhook(url='https://myherokuapp.herokuapp.com/' + TOKEN),这里的myherokuapp必须替换成你实际的Heroku应用名称!比如你的Heroku app叫my-telegram-converter-bot,那URL就得写成https://my-telegram-converter-bot.herokuapp.com/ + TOKEN。

你可以手动调用Telegram的API检查Webhook状态,在终端执行:

curl https://api.telegram.org/bot<你的TOKEN>/getWebhookInfo

返回结果里的url要和你的Heroku域名完全一致,同时看last_error_message字段,Telegram会直接告诉你消息发送失败的原因(比如URL错误、SSL问题等)。

3. 确认依赖版本兼容性

旧版本的pyTelegramBotAPI可能和Flask的Webhook处理有兼容问题,确保你用的是最新稳定版:

  • 本地执行pip install --upgrade pytelegrambotapi
  • 在requirements.txt里明确指定版本,比如:
    flask==2.3.3
    pytelegrambotapi==4.14.0
    

Heroku部署时会严格按照这个文件安装依赖,版本不匹配很容易导致奇怪的问题。

4. 检查Flask服务是否正常运行

先访问你的Heroku应用根路径(比如https://your-app-name.herokuapp.com/),如果能返回!,说明Flask服务启动正常;
再用POST请求测试Webhook路由,用curl或者Postman执行:

curl -X POST https://your-app-name.herokuapp.com/<你的TOKEN>

如果返回!,说明路由配置没问题。

5. 查看Heroku日志找线索

登录Heroku控制台,实时查看应用日志:

heroku logs --tail

这里会显示Flask的请求记录、TeleBot的错误信息,比如有没有收到Telegram的POST请求,有没有报错(比如403、500错误),这些日志能直接帮你定位问题根源。

内容的提问来源于stack exchange,提问作者Erik Van Moon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:57:34