Tidy chat output and pick search results by reaction

A search reply carried ten markdown links, and Stoat expands every link
into a full-size player — the result was a wall of embeds burying the
list. Stoat's embed generator skips links inside code spans or angle
brackets, so links now go out quietly, and list lines carry no links at
all: title, artist, length, source. Only `!nowplaying` keeps a preview,
where it was asked for.

Choosing a track no longer needs a second command: the results message
gets 1️⃣5️⃣ reactions and picking one queues the track, with `!pick`
still there when reactions fail or five results are not enough. Only the
person who searched can pick, so a list cannot be hijacked.

Also `!playvideo` to turn video on and queue a track in one go, and
setVideo no longer requires a running player — the switch is a setting,
and demanding a player made it fail on a server nothing had played on.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Leonid Pershin
2026-09-09 05:41:20 +03:00
co-authored by Claude Opus 5
parent 7cca374e66
commit e7e80e704b
5 changed files with 612 additions and 459 deletions
+7 -2
View File
@@ -120,12 +120,13 @@ cd /opt/stoat-mbot && docker compose up -d --build && docker compose logs -f
| --- | --- |
| `!play <ссылка или название>` | добавить трек/плейлист в очередь |
| `!playnext`, `!playnow` | следующим / немедленно |
| `!search <запрос>``!pick <n>` | поиск с выбором из списка |
| `!search <запрос>` | поиск: выбор реакцией 1️⃣–5️⃣ (или `!pick <n>`) |
| `!skip [n]`, `!stop`, `!pause`, `!resume` | управление воспроизведением |
| `!queue [страница]`, `!nowplaying` | очередь и текущий трек |
| `!volume [0-200]`, `!loop [off\|track\|queue]`, `!shuffle` | звук и порядок |
| `!remove <n>`, `!clear`, `!seek 1:23` | правка очереди и перемотка |
| `!video [on\|off]` | показывать клип как демонстрацию экрана |
| `!video [on\|off]` | показывать клип вместе со звуком |
| `!playvideo <ссылка или название>` | включить видео и добавить трек |
| `!join`, `!leave` | зайти в ваш голосовой канал / выйти |
| `!panel` | личная ссылка на веб-панель (действует 10 минут) |
| `!help` | список команд |
@@ -137,6 +138,10 @@ cd /opt/stoat-mbot && docker compose up -d --build && docker compose logs -f
В панели: поиск с добавлением в очередь/следующим/сейчас, drag-free перестановка треков стрелками,
клик по полосе прогресса — перемотка, слайдер громкости, выбор голосового канала, история.
Ссылки в ответах бота намеренно оформлены так, чтобы Stoat не разворачивал их в превью: список из
пяти результатов иначе превращается в стену видеоплееров. Единственное исключение — `!nowplaying`,
где превью запрошено явно.
---
## Если бот не заходит в голосовой канал