aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Discord-Bots

Discord Anti Raid: Schutz vor Massen-Beitritten und Spam

Der unbeliebteste Moment für einen wachsenden Discord-Server ist, wenn innerhalb von Minuten Dutzende Fake-Accounts hereinströmen und die Kanäle unter Einladungslinks und Beleidigungen begraben. Ein gut gebautes discord anti raid-System ist genau das, was dies stoppt: Es erkennt Massen-Beitritte, Link-Spam und koordinierte Angriffe in Sekunden, ohne auf einen Menschen zu warten. In diesem Leitfaden bauen wir ein mehrschichtiges Anti-Raid-Setup von Grund auf mit discord.js v14 — vom Account-Alter-Filter bis zum automatischen Lockdown-Modus.

Wie sieht ein Raid aus? (Bedrohungsmodell)

Bevor du Abwehrmechanismen schreibst, mach dir klar, wogegen du dich verteidigst. Ein typischer Raid trägt mindestens eines von drei Signalen:

  • Eine Beitrittswelle: eine große Zahl von Accounts, die in Sekunden dem Server beitreten.
  • Neue/Schablonen-Accounts: Nutzer, die vor wenigen Stunden erstellt wurden, ohne Avatar, mit gemeinsamem Namensmuster.
  • Inhalts-Spam: derselbe Einladungslink (discord.gg/...) oder eine schädliche URL, die in die Kanäle strömt.

Eine gute Abwehr überwacht diese drei Signale getrennt und verschärft sich, wenn sie sich häufen. Sich auf eine einzige Regel zu verlassen, ist ein Fehler: Schaust du nur auf das Account-Alter, bestrafst du echte Neulinge; schaust du nur auf Nachrichten-Spam, ist die Welle schon drin.

Erforderliche Intents und Berechtigungen

Ein Anti-Raid-Bot muss sowohl Beitritts-Events als auch Nachrichteninhalte sehen. Aktiviere im Discord Developer Portal die privilegierten Intents Server Members Intent und Message Content Intent und gewähre der Rolle des Bots die Berechtigungen Kick Members, Ban Members und Moderate Members.

const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMembers,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
  ],
});

Die Rolle des Bots muss über den Rollen der Mitglieder stehen, die er moderieren wird; andernfalls schlagen Kick- und Ban-Aufrufe stillschweigend fehl.

Erste Schicht: der Account-Alter-Filter

Die meisten Raid-Bots sind frisch in Masse produzierte Accounts. Sieh dir im guildMemberAdd-Event den Erstellungszeitpunkt des Accounts an und behandle automatisch alle, die unter einem gewählten Schwellenwert liegen. Halte den Schwellenwert vernünftig — ein zu aggressiver Wert weist echte neue Nutzer an der Tür ab.

const MIN_ACCOUNT_AGE = 7 * 24 * 60 * 60 * 1000; // 7 Tage

client.on('guildMemberAdd', async (member) => {
  const age = Date.now() - member.user.createdTimestamp;
  if (age < MIN_ACCOUNT_AGE) {
    await member.kick('Account zu neu (anti-raid)').catch(() => {});
  }
});

Einen Kick einem automatischen Bann vorzuziehen ist sicherer: Bei einem Fehlalarm kann der Nutzer einfach wieder beitreten. Für einen sanfteren Ansatz weist du neue Mitglieder, statt sie zu kicken, einer "Quarantäne"-Rolle zu und überlässt sie der manuellen Freigabe.

Zweite Schicht: die Beitrittswelle abfangen

Hier lebt die eigentliche discord anti raid-Logik: Selbst wenn einzelne Accounts normal aussehen, ist ein Schwall von Beitritten in einem kurzen Fenster der Raid. Miss die Beitrittsrate mit einem gleitenden Fenster und sperre den Server automatisch, sobald der Schwellenwert überschritten wird. Das Anheben von Discords Verifizierungsstufe ist der schnellste Lockdown — es hindert neue Accounts sofort am Posten.

const { GuildVerificationLevel } = require('discord.js');

const joins = [];
const WINDOW = 10_000;   // 10 Sekunden
const THRESHOLD = 5;     // 5+ Beitritte in 10s = Raid

client.on('guildMemberAdd', async (member) => {
  const now = Date.now();
  joins.push(now);
  while (joins.length && now - joins[0] > WINDOW) joins.shift();

  if (joins.length >= THRESHOLD) {
    await member.guild.setVerificationLevel(
      GuildVerificationLevel.High,
      'Anti-raid: ploetzliche Beitrittswelle',
    ).catch(() => {});
    // Moderatoren benachrichtigen, Kanaele sperren, usw.
  }
});

Du kannst einen Timer setzen, um den Lockdown automatisch aufzuheben (z. B. nach 10 Minuten zurücksetzen), aber bei ernsten Angriffen ist es sicherer, wenn Moderatoren ihn manuell aufheben. Kalibriere die Schwellenwerte auf die normale Beitrittsrate deines Servers: Fünf Beitritte in zehn Sekunden sind in einer kleinen Community eine klare Anomalie, in einer großen aber völlig normal.

Dritte Schicht: Link- und Einladungs-Spam stoppen

Selbst wenn Accounts durchrutschen, kommt der eigentliche Schaden in Nachrichten: Werbe-Einladungen und schädliche Links. Fange im messageCreate-Event Einladungslinks mit einer einfachen Regex ab, lösche die Nachricht und versetze den Absender vorübergehend in einen Timeout.

const inviteRegex = /(discord\.gg|discord(?:app)?\.com\/invite)\/\w+/i;

client.on('messageCreate', async (message) => {
  if (message.author.bot || !message.inGuild()) return;

  if (inviteRegex.test(message.content)) {
    await message.delete().catch(() => {});
    await message.member.timeout(10 * 60 * 1000, 'Einladungs-Spam').catch(() => {});
  }
});

Wende denselben Ansatz auf die Nachrichtenrate an: Wenn ein Nutzer 5+ Nachrichten in 5 Sekunden sendet, ist das ebenfalls ein Spam-Signal. Halte die jüngsten Nachrichten-Zeitstempel jedes Nutzers in einer Map und wende einen Timeout an, wenn der Schwellenwert überschritten wird. Vergiss nicht, vertrauenswürdige Rollen auf eine Whitelist zu setzen — Moderatoren, die von deinem eigenen Bot stummgeschaltet werden, sind eine unerwünschte Komödie.

Discords eingebaute Waffen: AutoMod und Verifizierung

Du musst nicht die gesamte Last dem Bot aufbürden. Discords AutoMod erlaubt es, Schlüsselwort-, Spam- und Einladungssperr-Regeln aus den Servereinstellungen (oder der API) ohne Code zu definieren; diese Regeln laufen, bevor eine Nachricht gesendet wird, sodass Spam blockiert wird, noch bevor dein Bot das Event sieht. Ergänze es mit diesen eingebauten Einstellungen:

  • Verifizierungsstufe: Mindestens "Medium" (5+ Minuten Mitgliedschaft) filtert die meisten Raid-Bots automatisch.
  • Regel-Screening (Rules Screening): Zwingt neue Mitglieder, die Regeln zu akzeptieren, und siebt einfache Bots aus.
  • Mitgliedschafts-Screening / Türsteher-Bot: Eine Verifizierungsrolle per Klick verlangsamt automatisierte Accounts.

Das robusteste Setup ist mehrschichtig: AutoMod und die eingebaute Verifizierung sind das erste Sieb, während dein eigener Bot die Signale ergänzt, die Discord allein nicht überwacht, etwa Beitrittsrate und Account-Alter.

Häufige Fragen

Auto-Bann, Kick oder eine Quarantäne-Rolle?

Das hängt vom Kontext ab. Ein dauerhafter Bann passt nur zu eindeutigen Angriffen; angesichts des Fehlalarm-Risikos ist ein Kick nachsichtiger. Die flexibelste Methode ist eine Quarantäne-Rolle: Sie isoliert den Verdächtigen von jedem Kanal, behält ihn aber drinnen, sodass ein Moderator die endgültige Entscheidung trifft.

Wie stelle ich sicher, dass ich echte neue Mitglieder nicht fälschlich bestrafe?

Kalibriere die Schwellenwerte auf den normalen Verkehr deines eigenen Servers und protokolliere jede automatische Aktion in einem Log-Kanal. Die Logs ein paar Wochen zu beobachten, Fehlalarme zu erkennen und dann die Werte anzupassen, ist der sicherste Weg, die richtige Balance zu finden. Im Zweifel ziehe einen Timeout oder eine Quarantäne einem direkten Bann vor.

Wenn ich AutoMod habe, warum brauche ich einen separaten Bot?

AutoMod ist hervorragend bei Nachrichteninhalten, misst aber keine Beitrittsrate, schaut nicht auf das Account-Alter und sperrt während einer Welle nicht automatisch. Ein eigener Bot füllt genau diese Lücken; zusammen verwendet ist die Abwehr deutlich stärker.

Willst du ein mehrschichtiges Anti-Raid-System für deinen Server? Planen wir gemeinsam ein Setup mit Account-Alter-Filter, automatischem Lockdown, Link/Spam-Schutz und Log-Panel — kontaktiere mich.

Bu kategorideki tüm yazılar →

Devamı için