- Rust 97.8%
- Dockerfile 2.2%
| deploy | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| config.example.toml | ||
| Dockerfile | ||
| LICENSE | ||
| onmyoudama.png | ||
| README.md | ||
onmyoudama
Yet another Discord utility bot. Built for the Allura community. Inspired by Infobot 42, whose featureset is only replicated when desired by Allura, but is otherwise complementary. Designed by a human, implemented with Kimi.
Feature List
- Role automation
- Channel gates
- Vanity roles (Sheep-like)
- Auto-ban (for incinerator channels)
- Link Conversion (for e.g. converting x.com to fixvx.com)
- Reminders/Alarms (WIP)
- Webhook API (WIP)
- LLM Assistant from an OpenAI-Compatible endpoint (WIP)
- Configurable logging behavior (WIP)
- Remote restart and update
- TOML config, Components menu for remote configuration
- Other junk later
- IT'S SPHERICAL
Running with Docker
docker build -t code.allura.moe/inflatebot/onmyoudama:latest .
# Minimal: configure purely via environment
docker run --rm -e ONMYOUDAMA_TOKEN=your_token_here \
code.allura.moe/inflatebot/onmyoudama:latest
# Or with a config file (see config.example.toml)
docker run --rm \
-v /path/to/config:/config:ro \
code.allura.moe/inflatebot/onmyoudama:latest
The bot looks for config at $ONMYOUDAMA_CONFIG, then /config/onmyoudama.toml,
then ./onmyoudama.toml. Secret values can be given as env:VARNAME to be read
from the environment at startup.
Deployment (with remote restart/update)
deploy/ contains a compose stack: the bot plus a watchtower sidecar. The
Discord application owner can use /restart (restarts the container) and
/update (watchtower pulls the latest image and recreates the bot). See the
comments in deploy/docker-compose.yml for setup.
Role menus, vanity roles, and channel gates
Per-guild features, configured under [[guilds]] (see config.example.toml):
/rolemenu post name:<name>posts a self-apply role menu (one toggle button per configured role, max 25). Requires Manage Roles./vanity claimgives the member a personal hoisted role (named after them, random color);/vanity color <hex>and/vanity randomrestyle it. Enabled by default in every guild (opt out with[guilds.vanity] enabled = false). Role ownership is persisted in a JSON state file ($ONMYOUDAMA_STATE,/data/state.json, or./state.json; the compose stack mounts./data:/data)./gate post channels:<up to 5 channels>posts Enter/Leave buttons that grant or revoke the clicker's View Channel overwrite in those channels. Requires Manage Channels.
The buttons keep working across restarts (everything is encoded in the button custom ids). The bot needs the Manage Roles permission for role menus/vanity roles and Manage Channels (+ access to the gated channels) for gates — the invite URL printed at startup includes them.