{"id":28477,"library":"zumito-framework","title":"Zumito Framework","description":"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.","status":"active","version":"1.15.4","language":"javascript","source_language":"en","source_url":"https://github.com/ZumitoTeam/zumito-framework","tags":["javascript","typescript"],"install":[{"cmd":"npm install zumito-framework","lang":"bash","label":"npm"},{"cmd":"yarn add zumito-framework","lang":"bash","label":"yarn"},{"cmd":"pnpm add zumito-framework","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core dependency for interacting with the Discord API","package":"discord.js","optional":false},{"reason":"Used for the built-in web server component","package":"express","optional":true}],"imports":[{"note":"ESM-only; require() will fail because the package is type: module and exports ES modules.","wrong":"const Framework = require('zumito-framework');","symbol":"Framework","correct":"import { Framework } from 'zumito-framework'"},{"note":"Module is a named export, not default.","wrong":"import Module from 'zumito-framework';","symbol":"Module","correct":"import { Module } from 'zumito-framework'"},{"note":"Named export, used for defining slash commands.","wrong":"","symbol":"Command","correct":"import { Command } from 'zumito-framework'"}],"quickstart":{"code":"import { Framework, Module, Command } from 'zumito-framework';\nimport { Client, GatewayIntentBits } from 'discord.js';\n\nconst client = new Client({ intents: [GatewayIntentBits.Guilds] });\n\nclass PingCommand extends Command {\n  constructor() {\n    super({ name: 'ping', description: 'Replies with Pong!' });\n  }\n  async execute(interaction) {\n    await interaction.reply('Pong!');\n  }\n}\n\nclass MyModule extends Module {\n  constructor() {\n    super({ name: 'my-module', commands: [new PingCommand()] });\n  }\n}\n\nconst framework = new Framework({\n  client,\n  token: process.env.DISCORD_TOKEN ?? '',\n  modules: [new MyModule()],\n});\n\nframework.start();","lang":"typescript","description":"Shows how to initialize the framework, create a module, and define a slash command."},"warnings":[{"fix":"Add a `load` callback to the options object passed to the Framework constructor.","message":"Since v1.14.0, the Framework constructor requires a `load` callback option; omitting it will cause a runtime error on startup.","severity":"breaking","affected_versions":">=1.14.0"},{"fix":"Update any custom config file loading logic to use pathToFileURL (Node's URL) for Windows path compatibility.","message":"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.","severity":"gotcha","affected_versions":"1.14.1"},{"fix":"When using a custom web server port, explicitly set `webServer.port` in the framework options.","message":"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.","severity":"breaking","affected_versions":"<1.14.3"},{"fix":"Switch to ES module imports (import statements) and ensure your project uses 'type': 'module' in package.json.","message":"Direct use of `require()` for importing the package has been deprecated since v1.14.4 and will be removed in a future version.","severity":"deprecated","affected_versions":">=1.14.4"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Use named import: import { Framework } from 'zumito-framework'","cause":"Using CommonJS require() which returns an object with named exports, not the Framework class directly.","error":"TypeError: Framework is not a constructor"},{"fix":"Install discord.js: npm install discord.js","cause":"The package requires discord.js as a peer dependency, but it's not installed.","error":"Error: Cannot find module 'discord.js'"},{"fix":"Use named import: import { Framework } from 'zumito-framework'","cause":"Attempting to use Framework as a default export when it's a named export.","error":"TypeError: module.exports is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}