clj-telebot
Hypothesis (draft)
How small can a Telegram bot be in Clojure with no framework — just the HTTP API and a loop?
Stack & constraints
- Clojure + Hato (HTTP) + Cheshire (JSON), long-polling the Bot API.
- Leiningen for build; Java 8+ (CI on Temurin 21).
yt-dlpandffmpegonPATHfor video downloads.- Fails fast: a missing
TELEGRAM_BOT_TOKENthrows on the first API call rather than starting half-configured.
What shipped
- Echoes text, reports uptime.
- Downloads videos through
yt-dlpwith per-chat rate limiting. - Ships as a standalone jar.
Retrospective (draft)
- The interesting part was not the bot but the boundary: rate limiting and external binaries (
yt-dlp/ffmpeg) are where a “tiny” bot stops being tiny.