Bis fuenf Eintraege Knoepfe statt Auswahlmenue
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

Du hattest recht. Bei vier Anliegen ist ein Auswahlmenue der schlechtere Weg:
zwei Klicks statt einem, und die Moeglichkeiten sieht man erst nach dem
Aufklappen. Ein Knopf ist beides — sichtbar und sofort.

Umgekehrt gilt es nicht immer. Ab sechs wird die Knopfreihe zur Wand und
Discord bricht sie um; dann ist das Menue das ruhigere Bild. Also nicht
"Knoepfe statt Menue", sondern der Uebergang: bis fuenf Knoepfe, darueber
Menue. Fuenf, weil genau so viele in eine Reihe passen.

Betroffen waren nur zwei Stellen — Ticket-Anliegen und Wunsch-Bereiche. Alles
andere im Bot waren ohnehin schon Knoepfe.

Eine Sache verliert man dabei: die graue Beschreibungszeile, die ein Menue
unter jedem Eintrag anzeigt. Die steht jetzt im Text des Aufruf-Posts, und da
ist sie ehrlich gesagt besser aufgehoben — man liest sie, bevor man klickt,
statt danach.

Geprueft gegen discord.js selbst, weil Ueberlaengen und ungueltige Emojis sonst
erst beim Posten auffallen: null Eintraege (der eine alte Knopf), eins bis
fuenf (Knoepfe mit Emoji und der ID in der Kennung), sechs (zurueck zum Menue),
Murks-Emoji (faellt weg, Knopf bleibt), 200 Zeichen langer Name (auf 80
gekuerzt), und die Beschreibungszeile in allen drei Faellen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-02 09:14:59 +02:00
co-authored by Claude Opus 5
parent b3758f1f76
commit b6b767acb7
5 changed files with 68 additions and 13 deletions
+4 -2
View File
@@ -2,7 +2,7 @@
import { SlashCommandBuilder, PermissionFlagsBits, MessageFlags, EmbedBuilder } from 'discord.js';
import { ticketChannelId, brandColor, brandFooter } from '../../runtime-settings.js';
import { renderTemplate } from '../../templates.js';
import { ticketPanelComponents } from '../tickets.js';
import { ticketPanelComponents, anliegenListe } from '../tickets.js';
import { listTicketCategories } from '../../db.js';
export const data = new SlashCommandBuilder()
@@ -22,7 +22,9 @@ export async function execute(interaction) {
const embed = new EmbedBuilder()
.setColor(brandColor())
.setTitle(renderTemplate('ticket.panel_title'))
.setDescription(renderTemplate('ticket.panel_text'))
// Bei Knoepfen ist fuer die Kurzbeschreibungen kein Platz — dann
// stehen sie hier im Text, wo man sie ohnehin vorher liest
.setDescription(renderTemplate('ticket.panel_text') + anliegenListe())
.setFooter({ text: brandFooter('SUPPORT') });
// Ohne Anliegen ein Knopf, mit Anliegen ein Auswahlmenue