/bug und /wunsch als Eingabefenster
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

Beide Befehle nahmen ihre Eingaben als Slash-Optionen entgegen. Das heißt:
eine Fehlerbeschreibung einzeilig in die Befehlszeile tippen, ohne
Umbrüche, ohne Absätze. Entsprechend dürftig fielen die Meldungen aus.

/bug öffnet jetzt ein Fenster mit vier Feldern: Titel, was ist passiert,
was war erwartet, wie kann man es nachstellen. Die letzten beiden sind
freiwillig und erzeugen im Issue nur dann eine Überschrift, wenn sie
ausgefüllt sind. /wunsch fragt die Idee und ein optionales „warum wäre das
gut?" ab — die Rückfrage macht aus einem Einzeiler einen Vorschlag, über
den man abstimmen kann.

Der Screenshot bleibt eine Option am Befehl, weil Discord in Fenstern
keine Dateien erlaubt. Er hängt damit an der Befehls-Interaktion, das
Formular kommt aber als eigene zurück — der Anhang wird deshalb kurz
zwischengeparkt und nach dem Absenden verwendet. Abgelaufene Einträge
räumt der nächste Aufruf mit weg, damit da nichts liegen bleibt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 16:53:04 +02:00
co-authored by Claude Fable 5
parent 197c2a1ada
commit 3549b06cef
4 changed files with 158 additions and 39 deletions
+15
View File
@@ -155,6 +155,21 @@ export async function startBot() {
return;
}
// Eingabefenster von /bug und /wunsch
if (interaction.isModalSubmit() && (interaction.customId === 'bugmodal' || interaction.customId === 'wunschmodal')) {
const handler = interaction.customId === 'bugmodal' ? bug.handleModal : wunsch.handleModal;
try {
await handler(interaction);
} catch (error) {
console.error(`[${interaction.customId}] Fehler:`, error);
const meldung = { content: '❌ Da ist etwas schiefgelaufen.', flags: MessageFlags.Ephemeral };
await (interaction.deferred || interaction.replied
? interaction.editReply(meldung.content)
: interaction.reply(meldung)).catch(() => {});
}
return;
}
// Bewerbungen: Button → Modal → Review-Entscheidung
try {
if (interaction.isButton() && interaction.customId.startsWith('apply:')) {