Skip to content

Telegram bot for reading posts from Lesswrong and Slate Star Codex

License

Notifications You must be signed in to change notification settings

ndrewnee/lesswrong-bot

Repository files navigation

🤖 lesswrong-bot

Go

Telegram bot for reading posts from:

😎 Usage

Commands:

/top - Top posts

/random - Read random post

/source - Change source:

  1. Lesswrong.ru (default)
  2. Slate Star Codex
  3. Astral Codex Ten.
  4. Lesswrong.com

/help - Help

🧑‍💻 Run locally

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

Build binary

make build

🧪 Testing

Run unit tests

make test

Run integration tests

make test_integration

🖍 Lint

Run linters

make lint

🛥 Deployment

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

🛠 Environment variables

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

Releases

No releases published

Packages

No packages published

Languages