Dokumentation nachziehen -- und einen verlorenen Wunsch retten
Der README behauptete an prominenter Stelle "bewusst kein YouTube". Das stimmt seit vier Commits nicht mehr, und ein Satz, der das Gegenteil des Codes sagt, wird geglaubt. Ersetzt samt der PO-Token-Lage und dem Hinweis auf Cookies und eigene Argumente. .env.example kennt jetzt FFMPEG_PATH und YTDLP_PATH -- mit dem Hinweis, dass YTDLP_PATH=/bin/false der Weg ist, den Fehlerpfad zu pruefen. Beim letzten Durchlesen aufgefallen: `weiter()` holt den naechsten Titel aus der Liste, BEVOR `spielen()` laeuft. Scheitert der Beitritt in den Sprachkanal -- fehlendes Recht, voller Kanal, DAVE --, war der Eintrag weg. Genau im haeufigsten Fall: jemand reiht etwas ein, waehrend der Bot noch gar nicht im Kanal sitzt, der erste Beitritt ist der, der scheitern kann, und der Wunsch verschwindet wortlos. Jetzt wird er wieder ganz vorn eingereiht und der Fehler weitergereicht. Gegenprobe mit einem Kanal, dessen Beitritt garantiert wirft: drei Titel vorher, drei Titel nachher, "Erster" wieder an erster Stelle.
This commit is contained in:
+18
-4
@@ -51,7 +51,7 @@ import {
|
||||
import { moduleEnabled } from '../modules.js';
|
||||
import {
|
||||
listStations, getStation, radioState, radioStates, setRadioState, clearRadioState, setSetting,
|
||||
queueNext,
|
||||
queueNext, queueAdd, queueVor,
|
||||
} from '../db.js';
|
||||
import { senderGrundstock } from './radio-sender.js';
|
||||
import { tonstrom, ytdlpPruefen, ytdlpVorhanden } from './youtube.js';
|
||||
@@ -801,13 +801,27 @@ export async function weiter(client, guildId, { erzwungen = false, kanalId: star
|
||||
return null;
|
||||
}
|
||||
|
||||
await spielen(kanal, quelle);
|
||||
try {
|
||||
await spielen(kanal, quelle);
|
||||
} catch (error) {
|
||||
// Der Eintrag ist oben schon aus der Liste geholt worden. Kommt
|
||||
// die Sprachverbindung nicht zustande, waere er damit weg —
|
||||
// jemand reiht etwas ein, der Beitritt scheitert an einem Recht,
|
||||
// und der Wunsch ist verschwunden. Also zurück an dieselbe
|
||||
// Stelle: anhängen und nach vorn holen.
|
||||
if (naechster) {
|
||||
const neu = queueAdd(guildId, naechster);
|
||||
queueVor(guildId, neu);
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
const tafel = radioState(guildId);
|
||||
setRadioState({
|
||||
guildId,
|
||||
channelId: kanalId,
|
||||
stationId: laufend.get(guildId)?.heimStationId ?? null,
|
||||
panelChannelId: radioState(guildId)?.panel_channel_id,
|
||||
panelMessageId: radioState(guildId)?.panel_message_id,
|
||||
panelChannelId: tafel?.panel_channel_id,
|
||||
panelMessageId: tafel?.panel_message_id,
|
||||
});
|
||||
// Beim Rückfall auf den Sender steht sonst noch der letzte Liedtitel
|
||||
// in der Statuszeile und behauptet, er liefe.
|
||||
|
||||
Reference in New Issue
Block a user