Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Discord

5.1. Discord — A Full Gateway Bot, Not a Plain Webhook

Not a stateless “respond to webhook” bot

This is the important point to understand: Hermes on Discord runs through the full messaging gateway, not a stateless webhook responder — every incoming message goes through Hermes’s complete session/routing pipeline.

Two separate transports — you need both to work correctly

Discord REST and the Gateway WebSocket are two different transports — REST returning HTTP 200 success (even when calling fetch_user()) does not prove that the bot is still receiving events through the Gateway WebSocket. If the bot is online but not responding to messages, the cause is almost certainly that Message Content Intent is disabled in the Developer Portal.

Native slash commands, with a limit

Native Discord application commands are supported, capped at 100 commands per app — with many installed skills (each skill is a slash command, as described in 10.3), this is a practical constraint to keep in mind.

Notes

  • If the bot is online but completely “silent”, check Message Content Intent first — this is the most common cause, not a Hermes configuration error.
  • On a busy server where many people message in the same channel, remember that each person has their own session per user ID by default — if you need a shared conversation (many people, one context), consider using Slack instead (thread-based sessions, see 5.3).
  • If the number of installed skills is approaching the 100 slash-command limit, disable skills you rarely use instead of trying to squeeze everything in — an oversized payload also causes errors independent of the command count.