前言

本文只是基础实现使用webhook消息处理方式开发telegram bot并且部署在heroku平台上

开发准备

  • 开发语言: nodejs
  • bot-api框架: telegraf
  • 部署平台: heroku

常见问题

1.heroku的configVar与nodejs的.env处理

使用heroku CLI设置configVar

1
heroku config:set CONFIG_NAME=CONFIG_VALUE

heroku config

比如把BOT_TOKEN 设置在config var内,但是当本地node项目测试时需要从.env文件中读取变量,可以通过已下命令把heroku的config var写入到.env文件

1
heroku config -s >> .env

2.heroku web应用端口的问题

heroku 启动 web 应用时会随机生成一个端口值记录在 process.env.PORT 内,所以在使用telegraf的api时,在webhook的配置项内有端口值需要根据dev/prod的环境来设置

1
2
3
4
5
6
7
8
9
bot.launch({
webhook: {
domain:
process.env.NODE_ENV === 'production'
? 'https://xxxxxxx.herokuapp.com/'
: '个人使用本地localtunnel通道用于本地启动',
port: process.env.PORT || 6342,
},
});