Wiki · Integrace

Discord — server a bot

Když Discord bot zůstane offline, téměř vždy chybí Message Content Intent. Nastavení, oprávnění a chování v kanálech.

🎮
Když Discord bot zůstane offline, v 90 % případů chybí „Message Content Intent“. Discord obsah zpráv botům ve výchozím stavu nevydává. Hermes si o něj vždy říká, a dokud není v Developer Portalu zapnutý, Discord spojení odmítne — bot se vůbec nepřipojí. Druhý povinný přepínač je Server Members Intent (jinak neumí dohledat uživatele).

1. Aplikace a bot

1) discord.com/developers/applications → New Application (jméno = jméno bota) 2) Bot → Add Bot → zkopírovat token (DISCORD_BOT_TOKEN) 3) Privileged Gateway Intents: Server Members Intent → ON (povinné) Message Content Intent → ON (povinné!) Presence Intent → volitelné 4) Installation (nebo ruční URL): scopes „bot“ + „applications.commands“
# minimální oprávnění bota View Channels · Send Messages · Embed Links · Attach Files · Read Message History # doporučená navíc Create Public Threads · Send Messages in Threads
# ruční pozvánka (YOUR_APP_ID nahraďte) https://discord.com/oauth2/authorize?client_id=YOUR_APP_ID&scope=bot+applications.commands&permissions=309237763136

2. ID uživatele a přístup

NastaveníVýznam
DISCORD_BOT_TOKENToken bota
DISCORD_ALLOWED_USERSČíselná ID uživatelů (čárkou). Bez něj i bez rolí Hermes všechny odmítne — bezpečnostní výchozí stav
DISCORD_ALLOWED_ROLESID rolí — kdo má roli, má přístup (vhodné pro měnící se tým moderátorů)
DISCORD_ALLOWED_CHANNELSOmezení na konkrétní kanály
DISCORD_REQUIRE_MENTIONZda musí být bot označen (výchozí ano v kanálech)
DISCORD_FREE_RESPONSE_CHANNELSKanály, kde bot odpovídá i bez označení

ID se kopírují v Discordu po zapnutí Developer Mode (Uživatelská nastavení → Pokročilé). Uživatelská jména fungují jen jako doplněk a nikdy se nepárují podle přezdívek na serveru — ty si může nastavit kdokoli.

3. Jak se bot chová

KdeChování
Soukromé zprávyOdpovídá na vše, každá konverzace má vlastní sezení
Kanály serveruVe výchozím stavu jen na označení @bot; bez označení zprávu ignoruje
Kanály bez povinného označeníOdpovídá průběžně (hodí se pro „pracovní“ kanál); volitelně si každou zprávu vezme do vlastního vlákna
VláknaOdpovídá ve stejném vlákně a historie vlákna zůstává oddělená od kanálu
Víc lidí v jednom kanáleHistorie se ve výchozím stavu drží zvlášť pro každého — dva lidé si nepřepisují kontext
Fórová vláknaBot si při každém odeslání založí nové vlákno (fórum nepřijímá přímé zprávy)

4. Domovský kanál a hlas

# příkazem v kanálu, kde bot je /sethome # nebo v .env DISCORD_HOME_CHANNEL=123456789012345678 DISCORD_HOME_CHANNEL_NAME="#bot-updates"

Do domovského kanálu chodí to, co bot posílá sám: výsledky pravidelných úloh, připomínky, oznámení.

Discord umí i hlas: příchozí hlasové zprávy přepisuje, /voice tts zapne odpovědi mluveným slovem a bot se umí připojit do hlasového kanálu. Podrobnosti má stránka o hlasovém režimu.

5. Bezpečnost

🔐
Bez DISCORD_ALLOWED_USERS i DISCORD_ALLOWED_ROLES Hermes všechny odmítne. To je záměr: autorizovaný uživatel má plný přístup k nástrojům agenta, tedy i k serveru, kde běží. Nikdy nedávejte přístup celému serveru jen proto, že je to pohodlnější.
SituaceCo s tím
Bot je online, ale neodpovídáChybí allowlist (bot odmítá všechny), nebo zpráva neobsahuje označení
Bot se vůbec nepřipojíMessage Content Intent, viz začátek stránky
Nevidí uživateleServer Members Intent je vypnutý
Odpovídá ve špatném kanálePřidejte kanál do DISCORD_FREE_RESPONSE_CHANNELS, nebo naopak omezujte přes DISCORD_ALLOWED_CHANNELS

Kam dál

← Zpět na wiki