Config statt Setup: Bereiche gruppiert, Suche, Status als Einstieg
Die Seite hieß Setup und listete 15 Bereiche flach untereinander. Wer nicht wusste, dass Geburtstage unter „Community" stecken und Willkommens- Texte unter „Support", hat geklickt bis er es fand. Die Seitenleiste gruppiert jetzt nach Überblick, Auftritt, Inhalte, Community, Technik und Zugang. Darüber steht ein Suchfeld, das nicht nur Beschriftungen durchsucht, sondern auch Stichwörter je Bereich — „geburtstag" führt zu Community, „ticket" zu Support. Enter springt zum ersten Treffer. Der aktive Bereich steht in der Adresse (/settings#texte). Damit überlebt er das Neuladen, und man kann jemandem einen Link auf genau die Stelle schicken. Der Status-Bereich war die leerste Seite im ganzen Panel: sechs Zahlen. Er ist jetzt der Einstieg und beantwortet die Frage, die man beim Öffnen wirklich hat — was läuft noch nicht? Eingeschaltete Module, denen ein Kanal oder eine Rolle fehlt, stehen dort mit einem Knopf, der direkt an die richtige Stelle springt. Ist alles eingerichtet, sagt die Seite genau das. Umbenannt in „Config", weil „Setup" nach einmaliger Einrichtung klingt — die Seite ist aber der Ort, an dem man dauerhaft alles einstellt. Schmale Bildschirme: die Leiste wird zur umbrechenden Zeile ohne Gruppen-Überschriften, das Suchfeld nimmt die volle Breite. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -13,7 +13,7 @@ export async function execute(interaction) {
|
||||
|
||||
const channelId = screenshotChannelId();
|
||||
if (!channelId) {
|
||||
await interaction.editReply('❌ Erst auf der Setup-Seite einen Screenshot-Kanal wählen.');
|
||||
await interaction.editReply('❌ Erst auf der Config-Seite einen Screenshot-Kanal wählen.');
|
||||
return;
|
||||
}
|
||||
const channel = await interaction.client.channels.fetch(channelId);
|
||||
|
||||
@@ -14,7 +14,7 @@ export const data = new SlashCommandBuilder()
|
||||
export async function execute(interaction) {
|
||||
if (!playtesterRoleId()) {
|
||||
await interaction.reply({
|
||||
content: '❌ Erst auf der Setup-Seite eine Playtester-Rolle wählen.',
|
||||
content: '❌ Erst auf der Config-Seite eine Playtester-Rolle wählen.',
|
||||
flags: MessageFlags.Ephemeral,
|
||||
});
|
||||
return;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// /tag — gespeicherte Text-Bausteine abrufen (verwaltet über die Setup-Seite)
|
||||
// /tag — gespeicherte Text-Bausteine abrufen (verwaltet über die Config-Seite)
|
||||
import { SlashCommandBuilder, MessageFlags } from 'discord.js';
|
||||
import { getTag, listTags } from '../../db.js';
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ export const data = new SlashCommandBuilder()
|
||||
export async function execute(interaction) {
|
||||
if (!ticketChannelId()) {
|
||||
await interaction.reply({
|
||||
content: '❌ Erst auf der Setup-Seite einen Ticket-Kanal wählen.',
|
||||
content: '❌ Erst auf der Config-Seite einen Ticket-Kanal wählen.',
|
||||
flags: MessageFlags.Ephemeral,
|
||||
});
|
||||
return;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Release-Ankündigungen: großes Embed in den konfigurierten Kanal (Setup-Seite)
|
||||
// Release-Ankündigungen: großes Embed in den konfigurierten Kanal (Config-Seite)
|
||||
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } from 'discord.js';
|
||||
import { releaseChannelId, publicUrl, brandColor2, brandFooter } from '../runtime-settings.js';
|
||||
import { config } from '../config.js';
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// Watchdog: prüft konfigurierte URLs und schickt dem Admin eine DM bei Ausfall.
|
||||
// URLs kommen aus dem Setting watchdog_urls (Setup-Seite), leer = deaktiviert.
|
||||
// URLs kommen aus dem Setting watchdog_urls (Config-Seite), leer = deaktiviert.
|
||||
import { getSetting } from '../db.js';
|
||||
import { config } from '../config.js';
|
||||
import { moduleEnabled } from '../modules.js';
|
||||
|
||||
Reference in New Issue
Block a user