aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-04 01:33:33 +0100
committersalmonik <salmonik@tuta.io>2026-11-04 01:33:33 +0100
commit97a26ec4e64a98a24dad7969337d2569339db9a7 (patch)
treeada17e2b1f50d053a6bfe4067296e06de848ac87 /README.md
parentconfig: harden the shared temp directory (diff)
downloadsenator-sperma-97a26ec4e64a98a24dad7969337d2569339db9a7.tar.gz
senator-sperma-97a26ec4e64a98a24dad7969337d2569339db9a7.zip
docs: sync with current behavior
Diffstat (limited to 'README.md')
-rw-r--r--README.md21
1 files changed, 13 insertions, 8 deletions
diff --git a/README.md b/README.md
index a3da394..f314793 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ The following binaries must be available on `PATH`:
24- `imagemagick` (`magick`) — image compression and conversion for `/compress` and `/convert` 24- `imagemagick` (`magick`) — image compression and conversion for `/compress` and `/convert`
25- `qalc` (Qalculate) — used by `/math` to evaluate expressions 25- `qalc` (Qalculate) — used by `/math` to evaluate expressions
26- `yt-dlp` (optional) — used by `/download` 26- `yt-dlp` (optional) — used by `/download`
27- `piper` (optional) — local TTS for `/tts` and `/senator ... tts_vc`; falls back to Google Translate TTS if unavailable 27- `piper` model files (optional) — local TTS for `/tts` and `/senator ... tts_vc`; TTS commands fail when unset
28 28
29Unlike the Python version, QR encode/decode is handled by the pure-Rust 29Unlike the Python version, QR encode/decode is handled by the pure-Rust
30`qrcode`/`rxing` crates — no `zbar` system library required. 30`qrcode`/`rxing` crates — no `zbar` system library required.
@@ -48,8 +48,8 @@ created automatically on first run.
48 48
49For local TTS, set `TTS_MODEL_PATH` to a Piper `.onnx` model file (or a 49For local TTS, set `TTS_MODEL_PATH` to a Piper `.onnx` model file (or a
50directory of models, in which case `TTS_VOICE` selects the model, defaulting to 50directory of models, in which case `TTS_VOICE` selects the model, defaulting to
51`pl_PL-bass-high`). When `TTS_MODEL_PATH` is unset or Piper is unavailable, the 51`pl_PL-bass-high`). There is no external TTS fallback: TTS commands fail when
52bot falls back to Google Translate TTS. 52the model is missing.
53 53
54### 5. Run 54### 5. Run
55 55
@@ -132,7 +132,7 @@ servers.
132- `/music join` — join the caller's voice channel 132- `/music join` — join the caller's voice channel
133 133
134### TTS 134### TTS
135- `/tts` — local Piper TTS (Polish, Google Translate fallback), sent as a file or played in voice 135- `/tts` — local Piper TTS (Polish), sent as a file or played in voice
136 136
137### Search & Web 137### Search & Web
138- `/web` — DuckDuckGo HTML scrape (soon to use 4get) 138- `/web` — DuckDuckGo HTML scrape (soon to use 4get)
@@ -148,6 +148,8 @@ servers.
148- `/say` — repeat the given text as the bot 148- `/say` — repeat the given text as the bot
149- `/math` — evaluate an ASCII math expression through `qalc` 149- `/math` — evaluate an ASCII math expression through `qalc`
150- `/qr generowanie` / `/qr dekodowanie` — QR encode / decode 150- `/qr generowanie` / `/qr dekodowanie` — QR encode / decode
151- `/record` — upload the last recording window (requires `MANAGE_GUILD`)
152- `/leaderboard` — `me`, `messages`, `active`, `afk`, `total`
151 153
152### Triggers 154### Triggers
153- `/trigger create` — new trigger group 155- `/trigger create` — new trigger group
@@ -168,6 +170,7 @@ servers.
168### Message Context Menu 170### Message Context Menu
169- "Wyślij załączniki" (right-click message) — upload attachments to Copyparty 171- "Wyślij załączniki" (right-click message) — upload attachments to Copyparty
170- "kompresja" (right-click message) — compress all attachments 172- "kompresja" (right-click message) — compress all attachments
173- "Pobierz z linku" (right-click message) — download every URL in the message
171 174
172## Architecture 175## Architecture
173 176
@@ -181,10 +184,12 @@ in-memory trigger cache, autocomplete cache, and per-guild music queue.
181- `src/copyparty/` — Copyparty search/upload client 184- `src/copyparty/` — Copyparty search/upload client
182- `src/openrouter/` — OpenRouter chat client 185- `src/openrouter/` — OpenRouter chat client
183- `src/database/` — sqlx pool, migrations, query helpers (6 tables) 186- `src/database/` — sqlx pool, migrations, query helpers (6 tables)
184- `src/voice/` — `VoiceManager`, mp3 → songbird input 187- `src/voice/` — `VoiceManager`, ffmpeg/symphonia → songbird input
188- `src/net.rs` — blocks private/link-local hosts for user-supplied URLs
189- `src/recording/` — per-guild rolling PCM buffer for `/record`
185- `src/events/` — `handle_ready`, voice-state, message (trigger matching) 190- `src/events/` — `handle_ready`, voice-state, message (trigger matching)
186- `src/tasks/` — 30s cron scheduler poll loop 191- `src/tasks/` — 60s cron scheduler poll loop
187- `src/lang.rs` — user-facing Polish strings 192- `src/lang.rs` — user-facing Polish strings
188 193
189All temporary files go through `crate::config::TEMP_PATH` 194All temporary files go through `crate::config::temp_path()`
190(`/tmp/senator_sperma`). 195(`$TMPDIR/senator_sperma`, created with mode `0700` at startup).