K
Docs
Building Bots

🔀 Bot Modes

Every Kitcord bot runs in one of two modes — Interaction Only or Full Bot. The mode decides how your bot connects to Discord, what it can react to, and how much energy it costs to keep alive.

⚖️The two modes

Interaction Only

The default for every new bot. Handles slash commands via a single HTTPS endpoint that Discord calls directly — no persistent connection to keep open.

Free to keep alive
🌐Full Bot

Opens a persistent gateway connection to Discord. Unlocks triggers, timers, and real-time events like member joins and message activity.

⚡ ~21 / hour · 500 / day

🔓What each mode unlocks

CapabilityInteraction OnlyFull Bot
Slash commands (Spells)
Triggers (gateway events)❌ ignored until you switch
Timers❌ ignored until you switch
Gateway-only Pieces❌ inactive in slash-command flows only
Energy costNone⚡ ~21/hr · 500/day

You can build triggers and timers in Interaction Only mode — they're saved in your Kit, just not run until you switch to Full Bot. Kitcord warns you about this on the Triggers page and before you go live.

🔁Switching modes

Change modes any time from your bot's Settings — no code, no redeploy.

  1. Open your bot, go to Settings → Discord.
  2. Under Bot Type, pick the mode you want.
  3. Switching to Full Bot from Triggers works the same way — Kitcord shows a one-click upgrade prompt the moment you try to add a trigger.
Pro tip
Not sure which to pick? Start with Interaction Only— it's free and covers most slash-command bots. Switch to Full Bot only when you need triggers, timers, or real-time reactions to what happens in a server.

🔗The Interactions Endpoint URL

Interaction Only bots need one extra step in the Discord Developer Portal.

Because an Interaction Only bot has no persistent connection, Discord needs to know where to send slash-command requests. Kitcord generates this URL for you — copy it from Settings → Discord and paste it into your app's General Information → Interactions Endpoint URL field in the Discord Developer Portal.

Text
https://<your-app-url>/api/bots/{botId}/interactions

Discord verifies this endpoint with your bot's public key before it will accept it — make sure your Application ID, token, and public keyare all saved in Settings first. Kitcord's settings page shows a live checklist so you can see exactly what's missing.

📦Self-hosted / exported bots

Bot mode travels with your export as an environment variable.

If you export your bot to run it yourself (see Kit Schema), the mode is set via BOT_MODE. An interaction_only export runs as a stateless HTTP handler; full_gateway runs the full Discord.js client.

Text
# Self-hosted / exported bots read the mode from an env var:
BOT_MODE=interaction_only   # or full_gateway

# interaction_only bots serve a single HTTPS endpoint:
POST /api/bots/{botId}/interactions