A modern revival of shishabot using updated dependencies and robust asynchronous Rust.
- Default prefix:
<(changeable via commands) - Reply to Render: Right-click or reply to any osu! score embed to instantly render the replay.
- Custom Skins: Add custom skins directly using raw
.osklinks.
You can run the bot using Docker / Podman (recommended for full orchestration including PostgreSQL, Caddy, Fileserver, and Ollama) or Bare Metal.
The provided docker-compose.yml (and podman-compose.yml) orchestrates all required services:
bot: The Rust Discord bot + danser-go + ffmpeg + xvfb (for headless rendering).postgres: PostgreSQL 16 with automatic schema initialization from migrations.fileserver: Lightweight upload receiver for rendered replay MP4s.caddy: Reverse proxy and static file server serving Discord-compatible video embeds and player.ollama: Local LLM backend for/ask,/aicontext, and/aiclear.
Copy the template and fill in your Discord & osu! API keys and hosting URL:
cp .env.example .envNote: You do not need to configure PostgreSQL or the upload server—they are pre-configured with secure linked defaults out of the box.
Automatic: If ./data/ does not yet contain Danser, the container automatically downloads the latest release, configures the headless CLI binary, and generates default settings on first startup.
(Optional) You can also run the bootstrap script manually:
./scripts/setup_danser.sh ./dataWith Docker Compose:
docker compose up -d --buildWith Podman:
podman compose up -d --buildIf you plan to use AI features with local Ollama:
docker exec -it palentirbot-ollama ollama pull huihui_ai/qwen3-abliterated:4b
# or with podman:
podman exec -it palentirbot-ollama ollama pull huihui_ai/qwen3-abliterated:4bFollow these instructions to host the bot directly on your host machine:
git clone https://github.com/milankkk/palentirbot.git
cd palentirbotFill out the provided .env.example file with your credentials and rename it to .env:
cp .env.example .env- Navigate to the
fileserver/directory. - Edit the python script to match your desired port (default is
5555), directory, andupload_secret. - Start the upload server:
cd fileserver
python3 upload.py(Note: A Caddyfile.example is included if you wish to use Caddy for reverse-proxying.)
- Download and extract Danser into the
./data/danserdirectory.Note: For headless servers, rename
danser-clitodanseranddansertodanser-guior also set up a fake monitor for it to launch on in case it doesnt work (this is what did it for me) - Make it executable and run it once to generate the settings files:
cd data/danser
chmod +x danser
./danser- Danser will generate a
settings/folder containingdefault.jsonandcredentials.json. - In
default.json, adjust your encoder settings, skin settings, colors, etc. - In
credentials.json, input your osu! API Client ID and Secret (generate these in your osu! profile settings under OAuth).
Compile and run the bot in release mode (required for global Discord command registration):
cargo run --releasePray 🙏 and enjoy!
