| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Add a per-track silent flag. Cron already uses play_now (interrupt the
current track), but play_next_locked still announced the track to the last
known text channel; suppress playing and failure announcements for silent
tracks, including when a cron track fails to prepare.
|
| |
|
|
|
|
| |
Acknowledge the interaction with a zero-width ephemeral reply, delete it,
then send the text through ChannelId::say so it lands as a normal channel
message instead of an interaction reply.
|
| |
|
|
|
|
|
|
|
|
|
| |
espeak-rs-sys installs espeak-ng-data into the build tree and compiles that
path in as the default, so the runtime image failed with 'phontab: No such
file or directory'. Copy the data from the builder to /usr/share and point
PIPER_ESPEAKNG_DATA_DIRECTORY there; compose overrides the host path from
.env.
Also trim trailing slashes from Copyparty base URLs, document that env_file
changes need --force-recreate, and clean inline comments in .env.example.
|
| |
|
|
| |
Signed-off-by: salmonik <salmonik@tuta.io>
|
| |
|
|
|
|
|
|
|
| |
Graduate grajcuj/skip/queue/stop/join into the /music parent and drop the
top-level names. On startup, reconcile global slash commands and delete
any that are no longer registered, since Discord otherwise keeps stale
commands after a rename or move.
Docs updated for the new command layout and queue semantics.
|
| |
|
|
|
|
|
|
|
|
| |
Tracks are queued in memory per guild, defaulting to append (last).
Playback auto-advances on TrackEvent::End/Error with a per-track token
so manual stops and skips cannot double-advance. /music queue shows the
current track followed by pending items. /stop clears the queue.
Cron audio now goes through the same MusicState instead of poking the
track-handle map directly.
|
| |
|
|
| |
Signed-off-by: salmonik <salmonik@tuta.io>
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Signed-off-by: salmonik <salmonik@tuta.io>
|
| |
|
|
| |
Signed-off-by: salmonik <salmonik@tuta.io>
|
| |
|
|
| |
Signed-off-by: salmonik <salmonik@tuta.io>
|
| |
|
|
|
|
| |
/grajcuj'ing
Signed-off-by: salmonik <salmonik@tuta.io>
|
| | |
|
| |
|
|
| |
Signed-off-by: salmonik <salmonik@tuta.io>
|
| |
|
|
| |
Signed-off-by: salmonik <salmonik@tuta.io>
|
| | |
|
| |
|
|
| |
this lets stale records from abrupt stopping be deleted
|
| |
|
|
|
| |
Not saving full URL
Not using autocompletion content, just label
|
| |
|
|
|
|
|
|
|
|
|
| |
- New src/tts.rs: centralize TTS in synthesize(config, http_client, text)
Piper subprocess primary, Google Translate fallback on error/missing
- TTS_MODEL_PATH/TTS_VOICE env config (defaults to pl_PL-bass-high)
- Fix Unknown interaction errors: spawn play_tts_in_channel in background
so voice-state TTS no longer blocks the shard event loop (3s Discord limit)
- Best-effort confirmation replies in /tts to prevent error cascade
- Custom on_error handler: graceful interaction-expired error handling
- Comprehensive tracing logging (engine, model, duration, stderr)
|
| | |
|
| | |
|
| |
|
|
| |
Signed-off-by: salmonik <salmonik@tuta.io>
|
| |
|
|
| |
Signed-off-by: salmonik <raisersoft@proton.me>
|
| |
|
|
| |
Signed-off-by: salmonik <raisersoft@proton.me>
|
| |
|
|
| |
Signed-off-by: salmonik <raisersoft@proton.me>
|
| |
|
|
| |
Signed-off-by: salmonik <raisersoft@proton.me>
|
| |
|
|
| |
Signed-off-by: salmonik <raisersoft@proton.me>
|
|
|
Signed-off-by: salmonik <raisersoft@proton.me>
|