29 guides

Discord bots

Gateway, interactions, permissions and the failures unique to bots.

Host a Discord Bot Without an HTTP Server

Deploy a Discord gateway bot as a worker with a ZIP, set its token as an environment variable, and check logs and data before leaving it running.

4 min read· discord · bots

"This Interaction Failed" — Discord's 3-Second Rule Explained

Discord gives your bot 3 seconds to acknowledge a slash command. Defer for anything slower — and know what a redeploy does to work you deferred.

5 min read· discord · bots

Your Discord Slash Commands Aren't Showing Up — Check These in Order

Usually the invite is missing a scope, or you registered globally and expected instant results. And registering on every boot has a limit you can hit.

5 min read· discord · bots

Bot Keeps Restarting but Shows as Running? Read the Exit Code

A crash-looping bot reports a healthy status because the container never exits. Here's the log line that tells you the truth, and what each exit code means.

6 min read· discord · telegram

Do I Need to Shard My Discord Bot? Almost Certainly Not Yet

Sharding is required at 2500 guilds and helps far less than people expect below that. And the way you shard matters more than whether you do.

5 min read· discord · bots

Discord Bot "Missing Permissions" (50013) — Why It Isn't Your Hosting

The bot has the permission and still can't use it. Usually a channel overwrite, or a role hierarchy rule that no permission flag can override.

5 min read· discord · bots

Your Bot Greets Every Server Again on Every Restart

Guild Create fires in three cases and only one is a real join. Telling them apart needs storage that survives a deploy — which is why the bug exists.

5 min read· discord · bots

Two Bots in One Channel — Stopping the Loop Before It Costs You

Telegram forbids bots seeing each other precisely to avoid this. Discord doesn't, so the check is yours — and with a model behind it, each lap is billable.

5 min read· discord · telegram

Discord Attachment URLs Expire — Stop Storing Them in Your Database

CDN links are signed and time-limited, so a bot that saves them serves dead images later. Three fixes, and one that costs nothing at all.

5 min read· discord · bots

Discord Buttons Stop Working After a Restart — Make Them Stateless

A button posted last month still renders and still fires. Your container doesn't remember it. Put the state in the custom_id, which gets you 100 characters.

6 min read· discord · bots

After the Deferral — Discord's 15-Minute Interaction Window

Deferring buys you time, not unlimited time. Tokens last 15 minutes, there are two kinds of deferral, and a redeploy mid-task leaves a spinner forever.

5 min read· discord · bots

Discord Rate Limits — The One That Locks You Out Isn't the Obvious One

50 requests a second is easy to respect. The limit that bites is 10,000 invalid requests per 10 minutes, and a 403 in a loop counts toward it.

5 min read· discord · bots

Your LLM Bot's Reply Is Too Long for Discord

Model output doesn't respect a 2,000-character cap. Splitting naively breaks code blocks, and editing on every token is how you collect rate limits.

5 min read· discord · bots

Anyone in the Channel Can Prompt Your Bot

If a stranger's message reaches your model, they can instruct it. The fix isn't a better system prompt — it's limiting what the model is allowed to do.

6 min read· security · llm

Restricting Who Can Use Your Bot's Commands

Discord's default_member_permissions is a default, not a boundary — admins bypass it and server owners can change it. The real check belongs in your handler.

6 min read· discord · telegram

Should Your LLM Bot Read Every Message? Probably Not

Both platforms restrict message visibility by default. For a model-backed bot that default is a feature — it caps your cost, your risk, and your storage.

5 min read· llm · bots

Test Your Discord Bot Locally Without Breaking the Live One

A second application and a private test server give you a real dev loop — and stop the classic mistake of running two copies on one token.

5 min read· discord · bots

Bot Data Lost on Restart? Put SQLite on a Volume

Your bot's database disappears because container filesystems are thrown away on every redeploy. Mount a volume — and know exactly what triggers the reset.

5 min read· discord · telegram

Bot Shows Online but Ignores Every Command — It's Probably Intents

A bot that connects, appears online, and does nothing usually isn't a hosting problem. It's a missing privileged intent, and it needs fixing in two places.

4 min read· discord · bots

Why Is My Bot Replying Twice? Four Causes, in Order of Likelihood

Duplicate replies almost always mean two copies of your bot are running — often the old host you forgot to stop. Here's how to tell which cause you have.

5 min read· discord · telegram

Your Bot Token Is in Your Git History — Rotate It, Don't Scrub It

Once a token has been pushed anywhere, it's burned. Regenerate it, move it to an environment variable, and stop shipping secrets inside the image.

5 min read· security · secrets

A Crash-Looping Discord Bot Can Get Its Token Reset

Every restart that reaches the gateway spends one IDENTIFY. Discord allows 1000 a day, and blowing past it resets your token. A 5-second loop gets there fast.

5 min read· discord · bots

Deploying a Python Bot — What the Build Agent Decides for You

Python version, Poetry vs pip, legacy aiogram pins, and unbuffered logs are all inferred from your project. Here's what gets chosen and how to influence it.

5 min read· python · discord

How Many Discord Bots Can I Run on One Account?

Apps aren't a billing unit here — you're billed on total CPU, RAM and disk. So the real limit is how much memory your bots use, not how many there are.

5 min read· discord · telegram

Running a Java or Kotlin Discord Bot (JDA) on a Small Container

Java bots deploy via Dockerfile, not the zip flow. The work is telling the JVM how much of the container it may use — and getting the build to fit.

5 min read· java · kotlin

Move a Discord Bot Off Replit: Code, Secrets, and Data

Move a Discord bot from Replit to a long-running container. Export its files and data, set the token, and remove a keep-alive server if you used one.

5 min read· discord · telegram

Build an RSS-to-Discord Feed Bot That Doesn't Spam Your Channel

A feed relay is three moving parts and one classic failure — reposting the whole feed after every redeploy. Here's how to build one that behaves.

5 min read· discord · telegram

Run a Staging Bot Alongside Your Live One Without Doubling the Bill

Test bot changes on a second bot account instead of in production. Two apps, two tokens, one codebase — and the app count doesn't affect what you pay.

5 min read· discord · telegram

What You're Actually Granting When You Connect an AI Agent to Your Hosting

22 MCP tools, 8 of them read-only. But read-only isn't the same as harmless — two of those hand your agent credentials. Here's the honest breakdown.

6 min read· mcp · ai-agents