Zumito Framework
raw JSON → 1.15.4 verified Sat May 09 auth: no javascript
A Discord.js bot framework designed to accelerate Discord bot development by providing built-in command handling, event handling, and a modular architecture. The framework is written in TypeScript and ships with type definitions, enabling type-safe development. It uses Discord.js as its underlying library and Express for a web server component. Current stable version: 1.15.4, released in February 2026. The framework is actively maintained with frequent bug fixes and feature updates, following a monthly release cadence. Key differentiators include a focus on DRY principles, a module-based system for easy extensibility, and comprehensive documentation at docs.zumito.dev.
Common errors
error TypeError: Framework is not a constructor ↓
cause Using CommonJS require() which returns an object with named exports, not the Framework class directly.
fix
Use named import: import { Framework } from 'zumito-framework'
error Error: Cannot find module 'discord.js' ↓
cause The package requires discord.js as a peer dependency, but it's not installed.
fix
Install discord.js: npm install discord.js
error TypeError: module.exports is not a function ↓
cause Attempting to use Framework as a default export when it's a named export.
fix
Use named import: import { Framework } from 'zumito-framework'
Warnings
breaking Since v1.14.0, the Framework constructor requires a `load` callback option; omitting it will cause a runtime error on startup. ↓
fix Add a `load` callback to the options object passed to the Framework constructor.
gotcha Config file loading changed in v1.14.1 to use pathToFileURL for compatibility; if you use a custom config file loader, ensure it handles file:// URLs. ↓
fix Update any custom config file loading logic to use pathToFileURL (Node's URL) for Windows path compatibility.
breaking The `webServer.port` is now optional since v1.14.3; previously it was required. Existing code that relies on the port being defined may break if not set. ↓
fix When using a custom web server port, explicitly set `webServer.port` in the framework options.
deprecated Direct use of `require()` for importing the package has been deprecated since v1.14.4 and will be removed in a future version. ↓
fix Switch to ES module imports (import statements) and ensure your project uses 'type': 'module' in package.json.
Install
npm install zumito-framework yarn add zumito-framework pnpm add zumito-framework Imports
- Framework wrong
const Framework = require('zumito-framework');correctimport { Framework } from 'zumito-framework' - Module wrong
import Module from 'zumito-framework';correctimport { Module } from 'zumito-framework' - Command
import { Command } from 'zumito-framework'
Quickstart
import { Framework, Module, Command } from 'zumito-framework';
import { Client, GatewayIntentBits } from 'discord.js';
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
class PingCommand extends Command {
constructor() {
super({ name: 'ping', description: 'Replies with Pong!' });
}
async execute(interaction) {
await interaction.reply('Pong!');
}
}
class MyModule extends Module {
constructor() {
super({ name: 'my-module', commands: [new PingCommand()] });
}
}
const framework = new Framework({
client,
token: process.env.DISCORD_TOKEN ?? '',
modules: [new MyModule()],
});
framework.start();