Telegram bot for reading posts from:
Commands:
/top - Top posts
/random - Read random post
/source - Change source:
/help - Help
Register new bot at https://t.me/BotFather or use previously created one.
Take bot access token.
Before running copy sample file and replace env vars with your credentials
cp .env.sample .env
source .env
Run application locally:
make run
Redis is used as cache. If redis isn't available fallbacks to memory cache.
Also you can run bot with redis in docker compose:
docker-compose up
Build binary
make build
Run unit tests
make test
Run integration tests
make test_integration
Run linters
make lint
Automatic CI/CD pipelines are building and testing the bot on each PR.
Demo bot is deployed to production on Heroku on merge to master.
To deploy your app on Heroku read documentation.
brew install heroku/brew/heroku
heroku login
heroku create lesswrong-bot
heroku config:set WEBHOOK=true
heroku config:set TOKEN=<token>
heroku webhooks:add -i api:build -l notify -u https://deploy-hook-bot.herokuapp.com/hooks -t <auth_token> # To add deploy hook
git push heroku main
If application is already setup just run:
make deploy
Env var | Type | Description | Default |
---|---|---|---|
REDIS_URL | String | Redis connection string | redis://localhost:6379/1 |
TOKEN | String | Telegram bot access token | |
DEBUG | Boolean | Enable debug mode | false |
WEBHOOK | Boolean | Enable webhook mode | false |
PORT | String | Port for webhook | 9999 |
WEBHOOK_HOST | String | Webhook host for telegram bot | https://lesswrong-bot.herokuapp.com |
TIMEOUT | Integer | Request timeout in seconds | 15s |
CACHE_EXPIRE | Integer | Posts cache expire in hours | 24h |