docs: README und .env.example auf den Stand -- und Embeds im Stil des Bots

DIE README BESCHRIEB NOCH DEN VORGAENGER: "Fivemanage Lite mit MySQL und
MinIO", Ausprobieren ueber docker-compose.local.yml, vier Geheimnisse, davon
drei fuer Dienste, die es nicht mehr gibt. Jetzt beschreibt sie, was da ist:
ein Container, SQLite, Dateien auf einer Platte -- Starten, was der Dienst
kann, die eine Regel und wie sie im Code durchgesetzt wird, Betrieb (Sicherung,
Wiki, Zurueckspielen), was bewusst fehlt, und die zwei Dinge, die Zeit gekostet
haben.

Und die .env.example nannte DB_PASSWORD, MINIO_ROOT_PASSWORD und
API_TOKEN_HMAC_SECRET -- drei Werte fuer Dienste, die seit Wochen weg sind, und
KEINEN der acht, die das Compose wirklich liest. Nachgezaehlt: jetzt sind alle
acht genannt, zwei als Pflicht, sechs als Optional mit dem Grund dahinter.

EMBEDS IM STIL DES BOTS. Auf den Hinweis hin in d4rkbot/src/embeds.js
nachgesehen: dort gibt es eine zentrale Embed-Fabrik mit Markenfarbe
(#f5c518), Fusszeile "D4RKST3R // <TAG>" und Zeitstempel. Zwei Dienste
desselben Hauses sollen in einem Kanal nicht wie zwei Fremde aussehen -- also
uebernommen statt neu erfunden, samt Feldern statt Fliesstext und Discords
Zeitmarken (<t:...:R>), die "vor 3 Stunden" in der Zeitzone des Lesers
anzeigen.

EINE ABWEICHUNG, mit Absicht: der Bot faerbt alles in der Markenfarbe, hier
faerbt die SCHWERE. Eine Warnung, die aussieht wie jede andere Nachricht, ist
eine Warnung, die man ueberliest -- und diese Meldungen gibt es nur, weil
jemand sie sehen soll.

Die Testnachricht schickt jetzt echte Zahlen mit. So sieht man nicht nur, DASS
etwas ankommt, sondern auch, ob es lesbar ist.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 20:38:36 +02:00
co-authored by Claude Opus 5
parent c9cd8eaa84
commit 51071fc292
4 changed files with 327 additions and 220 deletions
+7 -5
View File
@@ -46,7 +46,7 @@ import {
type Vorlage,
} from '../settings.js'
import { discordRoutes, redirectUri } from './discord.js'
import { MELDUNG_KEYS, melde, meldungConfig } from '../meldung.js'
import { MELDUNG_KEYS, meldungConfig, testMeldung } from '../meldung.js'
import {
absolutePath,
checkPath,
@@ -1526,10 +1526,12 @@ dashRoutes.delete('/tokens/:id', (c) => {
* Ein Webhook, den man eintraegt und erst in drei Wochen im Fehlerfall
* ausprobiert, ist ein Webhook, der dann nicht funktioniert. */
dashRoutes.post('/maintenance/melden', async (c) => {
const ok = await melde(
`✅ Testnachricht von d4rk_media — ausgelöst von **${c.get('user').username}**.`,
{ farbe: 0x3fb950 },
)
// Mit echten Zahlen statt "Hallo Welt": so sieht man nicht nur, DASS etwas
// ankommt, sondern auch, ob es lesbar ist.
const b = db
.prepare('SELECT COUNT(*) AS files, COALESCE(SUM(size),0) AS bytes FROM media')
.get() as { files: number; bytes: number }
const ok = await testMeldung(c.get('user').username, b)
if (!ok) {
return c.json(
{ error: 'Nichts geschickt. Ist ein Webhook eingetragen, und stimmt die Adresse?' },