Tao Yao is a Discord bot for moderation, AI fact-checking, and server games — built with an actual personality instead of a neutral one. She doesn't perform enthusiasm. She's not going to start now.
Four jobs. No filler command.
Every feature below ships in the current build — nothing here is a roadmap item wearing a marketing sentence.
ask / verify
Answers questions. Checks claims.
/ask takes a question and answers it in character, sarcasm intact — unless the topic is a genuine health or safety concern, where the persona drops and the answer turns direct. Reply to any message and mention her with fact check and she'll evaluate it — true / false / misleading / unverifiable — through a chain of fallback models so one provider outage doesn't take the feature down.
rules / cc / reports
Rules, custom commands, and a real incident tracker.
/rule and /cc manage a shared library of server text — create, edit, alias, send to a member's DMs or post in-channel. /report member and /report moderator file incidents with status, priority, and assignment — moderators reporting moderators goes straight to admins only, so exposure isn't a reason not to report.
modmail
DM her. It reaches a human.
Direct messages get relayed into a dedicated mod channel as a single running thread — one message, kept updated — and staff reply by replying to it. No separate ticket command, no separate dashboard.
duel / riddle
Two ways to lose to your own overconfidence.
/duel is a 1v1 HP battle — Strike beats Guard, Guard beats Gambit, Gambit beats Strike — with a challenge/accept flow and a real leaderboard. /riddle runs timed rounds with fuzzy-matched answers, a hint that costs half your points, and streak tracking that resets the moment nobody answers in time.
status / ping
She'll tell you if something's actually wrong.
/status reports live version, environment, and known-bug data — pulled from a source that updates independently of the bot's own deploy, so the answer doesn't depend on whether tonight's release went out cleanly.
Not held together by hope.
Three decisions that shape everything above.
One AI layer, every call-site
A single calling function backs both /ask and fact-checking. Each passes its own prompt, model chain, and limits — but a timeout or rate-limit on one model falls through to the next automatically. Only a dead connection or an exhausted chain becomes a visible error.
Rules and commands, same backend
Both sit on one generic content store — same create / edit / alias / delete shape, separate keys, one shared reserved-word list guarding both from collision. That's why they behave identically down to the wording.
One thread, kept current
A modmail conversation and a filed report are each backed by a single message that gets edited in place as things progress — not a new post per event — with a fallback if that message gets deleted out from under it.
Remarkable. Wrong with confidence.— logged response, /ask
Command surface.
Slash commands unless noted. Mod and Admin are separate role tiers — Admin includes everything Mod can do.
| command | does | who |
|---|---|---|
| /ask | Ask her anything. 30s cooldown per person. | everyone |
| fact check ↩ | Mention + reply to a message to verify a claim. | everyone |
| /rule, /cc | create · edit · send · list · delete | mod / admin |
| /cc alias | Attach or remove an alias, search by text. | admin |
| /report member | File a report on a member. | everyone |
| /report moderator | File a report on a moderator — routes to admins only. | everyone |
| /report status | Check a report's progress by id. | reporter / staff |
| /report assign, update | Assign staff, change status / priority / note. | mod / admin |
| /duel challenge | Challenge a member. They have to accept first. | everyone |
| /duel stats, leaderboard | Your record, or the server's. | everyone |
| /riddle play | Start a round. First correct answer wins. | everyone |
| /riddle hint | Reveal a hint. Halves the points for that round. | everyone |
| /status, /ping | Health, version, and latency. | everyone |
Or run your own.
Tao Yao is open source under MIT. Requires Python 3.14+, a Discord bot token, and a Groq API key.
Clone and enter the environment
git clone https://github.com/w3nabil/taoyao.git
cd taoyao
python -m venv .venv
source .venv/bin/activate // .venv\Scripts\activate on Windows
Install and configure
pip install -r requirements.txt cp .env.example .env // add BOT_TOKEN + GROQ_API_KEY cp config.json.example config.json // add your server/role/channel ids
Run it
python bot.py
Runtime data is created automatically on first launch — nothing else to seed.