Python version: 3.14.5
This is a bot made for Discord using Discord.py.
Discord bot with voice transcription, LLM task extraction, and a real-time Kanban board.
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtCopy src/.env and fill in at minimum BOT_TOKEN, WEB_SECRET_KEY.
| Service | Env Var | Required for |
|---|---|---|
| Discord Bot | BOT_TOKEN |
Core |
| Discord OAuth2 | DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET |
Kanban login |
| Giphy | GIF_API_KEY |
GIF commands |
| YouTube | YOUTUBE_API_KEY |
YouTube commands |
| Spotify | SPOTIFY_ID, SPOTIFY_SECRET |
Spotify commands |
| Gemini | GEMINI_API_KEY |
LLM fallback (optional) |
python src/web/run.py # http://localhost:8080python src/bot.pyollama serve # must be running before starting the bot
ollama pull qwen2.5:7b-instruct-q4_K_M- Join VC →
/record→ speak →/stop - Open
http://localhost:8080to see tasks on the Kanban board - Tasks sync in real-time via WebSocket
| Command | Description |
|---|---|
/record |
Start recording voice channel audio |
/stop |
Stop, transcribe, and extract tasks |
/board |
Show board URL |
/tasks |
List stored tasks |
/task-add <title> |
Quick-add a task |
| File | What it does |
|---|---|
src/bot.py |
Bot entry point |
src/web/run.py |
Web server entry point |
src/services/voice/recorder.py |
Recording, transcription, task extraction pipeline |
src/services/api/ollama.py |
Ollama client (task extraction) |
src/services/taskstore.py |
JSON-backed task CRUD |
src/web/app.py |
FastAPI server (REST + WebSocket) |
src/web/static/kanban.js |
Board frontend |
data/tasks.json |
Persistent task storage |
src/.env |
Config |
If you want the music bot to work you must have ffmpeg installed on your machine.
You can put the bin files inside this project and direct the bot to it or have it in your system path.
self.FFMPEG_EXE_PATH = PATH TO FFMPEGyay -S cloudflared
cloudflared tunnel --url http://localhost:8080Add the generated URL to DISCORD_REDIRECT_URI in .env and the Discord Developer Portal.