Discord Security bot

Discord Security bot

Na Discordu se opakuje jeden a tentýž scénář. Někomu ukradnou účet a ten během několika vteřin rozešle do všech kanálů hromadné zmínky a podvodné odkazy. Než si toho někdo z moderátorů všimne, má polovina serveru v oznámeních výzvu k vyzvednutí Nitra zdarma.

Nejhorší na tom je, že běžné ochrany na tohle nestačí. Většina z nich vychází z předpokladu, že podezřelý je nový účet. Jenže napadený účet bývá dva roky starý, má běžné role a na serveru normálně funguje – až do chvíle, kdy ho někdo cizí převezme.

Discord security bot je nástroj, který jsme kvůli tomu napsali pro vlastní komunitu Gamers Together. Sleduje výhradně chování – ne stáří účtu, ne délku členství, ne role. Běží na našem serveru od července 2026 a od té doby řeší tenhle problém sám. Dáváme ho volně k dispozici, i se zdrojovým kódem.

Běží u tebe, na tvém stroji. Žádný cloud, žádná databáze, žádná data odcházející třetí straně.


Jaký problém bot řeší

Napadený účet se pozná podle toho, co dělá, a dělá vždycky zhruba totéž. Bot cílí přesně na tyhle projevy:

  • Hromadné zmínky. Zpráva s @everyone, @here nebo desítkami označených lidí, rozeslaná do všeho, kam účet dosáhne.
  • Podvodné a phishingové odkazy. Falešné Discord Nitro zdarma, podvržené přihlašovací stránky Steamu, domény jako disc0rd nebo steamcommunlty, které se od pravých liší jedním znakem.
  • Nával zpráv. Několik zpráv za vteřinu napříč kanály, dřív než stihne zareagovat člověk.
  • Obrázkový spam. Tentýž obrázek nasypaný do víc kanálů naráz.

Ruční moderace na tohle nestačí z jednoho prostého důvodu: útok proběhne za pár vteřin a moderátor většinou zrovna nesedí u počítače. Když se to stane ve tři ráno, řeší se to až ráno – a to už mají odkaz rozklikaný desítky lidí.

Jak detekce funguje

Bot si pro každého uživatele drží klouzavé okno posledních zpráv, ve výchozím nastavení dlouhé deset vteřin. V tom okně vyhodnocuje čtyři nezávislé signály:

SignálCo to jeKdy se spustí
Hromadné zmínkyZpráva zmiňuje 5 a více uživatelů, nebo obsahuje @everyone či @hereAž se to stane 3× v okně
Podezřelý odkazOdkaz odpovídá známému vzoru podvodu nebo vede přes zkracovač. Volitelně se ověřuje i proti Google Safe BrowsingAž se objeví 3 takové odkazy
Nával zpráv5 a více zpráv během 10 vteřin, napříč kanályIhned po překročení
Obrázkový spamObrázek poslaný do 2 a více různých kanálůIhned po překročení

Dvě věci na tom stojí za zdůraznění, protože právě v nich se to liší od většiny anti-raid nástrojů.

Nehodnotí se, kdo uživatel je. Žádné stáří účtu, žádná délka členství, žádné role. Jen chování v posledních vteřinách. Přesně proto zabírá i na ukradený účet dlouholetého člena, který projde každou ochranou postavenou na „nový účet = podezřelý".

Prahy jsou opakované, ne jednorázové. Jeden podezřelý odkaz nespustí nic – musí jich být tři. Jedna zpráva s @everyone také ne. Tohle není teoretická opatrnost: první verze zasahovala hned při prvním výskytu a vedlo to k planým poplachům. Člověk, který jednou pošle zkrácený odkaz, není spammer.

Co bot udělá

Rozhoduje se podle toho, kolik signálů je v tu chvíli aktivních současně:

Aktivní signályZásah
2 a víceBan a smazání 7 dnů historie zpráv daného účtu
přesně 1Timeout na 24 hodin a smazání té zprávy
žádnýNic

Každý zásah bot zapíše do kanálu, který mu určíš – takže vždycky víš, koho a proč potrestal, a můžeš to vzít zpět.

Moderátoři a administrátoři jsou nedotknutelní. Kdokoliv má oprávnění Administrator, Ban Members nebo Moderate Members, je z kontroly úplně vyňatý. Bot na něj nesáhne za žádných okolností.


Stažení

Balík je zdarma pod licencí MIT – můžeš si ho upravit, používat i šířit dál, včetně komerčního použití. Obsahuje kompletní zdrojový kód, instalační skripty pro Windows i Linux, podrobný návod a sadu automatických testů.

Obě verze obsahují naprosto stejný kód. Liší se jen jazykem návodu a jazykem hlášek, které bot píše do kanálu se záznamy – a i ten si můžeš kdykoliv přepnout jedním řádkem v nastavení.

Pokud si chceš ověřit, že se soubor cestou nezměnil, tady jsou jeho kontrolní součty SHA-256:

discord-security-bot-cz.zip
d24ca9465a1b35665c8282693d0d835d490d227c1b8a2c63918e42c664da954c

discord-security-bot-en.zip
d283be540ef962ea4dfd5159dba4a7b02d4601d5792e0d9c0789a70fb6f2fe9a

Instalace krok za krokem

Programovat umět nemusíš. Celá instalace je spuštění jednoho skriptu a opsání dvou hodnot do textového souboru. Potřebuješ k tomu Python 3.10 nebo novější a práva správce na Discord serveru.

Krok 1: Založ si bota na Discordu

  1. Jdi na Discord Developer Portal a klikni na New Application. Pojmenuj ji, jak chceš.
  2. V levém menu vyber Bot.
  3. Klikni na Reset Token, potvrď a token si zkopíruj. Ukáže se jen jednou. Je to heslo k tvému botovi – nikomu ho neposílej.
  4. Sjeď níž k sekci Privileged Gateway Intents a zapni MESSAGE CONTENT INTENT. Ulož.

Poslední bod je nejdůležitější v celém návodu. Bez zapnutého Message Content Intent bot nevidí obsah zpráv, takže nepozná ani odkaz, ani zmínku. Nastartuje, bude vypadat, že běží, a nezachytí vůbec nic. Když ti později nic nefunguje, vrať se sem jako první.

Krok 2: Pozvi bota na server

  1. V levém menu vyber OAuth2 → URL Generator.
  2. V Scopes zaškrtni bot.
  3. V Bot Permissions zaškrtni: View Channels, Send Messages, Manage Messages, Ban Members a Timeout Members.
  4. Zkopíruj vygenerovanou adresu dole, otevři ji v prohlížeči a bota pozvi na svůj server.
  5. V Nastavení serveru → Role přetáhni roli bota výš, než jsou role členů, které má hlídat. Discord nikdy nedovolí zasáhnout proti někomu, kdo má roli výš. Tohle je druhá nejčastější příčina toho, že bot „nic nedělá".
  6. Založ si kanál pro záznamy o zásazích, například #mod-log, viditelný jen pro moderátory. Jeho ID zkopíruješ tak, že si v Discordu zapneš Nastavení → Pokročilé → Vývojářský režim a pak klikneš na kanál pravým tlačítkem a dáš Kopírovat ID.

Krok 3a: Instalace na Windows

Rozbal stažený ZIP do složky, kde ho chceš mít. Pak v ní klikni pravým tlačítkem na install.ps1 a zvol Spustit v PowerShellu. Když to Windows odmítne, otevři si ve složce PowerShell a napiš:

powershell -ExecutionPolicy Bypass -File install.ps1

Skript ověří Python, připraví prostředí, nainstaluje potřebné balíčky a vytvoří soubor .env. Ten otevři v poznámkovém bloku a doplň dvě hodnoty – token z prvního kroku a ID kanálu z druhého. Pak bota spusť:

.\venv\Scripts\python.exe bot.py

Až se objeví Přihlášen jako …, bot běží. Hlídá, dokud okno nezavřeš.

Krok 3b: Instalace na Linuxu

unzip discord-security-bot-cz.zip
cd discord-security-bot
chmod +x install.sh
./install.sh
nano .env
./venv/bin/python bot.py

Nepřetržitý běh

Na domácím počítači bot hlídá jen tehdy, když ho máš zapnutý. Aby chránil server nepřetržitě, potřebuje stroj, který běží pořád – nejlevnější VPS za pár desítek korun měsíčně bohatě stačí, bot má minimální nároky.

V balíku je připravená šablona systemd jednotky. Stačí v ní nahradit dvě zástupné hodnoty, zkopírovat ji na místo a spustit:

sudo cp discord-security-bot.service.template /etc/systemd/system/discord-security-bot.service
sudo systemctl daemon-reload
sudo systemctl enable --now discord-security-bot

Bot se pak sám spustí po restartu serveru a sám naskočí, kdyby spadl. Podrobný postup je popsaný v souboru README.md uvnitř balíku.


Nastavení

Všechno se nastavuje v jediném textovém souboru .env. Po každé změně bota restartuj.

ProměnnáVýchozíK čemu je
DISCORD_TOKENPovinné. Token bota z Developer Portalu.
MOD_LOG_CHANNEL_IDPovinné. Kanál, kam bot píše o svých zásazích. Prázdné = bot zasahuje, ale mlčí.
GUILD_IDprázdnéOmezí bota na jediný server. Prázdné = hlídá všude, kam je pozvaný.
GOOGLE_SAFE_BROWSING_API_KEYprázdnéZapne druhé kolo kontroly odkazů proti databázi Googlu.
BOT_LANGUAGEcsJazyk hlášek bota: cs nebo en.
MENTION_THRESHOLD5Kolik zmíněných uživatelů v jedné zprávě je hromadná zmínka.
MENTION_REPEAT_THRESHOLD3Kolikrát se hromadná zmínka musí objevit v okně, aby to byl signál.
LINK_THRESHOLD3Kolik podezřelých odkazů v okně je signál.
BURST_COUNT5Kolik zpráv v okně je nával.
BURST_WINDOW_SECONDS10Délka sledovaného okna ve vteřinách.
TIMEOUT_HOURS24Délka umlčení při jednom signálu.
BAN_PURGE_DAYS7Kolik dnů historie se smaže při banu.

Než začneš snižovat prahy, zvaž tohle: čím jsou nižší, tím víc nevinných lidí bot potrestá. Výchozí hodnoty vznikly na ostrém provozu a jsou schválně nastavené tak, aby radši propustily hraniční případ, než aby zabanovaly někoho, kdo se jen rozohnil v diskusi.


FAQ

Zabanuje bot omylem normálního člověka?

Je to postavené tak, aby se to stávalo co nejméně. K banu musí být současně aktivní dva různé signály a každý z nich má vlastní opakovaný práh – jeden zkrácený odkaz ani jedna zpráva s @everyone nespustí vůbec nic. Moderátoři a administrátoři jsou z kontroly úplně vyňatí. Přesto doporučujeme bota nejdřív pár dní pozorovat v kanálu se záznamy, než mu začneš věřit naslepo.

Musím umět programovat?

Ne. Instalační skript udělá technickou část za tebe a ty pak jen do textového souboru opíšeš dvě hodnoty – token bota a ID kanálu. Jestli si troufneš nainstalovat program a otevřít poznámkový blok, zvládneš to.

Je to zdarma?

Ano, celé, pod licencí MIT – včetně komerčního použití. Nic se nikde neplatí ani neodemyká. Jediný případný náklad je pronájem serveru, pokud chceš, aby bot běžel nepřetržitě, a to jde pořídit za pár desítek korun měsíčně.

Funguje to, i když mám vypnutý počítač?

Ne. Bot hlídá jen tehdy, když běží. Na domácím počítači tedy chrání server jen po dobu, co ho máš zapnutý. Pro nepřetržitou ochranu ho nasaď na VPS pomocí přiložené systemd šablony – pak běží pořád a po restartu serveru naskočí sám.

Sbírá bot nějaká data o členech?

Ne. Drží si pouze klouzavé okno posledních vteřin v operační paměti, aby poznal nával. Žádná databáze se nevede, nic se neukládá na disk a nic neodchází mimo tvůj stroj. Restart bota vyprázdní úplně všechno. Zdrojový kód je součástí balíku, takže si to můžeš ověřit.

Jak zabránit spamu na Discordu i bez bota?

Základ zvládne samotný Discord a stojí za to ho mít nastavený tak jako tak: zvedni úroveň ověření v Nastavení serveru → Moderace alespoň na střední, zapni si vestavěný AutoMod, neděl právo posílat odkazy úplně novým členům, vypni přímé zprávy od členů serveru a vynuť dvoufázové ověření pro moderátory. Tohle všechno ale míří na nové a neověřené účty. Proti ukradenému účtu dlouholetého člena, který má ověření dávno za sebou, nepomůže nic z toho – a přesně tuhle mezeru bot zaplňuje.

Čím se liší od Wicka, MEE6 nebo Dyna?

Hlavně tím, kde běží. Velké boty běží na cizí infrastruktuře a zprávy z tvého serveru putují na servery jejich provozovatele. Tenhle běží u tebe, kód si můžeš přečíst a data nikam neodcházejí. Za to platíš tím, že nemá webové rozhraní a nastavuje se v textovém souboru, a taky tím, že dělá jedinou věc – nemá hudbu, úrovně ani uvítací zprávy. Vedle většího bota může klidně běžet zároveň, nijak si nepřekáží.

Co když bot zabanuje někoho, koho neměl?

Ban zrušíš v Nastavení serveru → Zákazy, timeout pravým tlačítkem na člena a Zrušit umlčení. Smazané zprávy se vrátit nedají. Když se to stane opakovaně, zvyš si prahy v souboru .env – a pokud si nejsi jistý, začni tím, že necháš bota jen zapisovat do kanálu se záznamy a chvíli ho budeš sledovat.


Než to nasadíš

Software je poskytován „jak stojí a leží", bez jakékoliv záruky a bez podpory. Dáváme k dispozici kód a návod, neprovozujeme ho za tebe a neodpovídáme za škodu, která jeho použitím vznikne.

Ber vážně, co botovi dovoluješ: banovat členy a mazat zprávy. Proto doporučujeme tři věci:

  1. Vyzkoušej si ho nejdřív na prázdném testovacím serveru, který si založíš jen k tomu.
  2. Ověř si, že tvoji moderátoři mají některé z oprávnění Administrator, Ban Members nebo Moderate Members – jinak nejsou z kontroly vyňatí.
  3. Nech ho pár dní běžet a čti kanál se záznamy, než mu začneš věřit naslepo.

A poslední věc: token svého bota nikdy nikomu neposílej a nedávej ho do žádného veřejného repozitáře. Kdo ho má, ovládá bota – se všemi právy, která jsi mu dal.

Diskuze

Přihlas se a za schválené komentáře ti připíšeme body do věrnostního obchodu.

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Nákupní košík
Přejít nahoru