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,@herenebo 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
disc0rdnebosteamcommunlty, 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ál | Co to je | Kdy se spustí |
|---|---|---|
| Hromadné zmínky | Zpráva zmiňuje 5 a více uživatelů, nebo obsahuje @everyone či @here | Až se to stane 3× v okně |
| Podezřelý odkaz | Odkaz odpovídá známému vzoru podvodu nebo vede přes zkracovač. Volitelně se ověřuje i proti Google Safe Browsing | Až se objeví 3 takové odkazy |
| Nával zpráv | 5 a více zpráv během 10 vteřin, napříč kanály | Ihned po překročení |
| Obrázkový spam | Obrá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ály | Zásah |
|---|---|
| 2 a více | Ban a smazání 7 dnů historie zpráv daného účtu |
| přesně 1 | Timeout 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
- Jdi na Discord Developer Portal a klikni na New Application. Pojmenuj ji, jak chceš.
- V levém menu vyber Bot.
- 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.
- 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
- V levém menu vyber OAuth2 → URL Generator.
- V Scopes zaškrtni bot.
- V Bot Permissions zaškrtni: View Channels, Send Messages, Manage Messages, Ban Members a Timeout Members.
- Zkopíruj vygenerovanou adresu dole, otevři ji v prohlížeči a bota pozvi na svůj server.
- 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á".
- 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_TOKEN | – | Povinné. Token bota z Developer Portalu. |
MOD_LOG_CHANNEL_ID | – | Povinné. Kanál, kam bot píše o svých zásazích. Prázdné = bot zasahuje, ale mlčí. |
GUILD_ID | prázdné | Omezí bota na jediný server. Prázdné = hlídá všude, kam je pozvaný. |
GOOGLE_SAFE_BROWSING_API_KEY | prázdné | Zapne druhé kolo kontroly odkazů proti databázi Googlu. |
BOT_LANGUAGE | cs | Jazyk hlášek bota: cs nebo en. |
MENTION_THRESHOLD | 5 | Kolik zmíněných uživatelů v jedné zprávě je hromadná zmínka. |
MENTION_REPEAT_THRESHOLD | 3 | Kolikrát se hromadná zmínka musí objevit v okně, aby to byl signál. |
LINK_THRESHOLD | 3 | Kolik podezřelých odkazů v okně je signál. |
BURST_COUNT | 5 | Kolik zpráv v okně je nával. |
BURST_WINDOW_SECONDS | 10 | Délka sledovaného okna ve vteřinách. |
TIMEOUT_HOURS | 24 | Délka umlčení při jednom signálu. |
BAN_PURGE_DAYS | 7 | Kolik 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
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.
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.
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ě.
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.
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.
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.
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áží.
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:
- Vyzkoušej si ho nejdřív na prázdném testovacím serveru, který si založíš jen k tomu.
- 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í.
- 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.

