Moderation & Kontakt + Game-Server-Monitor

- Modmail: DMs an den Bot landen als Threads im privaten Staff-Kanal,
  Thread-Antworten gehen als DM zurück (Zustell-Feedback per Reaktion)
- Willkommens-Embed für neue Member (GuildMemberAdd; Server-Members-Intent nötig)
- Mod-Log: gelöschte/bearbeitete User-Nachrichten in privaten Log-Kanal
- Server-Monitor: FiveM-kompatible Endpoints (/dynamic.json) alle 2 min,
  persistentes Status-Embed (edit in place) + Spielerzahl als Bot-Presence
- Neue Intents: DirectMessages, GuildMembers; Partials.Channel
- Setup-Seite: Sektionen // Moderation & Kontakt und // Game-Server

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 13:14:18 +02:00
co-authored by Claude Opus 4.8
parent a3c47656c5
commit 075ea36bd2
9 changed files with 402 additions and 5 deletions
+8 -2
View File
@@ -4,6 +4,7 @@ import { config } from '../config.js';
import { devlogChannelId, devlogPingRoleId, playtesterRoleId } from '../runtime-settings.js';
import { archiveDevlogMessage, removeDevlog } from './devlog-archive.js';
import { registerCommunityListeners } from './community.js';
import { registerModTools } from './mod-tools.js';
import { addPlaytester, removePlaytester } from '../db.js';
import * as ping from './commands/ping.js';
import * as devlogBackfill from './commands/devlog-backfill.js';
@@ -24,9 +25,13 @@ export async function startBot() {
GatewayIntentBits.MessageContent,
// Für das Starboard (⭐-Reaktionen)
GatewayIntentBits.GuildMessageReactions,
// Für Modmail (DMs) — Willkommens-Embeds brauchen zusätzlich den
// privilegierten "Server Members Intent" im Developer Portal!
GatewayIntentBits.DirectMessages,
GatewayIntentBits.GuildMembers,
],
// Partials, damit Delete/Reaction-Events auch für ungecachte Nachrichten feuern
partials: [Partials.Message, Partials.Reaction],
// Partials: Delete/Reaction-Events für ungecachte Nachrichten + DM-Kanäle
partials: [Partials.Message, Partials.Reaction, Partials.Channel],
});
// Commands in Collection ablegen für schnellen Zugriff im Interaction-Handler
@@ -145,6 +150,7 @@ export async function startBot() {
});
registerCommunityListeners(client);
registerModTools(client);
await client.login(config.discordToken);
return client;