Skip to content

About

Discord bot for rendering osu! standard replays

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

palentirbot (no correlation)

A modern revival of shishabot using updated dependencies and robust asynchronous Rust.

Preview

Invite the bot to your server

Features

  • 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 .osk links.

Setup & Installation

You can run the bot using Docker / Podman (recommended for full orchestration including PostgreSQL, Caddy, Fileserver, and Ollama) or Bare Metal.


Method A: Docker & Podman Compose (Recommended)

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.

1. Configure .env

Copy the template and fill in your Discord & osu! API keys and hosting URL:

cp .env.example .env

Note: You do not need to configure PostgreSQL or the upload server—they are pre-configured with secure linked defaults out of the box.

2. Danser Setup

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 ./data

3. Start the Stack

With Docker Compose:

docker compose up -d --build

With Podman:

podman compose up -d --build

4. (Optional) Pull an Ollama model

If 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:4b

Method B: Manual / Bare Metal Installation

Follow these instructions to host the bot directly on your host machine:

1. Clone the Repository

git clone https://github.com/milankkk/palentirbot.git
cd palentirbot

2. Environment Variables

Fill out the provided .env.example file with your credentials and rename it to .env:

cp .env.example .env

3. Configure the File Server

  1. Navigate to the fileserver/ directory.
  2. Edit the python script to match your desired port (default is 5555), directory, and upload_secret.
  3. Start the upload server:
cd fileserver
python3 upload.py

(Note: A Caddyfile.example is included if you wish to use Caddy for reverse-proxying.)

4. Danser Setup

  1. Download and extract Danser into the ./data/danser directory.

    Note: For headless servers, rename danser-cli to danser and danser to danser-gui or also set up a fake monitor for it to launch on in case it doesnt work (this is what did it for me)

  2. Make it executable and run it once to generate the settings files:
cd data/danser
chmod +x danser
./danser
  1. Danser will generate a settings/ folder containing default.json and credentials.json.
  2. In default.json, adjust your encoder settings, skin settings, colors, etc.
  3. In credentials.json, input your osu! API Client ID and Secret (generate these in your osu! profile settings under OAuth).

5. Run the Bot

Compile and run the bot in release mode (required for global Discord command registration):

cargo run --release

6. Profit

Pray 🙏 and enjoy!

About

Discord bot for rendering osu! standard replays

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages