Radio: den Beitritt in drei Schritte zerlegen statt "signalling" zu melden
Deploy / check (push) Canceled after 0s
Deploy / deploy (push) Canceled after 0s

"signalling" sagt nur, dass etwas fehlt, nicht was. Ein Beitritt zum
Sprachkanal ist ein Dreischritt:

  1. Der Bot bittet Discord ueber die bestehende Verbindung um den Beitritt.
  2. Discord antwortet mit dem eigenen Sprachstatus (darin die Sitzungs-ID).
  3. Discord nennt den Sprachserver.

Der Adapter zwischen Verbindung und Sprachbibliothek haelt jetzt fest,
welcher davon stattgefunden hat. Aus den drei Haekchen wird ein Satz, der
sagt, was zu tun ist — fehlende Berechtigung, fehlender Intent, oder ein
Netz, das UDP nicht rauslaesst. Fuenf Faelle, fuenf verschiedene Antworten;
der Test besteht darauf, dass keine zwei gleich lauten.

Dazu eine Pruefung vorweg, die genau dasselbe Bild erzeugt haette: ein
voller Sprachkanal. Discord nimmt die Anfrage entgegen und antwortet dann
einfach nicht mehr — das sieht aus wie ein Rechteproblem. Wer Mitglieder
verschieben darf, kommt am Limit vorbei, sonst nicht.

Nachgesehen und ausgeschlossen: discord.js 14.27 verdrahtet beide
Sprachereignisse (VOICE_STATE_UPDATE ueber die Action, VOICE_SERVER_UPDATE
ueber den Handler), und GuildVoiceStates steht in den Intents.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-14 12:09:59 +02:00
co-authored by Claude Opus 5
parent e246dadbec
commit bbb56e1276
2 changed files with 83 additions and 7 deletions
+11
View File
@@ -51,6 +51,17 @@ export async function execute(interaction) {
});
return;
}
// Ein voller Kanal sieht aus wie ein Rechteproblem: Discord nimmt die
// Beitrittsanfrage entgegen und antwortet einfach nicht mehr. Nur wer
// Mitglieder verschieben darf, kommt am Limit vorbei.
if (kanal.userLimit > 0 && kanal.members.size >= kanal.userLimit && !rechte.has('MoveMembers')) {
await interaction.reply({
content: `❌ <#${kanal.id}> ist voll (${kanal.members.size}/${kanal.userLimit}). `
+ 'Entweder Platz machen oder mir das Recht **Mitglieder verschieben** geben.',
flags: MessageFlags.Ephemeral,
});
return;
}
}
// Ohne ffmpeg wuerde der Bot sich hinsetzen und schweigen. Lieber gleich