Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/odditive/heroku-node-telegram-bot
Starter pack for running telegram bot on the Heroku using Node.js
https://github.com/odditive/heroku-node-telegram-bot
heroku starter-kit telegram telegram-bot
Last synced: about 1 month ago
JSON representation
Starter pack for running telegram bot on the Heroku using Node.js
- Host: GitHub
- URL: https://github.com/odditive/heroku-node-telegram-bot
- Owner: odditive
- License: mit
- Created: 2016-04-13T17:23:21.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-10-31T05:07:23.000Z (about 3 years ago)
- Last Synced: 2024-08-03T23:03:15.956Z (5 months ago)
- Topics: heroku, starter-kit, telegram, telegram-bot
- Language: JavaScript
- Homepage:
- Size: 26.4 KB
- Stars: 159
- Watchers: 8
- Forks: 93
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# heroku-node-telegram-bot
Starter pack for running telegram bot on the Heroku using Node.js# Step-by-step
### Try bot locally
1. Create your own bot using Telegram's [BotFather](https://core.telegram.org/bots#3-how-do-i-create-a-bot) and grab your TOKEN.
2. Clone or download and unpack this repo.
3. Go to the app's folder using `cd ~/heroku-node-telegram-bot`
4. Run `npm install` (in some cases you will need to run this with sudo, you know, just the permissions).
5. Rename .env_example file into .env and set TOKEN to the value, you've got from the BotFather.
6. Run `npm start` and send smth to your bot.
7. After it says "hello" to you, we can go to the next stepπ### Deploy your bot to the heroku
1. Create the [Heroku account](https://heroku.com) and install the [Heroku Toolbelt](https://toolbelt.heroku.com/).
2. Login to your Heroku account using `heroku login`.
3. Go to the app's folder using `cd ~/heroku-node-telegram-bot`
4. Run `heroku create` to prepare the Heroku environment.
5. Run `heroku config:set TOKEN=SET HERE THE TOKEN YOU'VE GOT FROM THE BOTFATHER` and `heroku config:set HEROKU_URL=$(heroku info -s | grep web_url | cut -d= -f2)` to configure environment variables on the server.
6. Run `git add -A && git commit -m "Ready to run on heroku" && git push heroku master` to deploy your bot to the Heroku server.
7. Send smth to the bot to check out if it works ok.### Going further
Now you may wish to add other functionality to your bot and here you can face some problems. The reason is that in development mode your bot works using [polling](https://en.wikipedia.org/wiki/Push_technology#Long_polling) and on the heroku server it uses the [webhook](https://core.telegram.org/bots/api#setwebhook), because heroku will shut down the web-server after a period of inactivity that will result in your polling loop to shut down too. Once webhook was enabled, telegram will return an error `{"ok":false,"error_code":409,"description":"Error: Conflict: another webhook is active"}` when you will try to use polling again, and it's actually ok.
To go back to development mode, you will need to run `npm run switch_to_dev`. This script will disable current webhook and start your local server. Don't be afraid - when you will finish with the changes you may simply push your bot to heroku using `git push heroku master`. Then you should restart your app using `heroku restart`. It will set the webhook again.
### Possible OS issues
As i work on MacOS and sometimes on Ubuntu, you may face some problems with my npm scripts, so let's figure out how they work.
`npm run switch_to_dev` runs `export $(cat .env | xargs) && wget --spider https://api.telegram.org/bot$TOKEN/setWebhook?url= --delete-after && node index.js` which is actually an API call which will reset webhook (with the TOKEN from your environment variable) and `npm start`.
**If wget don't work (or is not installed) on your OS**, you can simply open the `https://api.telegram.org/botYOUR_TOKEN/setWebhook?url=` in your browser, but don't forget to replace YOUR_TOKEN with the token, you've got from the BotFather.
If your bot is not responding locally, in most cases, you will need to reset the environment variables by restarting your application.
### Links and references
Actually, this repo is created because I've faced problems when I was trying to run the bot using [mvalipour's article](http://mvalipour.github.io/node.js/2015/12/06/telegram-bot-webhook-existing-express/) and [this PR](https://github.com/mvalipour/telegram-bot-webhook/pull/3) to his repo. Still, these links will be very useful for the beginners.
The solution relies on the [node-telegram-bot-api wrapper](https://github.com/yagop/node-telegram-bot-api) by the @yagop, so you can find more info there.
Also check out [official API docs](https://core.telegram.org/bots/api) by Telegram team, it may be helpfull.
Good luck, BotCoder!
P.S. If you see that something is not working, please, open an [issue](https://github.com/volodymyrlut/heroku-node-telegram-bot/issues) or send me a PR if you've managed to make code better.
Created with great passion for bots.
In case of any bot development proposals, contact me [here](http://lut.rocks).