Background-worker mode
A Discord bot accepts no inbound requests - it holds a websocket to the gateway itself. Turn on background-worker mode and no useless public domain is issued.
Wrote a bot with discord.py or discord.js and have nowhere to run it? Connect the repo - Dada Cloud builds and runs it as a background process. No domain and no webhooks needed: the bot opens its own websocket to Discord. If it crashes, it restarts itself. Free tier, servers in Russia.
A Discord bot accepts no inbound requests - it holds a websocket to the gateway itself. Turn on background-worker mode and no useless public domain is issued.
A Python bot builds from requirements.txt, a Node.js bot from package.json. No Dockerfile, no systemd unit to write.
A dropped gateway connection, an unhandled exception, a dependency update - the process comes back automatically.
Command prefixes, roles, economy, moderation history - in a managed database next door with DATABASE_URL wired in.
The bot token is set in the console and injected at start. Keep it out of the repo - Discord revokes leaked tokens automatically.
Your first bot runs for free, no card required. Pay in rubles when it grows.
Six steps from code to a bot that stays online around the clock.
In the Discord Developer Portal create an application, add a bot and copy the token. Enable the privileged intents you need there too - without Message Content Intent the bot cannot read message text.
requirements.txt with discord.py for Python, package.json with discord.js for Node.js. That file is how the platform knows how to build the project.
Turn on background-worker mode when creating the app - the bot needs no public domain and none will be issued.
Connect a GitHub repo and every push builds a new version. Without git, a zip archive up to 100MB works too.
DISCORD_TOKEN and other secrets are set in the console. Read them from the environment, not from a file in the repo.
A minute after the build the bot shows up online in your server's member list. Gateway connection logs are visible in the panel.
Real platform tiers, and an honest comparison with renting your own VPS.
| Tier | Price | What you get |
|---|---|---|
| Free | 0 ₽/mo | One bot with a database, no card required. Enough for a bot serving a handful of guilds. |
| Startup | 990 ₽/mo | 5 apps, 2 databases, 7-day backups - several bots, or a bot with a web dashboard. |
| Business | 2,900 ₽/mo | 20 apps, 10 databases, 30-day backups, priority support. |
| Your own VPS | comparable on hardware | A VPS is cheaper per unit of hardware. But systemd or pm2, database backups and restarts after a crash cost your time. |
Three places a Discord bot deploy usually trips.
Message Content, Server Members and Presence Intent are toggled in the Developer Portal and declared in code. Without them the bot starts but sees no message text - which looks exactly like a broken bot.
A regular app instead of a worker gets a domain nobody will ever open. Use background-worker mode so the bot spends nothing on a web layer.
The app disk is wiped on every build, so a SQLite file or a settings json disappears on the next deploy. Keep state in PostgreSQL.
No. A Discord bot opens a websocket to the gateway and receives events over it - it accepts no inbound traffic. That is why it runs as a background worker, with no domain. A domain is only needed for an HTTP interactions endpoint.
Both. A Python bot builds from requirements.txt, a Node.js bot from package.json. The start command comes from your project; no Dockerfile required.
Yes: the bot connects outbound to the Discord gateway and that connection goes through - we verified it from the production cluster. Your bot's users may need a VPN on their side, which does not affect the bot itself.
In the app's environment variables. They are set in the console and injected at start, so the token never reaches the repo or the built image.
The process restarts automatically and reconnects to the gateway. Crash logs are visible in the panel.
In managed PostgreSQL next to the bot - DATABASE_URL appears in the environment automatically. A local SQLite file would not survive the next build.
Your first bot runs on the Free tier with no card. After that it is Startup at 990 ₽/mo or Business at 2,900 ₽/mo, paid by ruble card.
Yes, each bot is its own app. The free tier fits one; Startup fits up to five.
Create an account and deploy your first app. The Free plan costs $0.