Discord bot stacks we host right now
Choose Node.js, Nodemon, or Python. Every bot gets 1GB RAM, 1GB storage, and 150% CPU with SFTP access and maintenance mode.
Building a Discord bot is one of the most rewarding ways to learn programming and contribute to online communities. Whether you are creating a moderation assistant, a music player, a game companion, or a custom utility for your server, the language and runtime you choose will shape your entire development experience. At MonkeyBytes Hosting, we provide free infrastructure for the three most popular Discord bot stacks so you can focus on writing code rather than managing servers. Each bot slot comes preconfigured with the tools and dependencies you need to deploy within minutes, and our panel gives you full control over your bot's lifecycle from a single dashboard.
Specs for every stack
- 1GB RAM and 1GB SSD storage
- Dedicated CPU share
- 24/7 uptime target
- Maintenance mode for safe deploys
Current language support
We currently support three runtime environments that cover the vast majority of Discord bots in production today. Each environment is containerised and isolated, meaning your bot runs in its own sandboxed process with dedicated resources. Below you will find details on each stack, the libraries they support, and how they fit into the broader Discord bot development ecosystem.
Node.js
Discord.js, Eris, and any npm package. Node LTS preinstalled.
Node.js is by far the most widely used runtime for Discord bots. Built on Google's V8 JavaScript engine, Node.js executes JavaScript outside of the browser and provides an event-driven, non-blocking I/O model that is exceptionally well suited to the real-time, event-based architecture of the Discord API. When your bot receives a message, a reaction, or a slash command interaction, Node.js processes that event through its event loop without blocking other operations, which means your bot can handle many concurrent users efficiently even within a 1GB memory allocation.
The Node.js ecosystem is anchored by npm, the world's largest software registry, which gives you access to over two million packages. For Discord bot development specifically, discord.js is the dominant library and provides a comprehensive, well-documented wrapper around the Discord API with full support for slash commands, message components, modals, voice connections, and gateway intents. Eris is a lighter alternative that consumes less memory at the cost of fewer convenience methods. You can also use libraries like discord-interactions for webhook-only bots or combine Discord libraries with Express, Fastify, or other HTTP frameworks if your bot needs to serve a web dashboard alongside its Discord functionality.
On MonkeyBytes, the Node LTS release is preinstalled and kept up to date. You upload your project files via SFTP, and your package.json is respected automatically. Running npm install through the console installs your dependencies into the container, and your bot starts with the entry point defined in your configuration. Environment variables are set through the panel so your bot token and API keys never need to appear in your source code.
- npm install ready
- Environment variables for tokens
- Console and live logs
Nodemon
Node.js with automatic restarts on file changes for rapid iteration.
Nodemon is a development-oriented wrapper around Node.js that monitors your project's file system for changes and automatically restarts your application whenever a file is modified. In a traditional Node.js setup, you would need to manually stop and restart your bot process every time you make a code change. Nodemon eliminates that friction entirely. As soon as you save a file through SFTP or through the panel's file editor, Nodemon detects the change, gracefully terminates the running process, and starts it again with the updated code. This creates a much faster feedback loop during active development.
Beyond automatic restarts on file changes, Nodemon also provides crash recovery. If your bot encounters an unhandled exception or a fatal error that would normally terminate the process, Nodemon catches the exit event and restarts your application automatically. This is particularly valuable for bots that are still in development, where unexpected edge cases in command handlers or event listeners might cause crashes. Rather than your bot going offline until you manually intervene, Nodemon brings it back within seconds. You can configure which file extensions Nodemon watches, which directories to ignore, and how long to wait before triggering a restart, giving you fine-grained control over the restart behaviour.
The Nodemon stack on MonkeyBytes uses the same Node LTS runtime and npm ecosystem as the standard Node.js stack. The only difference is the process manager wrapping your entry point. This means every npm package, every discord.js feature, and every Node.js API available in the standard stack is also available here. If you are actively building and testing your bot, Nodemon is the recommended choice. Once your bot is stable and you no longer need automatic restarts on file changes, you can switch to the standard Node.js stack at any time without changing your code.
- Auto-reload on save
- Crash recovery
- Perfect for development cycles
Python
Discord.py, Nextcord, Pycord, and other pip packages with Python 3.
Python is the second most popular language for Discord bot development and is often the first choice for developers who are already comfortable with Python's syntax and standard library. The discord.py library, originally created by Rapptz, was one of the earliest high-quality Discord API wrappers and remains the foundation that most Python Discord bots are built on. It provides an asynchronous framework built on top of Python's asyncio, which allows your bot to handle multiple gateway events concurrently without threading. Discord.py supports slash commands, context menus, message components, voice playback, and the full range of Discord API endpoints.
The Python ecosystem for Discord bots has expanded significantly. Nextcord is an actively maintained fork of discord.py that adds features and fixes on a faster release cycle. Pycord is another popular fork with its own approach to slash commands and UI components. Hikari takes a different architectural approach entirely, offering a more modular and type-safe API. All of these libraries, along with any package available on PyPI, can be installed on MonkeyBytes through your requirements.txt file or by running pip commands directly in the console. Common companion libraries include aiohttp for making HTTP requests, SQLAlchemy or databases for database access, Pillow for image manipulation, and wavelink or lavalink.py for music bot functionality.
Python 3 is preinstalled on every Python bot slot. You manage your dependencies through a requirements.txt file placed in your project root, which is processed automatically when your bot starts. For more complex dependency management, you can use virtual environments within your container. The console gives you direct access to pip for installing, updating, or removing packages as needed. Python bots tend to use slightly more memory than their Node.js equivalents for the same functionality, so if your bot is memory-intensive, keep an eye on your usage through the panel's resource monitor.
- requirements.txt installs
- Virtual environment friendly
- Console access for pip commands
Understanding Discord Bot Runtimes
A runtime environment is the software layer that executes your bot's code and provides access to system resources like networking, file I/O, and memory management. When you write a Discord bot, your code does not interact with the operating system directly. Instead, it runs inside a runtime that translates your high-level instructions into low-level operations. Understanding how each runtime works helps you write more efficient code and troubleshoot issues when they arise.
Node.js is built on the V8 JavaScript engine, which compiles JavaScript to native machine code at execution time using a technique called just-in-time compilation. V8's garbage collector manages memory automatically, reclaiming objects that are no longer referenced by your code. Node.js adds a standard library on top of V8 that provides modules for file system access, networking, cryptography, and other system-level operations. The event loop is the core of Node.js: it continuously checks for pending events such as incoming WebSocket messages from Discord, completed file reads, or timer callbacks, and dispatches them to the appropriate handler functions. This single-threaded event loop model means your bot processes one event at a time, but because I/O operations are non-blocking, the event loop is free to handle other events while waiting for network responses or disk reads to complete. For CPU-intensive tasks like image processing, Node.js provides worker threads that run in parallel.
Python's runtime operates differently. CPython, the standard Python interpreter, reads your source code, compiles it to bytecode, and executes that bytecode on a virtual machine. The Global Interpreter Lock, commonly known as the GIL, ensures that only one thread executes Python bytecode at a time, which simplifies memory management but limits true parallelism for CPU-bound work. Discord bot libraries in Python work around this limitation by using asyncio, Python's built-in asynchronous I/O framework. With asyncio, your bot defines coroutines that can yield control while waiting for I/O operations, allowing other coroutines to run in the meantime. This cooperative multitasking model achieves concurrency without threading and is conceptually similar to Node.js's event loop, though the implementation details differ significantly.
Package management is another area where the two ecosystems diverge. Node.js uses npm, which installs packages into a node_modules directory within your project. Each package can specify its own dependency tree, and npm resolves version conflicts by nesting dependencies. A typical Discord bot project might have a node_modules folder containing hundreds of packages, but only a handful are direct dependencies listed in your package.json. Python uses pip, which installs packages globally or into a virtual environment. Dependencies are listed in a requirements.txt file with pinned versions, and pip installs them in a flat structure. Dependency conflicts in Python are resolved at install time and can occasionally require manual intervention if two packages need incompatible versions of a shared dependency. On MonkeyBytes, both package managers are available through the console, and dependencies are preserved between restarts.
Memory behaviour differs between the two runtimes as well. Node.js allocates memory from V8's managed heap, which has a default limit that varies by version but is typically around 1.5GB on 64-bit systems. V8's garbage collector runs periodically to free unused memory, and it uses a generational strategy that separates short-lived objects from long-lived ones for more efficient collection. Python's memory management uses reference counting as its primary mechanism, supplemented by a cyclic garbage collector that handles reference cycles. In practice, Python bots tend to have a slightly higher baseline memory footprint than Node.js bots performing the same tasks, because the CPython interpreter itself consumes more memory than V8 for equivalent workloads. Within the 1GB allocation provided by MonkeyBytes, both runtimes have plenty of headroom for most Discord bots, but developers working with large caches, image buffers, or database connection pools should monitor their memory usage through the panel.
Choosing the Right Stack for Your Bot
The best language for your Discord bot depends on your existing experience, the libraries you want to use, and the specific requirements of your project. There is no universally superior choice. Node.js and Python are both capable of building any type of Discord bot, from simple moderation tools to complex multi-server applications with databases, web dashboards, and music playback. The differences lie in developer ergonomics, ecosystem tooling, and performance characteristics for specific workloads.
If you are already comfortable with JavaScript from web development, Node.js is the natural starting point. The discord.js library has the largest community of any Discord API wrapper, which means you will find the most tutorials, guides, and Stack Overflow answers for common problems. Discord.js also tends to receive support for new Discord API features faster than libraries in other languages, because the Discord API itself uses JSON over WebSocket, which is native territory for JavaScript. The npm ecosystem provides packages for virtually any integration you might need, from database drivers to HTTP clients to image processing libraries. Node.js also excels at I/O-heavy workloads, which describes most Discord bots: receiving events, querying APIs, reading from databases, and sending responses.
If you prefer Python's syntax and readability, or if your bot involves data processing, machine learning, or scientific computation, Python is the stronger choice. Python's standard library is more comprehensive than Node.js's for tasks like string manipulation, regular expressions, and data structures. Libraries like NumPy, pandas, and scikit-learn are available through pip if your bot needs to perform calculations or data analysis. The discord.py ecosystem is mature and well-documented, and forks like Nextcord and Pycord ensure that the Python Discord community continues to evolve. Python's asyncio model requires you to think explicitly about asynchronous execution using async and await keywords, which can be a learning curve for beginners but leads to clear and predictable code once understood.
For developers who are still learning and want the fastest possible iteration cycle, the Nodemon stack offers a meaningful advantage. Being able to save a file and see your changes take effect immediately, without manually restarting your bot or reconnecting to the Discord gateway, significantly reduces the time between writing code and testing it. This is especially valuable when you are experimenting with command handlers, event listeners, or embed formatting, where small adjustments are common. Once your bot is stable and deployed for production use, you can switch to the standard Node.js stack to avoid unnecessary restarts from accidental file modifications.
Performance is rarely the deciding factor for Discord bots. The Discord API itself imposes rate limits that cap how many requests your bot can make per second, and the gateway connection processes events sequentially. A bot that serves a single Discord server or even a handful of servers will never approach the performance limits of either Node.js or Python within the 1GB memory and 150% CPU allocation provided by MonkeyBytes. Performance becomes relevant only at significant scale, typically hundreds or thousands of servers, and at that point you would likely need dedicated infrastructure regardless of language. For the vast majority of bot projects, choose the language you are most productive in, and you will be well served.
Tell us what to add next
We expand based on demand. If you want another language or framework, let us know.
Our infrastructure is built on containerised environments that can be extended to support additional runtimes as demand grows. Adding a new language involves creating a Docker image with the correct interpreter or compiler, configuring the panel to manage its lifecycle, and testing resource usage under load to ensure it fits within our allocation model. We prioritise languages based on the number of requests we receive and the maturity of their Discord library ecosystem. If a language has a stable, well-maintained Discord API wrapper and a meaningful number of users requesting it, it moves to the top of our implementation queue.
On our radar
- Java (JDA)
- C# (Discord.Net, DSharpPlus)
- Go (DiscordGo)
- Rust (Serenity, Twilight)
Also requested
- Ruby (discordrb)
- TypeScript workflows
- Other runtime versions
How to request
- Email monkeybyteshosting@gmail.com
- Mention your language and library
- Share your bot size or resource needs
Why we started with these
Node.js and Python account for the overwhelming majority of Discord bots in production. When we surveyed our early user base, over ninety percent of requested bots were written in one of these two languages. Starting with the most popular stacks allowed us to serve the greatest number of developers from day one while we build out support for additional runtimes. The Nodemon option was added specifically because many of our users are actively developing their bots on our platform rather than deploying finished projects, and the automatic restart behaviour significantly improves their workflow.
- Most popular Discord bot stacks
- Great documentation and community support
- Efficient resource use within 1GB
- Highest initial user demand
Pick your stack and go live
Whether you are building with Node.js or Python, you get the same free resources and reliability.
Getting your bot online takes only a few minutes. Create a bot slot through the dashboard, choose your runtime, upload your files via SFTP, set your environment variables, and start the server. The panel provides a real-time console where you can watch your bot connect to the Discord gateway, and live logs help you debug any issues during startup. If you need to make changes, use maintenance mode to take your bot offline gracefully, update your files, and bring it back online without losing your configuration or environment variables.
Included with every bot
- SFTP credentials
- Maintenance mode controls
- Console and live logs
- Environment variables