Collaborative to-do list Discord bot built with discord.py. Every server gets a single shared task board message - members add items, check them off (with automatic strikethrough text and checkboxes), and the bot keeps the board tidy by deleting command messages after a second.
-
Create a bot user
- Visit the Discord Developer Portal, create an application, add a bot, and copy its token.
- In the Bot tab, enable the Message Content Intent so the prefix commands work.
- Invite the bot with
Send Messages,Embed Links,Read Message History, andManage Messagespermissions (the last one lets the bot clean up user commands).
-
Clone & install
python -m venv .venv .venv\Scripts\activate # Windows pip install -r requirements.txt
-
Configure environment
- Duplicate
.env.exampleand rename it.env. - Paste your token:
DISCORD_TOKEN=your_discord_bot_token.
- Duplicate
-
Run the bot
python bot.py
The bot stores boards in
data/todos.json. The file is created automatically on first run.
All commands use the !todo prefix and are server-only.
| Command | Description |
|---|---|
!todo |
Show (or move) the board embed into the current channel. |
!todo add <description> |
Add a new task and credit the author. |
!todo check <task_id> |
Mark a task complete (records who completed it). |
!todo uncheck <task_id> |
Re-open a completed task. |
!todo remove <task_id> |
Delete a task from the board. |
!todo clear |
Wipe the entire board. |
!todo help |
DM the command reference to the requester. |
!todo commands |
Post the command reference in the channel (auto-deletes). |
Each task shows an ID, so !todo check 2 closes the task with ID 2.
- The bot keeps a single embed per server that always reflects the current board. Running a command in a new channel moves the board message there.
- User command messages are deleted after one second to keep channels clean.
- Each task line shows who created it, and once completed the embed shows who checked it off.
- Keep your bot token in
.envonly; the included.gitignoreprevents it from being committed. - Treat the invite link like a password—only share it with servers you control.
- If the token ever leaks, rotate it in the Discord Developer Portal immediately and update your
.env.
- Slash commands & buttons: Move to Discord's interaction-based workflow with slash commands and interactive components for a richer UX.
- User / channel scoping: Allow personal boards or per-channel boards in addition to server-wide tasks.
- Reminders & due dates: Let members set optional due dates and DM reminders.
- Task metadata: Add tags, categories, or task owners to keep busy servers organized.
- Automations: Mirror completed tasks into a "done" channel, or hook into webhooks for external integrations.