- Moderation: /warn (DM + Mod-Log), /warns (Historie + löschen), /timeout (max 28d), /purge (bulk, 14-Tage-Limit sauber gemeldet); Mod-Log erweitert um Join/Leave und Nick-/Rollen-Änderungen - Auto-Rolle bei Join + Sticky-Roles (Rollen bei Leave gesichert, bei Rejoin wiederhergestellt; managed/@everyone ausgenommen) — Rollen-Tab - Level-System (opt-in): 15-25 XP/Nachricht mit 60s-Cooldown, MEE6-Formel, Level-Up-Announce, Rollen-Belohnungen (Level=RolleID), /rank mit Fortschritt, öffentliche Bestenliste /level; Community-Tab - Tags: /tag mit Autocomplete, Verwaltung im Composer-Tab (/api/tags) - Geplante Posts: einmalig/täglich/wöchentlich, Minuten-Scheduler, DST-sicher über Neuberechnung aus Zeitfeldern; Composer-Tab (/api/scheduled) - Autocomplete-Dispatch im InteractionCreate; alles smoke-getestet Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
28 lines
988 B
JavaScript
28 lines
988 B
JavaScript
// Einstiegspunkt — startet Discord-Bot, Webserver und den Wochen-Rückblick-Scheduler
|
|
import { startBot } from './bot/client.js';
|
|
import { startWebServer } from './web/server.js';
|
|
import { scheduleWeeklyRecap } from './bot/weekly-recap.js';
|
|
import { startWatchdog } from './bot/watchdog.js';
|
|
import { scheduleBackups } from './backup.js';
|
|
import { startServerMonitor } from './bot/server-monitor.js';
|
|
import { startGiveaways } from './bot/giveaways.js';
|
|
import { startScheduledPosts } from './web/scheduled-posts.js';
|
|
|
|
process.on('unhandledRejection', (error) => {
|
|
console.error('[main] Unhandled Rejection:', error);
|
|
});
|
|
|
|
try {
|
|
const client = await startBot();
|
|
await startWebServer(client);
|
|
scheduleWeeklyRecap(client);
|
|
startWatchdog(client);
|
|
scheduleBackups(client);
|
|
startServerMonitor(client);
|
|
startGiveaways(client);
|
|
startScheduledPosts(client);
|
|
} catch (error) {
|
|
console.error('[main] Start fehlgeschlagen:', error);
|
|
process.exit(1);
|
|
}
|