Foren waehlbar, Emoji-Tafel repariert, Balken sagt seit wann er misst
Drei Dinge, die beim Ausprobieren aufgefallen sind. ## Foren standen nicht zur Auswahl Ein Forum-Kanal ist fuer discord.js nicht "textBased" — er hat keine Nachrichten, nur Beitraege. Die Kanal-Liste im Panel hat genau danach gefiltert, also tauchte das Forum nirgends auf, und beim Speichern haette dieselbe Pruefung es abgelehnt. Beides kennt jetzt Foren und Medien-Kanaele; in der Auswahl stehen sie mit 📋 statt # und dem Hinweis "Forum". Das erklaert auch das "Unknown Channel" beim Testen: eingestellt war noch der alte Kanal, und der neue liess sich gar nicht erst waehlen. ## Emoji-Tafel landete in der Nachbarspalte Die Config laeuft ab genug Breite zweispaltig — CSS `columns: 2`. In einem Mehrspalten-Layout zerreisst es absolut positionierte Kaesten: die Tafel wurde fragmentiert und ihr Inhalt in der anderen Spalte gezeichnet, waehrend beim Feld nur der leere Rahmen stehen blieb. Genau so sah es auch aus. Die Tafel haengt jetzt an <body> und wird per JS an den Knopf gerechnet, wie der Dialog auch. Sie klappt nach oben, wenn unten kein Platz ist, wandert beim Scrollen mit und bleibt beim Fenstergroesse-Aendern an ihrem Feld. ## Balken sagt jetzt, seit wann er misst Die Waechter-Balken sahen leer aus. Sind sie nicht: 545 Messpunkte, alle gruen — aber eben nur von heute, weil die Dienste gestern angelegt wurden. Sechs von sieben Tagen sind zu Recht grau, das sieht nur aus wie kaputt. Steht links jetzt "misst seit 01.08." statt stur "vor 7 Tagen", sobald die erste Messung deutlich spaeter liegt als der Anfang des Fensters. Bei vollem Verlauf bleibt es bei "vor 7 Tagen". Geprueft im Browser: Tafel an <body> und `position: fixed`, richtig positioniert und nach oben geklappt, alle sieben Gruppen und 127 Symbole in einem Stueck; Forum in der Auswahlliste mit Kennzeichnung; beide Beschriftungen des Balkens (angebrochener und voller Verlauf). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+15
-4
@@ -1,5 +1,5 @@
|
||||
// REST-API fürs Webinterface: Devlogs öffentlich, Commits + Settings nur für den Admin
|
||||
import { EmbedBuilder } from 'discord.js';
|
||||
import { ChannelType, EmbedBuilder } from 'discord.js';
|
||||
import {
|
||||
listDevlogs, listDevlogsByProject, devlogHeads,
|
||||
searchDevlogs, getDevlog, listCommits, listReleases, archiveStats,
|
||||
@@ -833,12 +833,23 @@ ${rssItems}
|
||||
// --- Settings (Admin) ---
|
||||
|
||||
/** Alle Textkanäle, die der Bot sehen kann (für die Dropdowns) */
|
||||
// Ein Forum ist nicht „textBased" — es hat keine Nachrichten, nur Beitraege.
|
||||
// Fuers Voting ist es trotzdem ein gueltiges Ziel, also muss es hier
|
||||
// auftauchen; sonst steht es schlicht nicht zur Auswahl.
|
||||
const FORUM_TYPEN = new Set([ChannelType.GuildForum, ChannelType.GuildMedia]);
|
||||
const istWaehlbar = (ch) => ch.isTextBased?.() || FORUM_TYPEN.has(ch.type);
|
||||
|
||||
function listChannels() {
|
||||
const channels = [];
|
||||
for (const guild of client.guilds.cache.values()) {
|
||||
for (const ch of guild.channels.cache.values()) {
|
||||
if (ch.isTextBased?.() && ch.viewable !== false) {
|
||||
channels.push({ id: ch.id, name: ch.name, guild: guild.name });
|
||||
if (istWaehlbar(ch) && ch.viewable !== false) {
|
||||
channels.push({
|
||||
id: ch.id,
|
||||
name: ch.name,
|
||||
guild: guild.name,
|
||||
forum: FORUM_TYPEN.has(ch.type),
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1010,7 +1021,7 @@ ${rssItems}
|
||||
continue;
|
||||
}
|
||||
const ch = client.channels.cache.get(value);
|
||||
if (!ch?.isTextBased?.()) {
|
||||
if (!ch || !istWaehlbar(ch)) {
|
||||
return reply.code(400).send({ error: `${key}: Kanal nicht gefunden` });
|
||||
}
|
||||
setSetting(key, value);
|
||||
|
||||
Reference in New Issue
Block a user