
Product
Introducing Reports: An Extensible Reporting Framework for Socket Data
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socketβs new extensible reporting framework.
create-discobase
Advanced tools
Easily create and manage your Discord bot with our powerful toolkit! π

The modern, production-ready framework for building powerful Discord bots with ease.
DiscoBase provides everything you need to create scalable, feature-rich Discord bots using Discord.js v14. Whether you're building a simple utility bot or a complex multi-server system, DiscoBase gives you the tools and flexibility to succeed.
β¨ Built on Discord.js v14
π Production-ready architecture
π Documentation: discobase.site
Create your Discord bot in seconds:
npx create-discobase@latest
The interactive setup will guide you through:
npm run generatenpm run managenpx create-discobase@latest
Powerful options available for every command:
| Option | Type | Description |
|---|---|---|
ownerOnly | boolean | Only bot owner can use this command |
adminOnly | boolean | Only users in bot.admins can use it |
devOnly | boolean | Only works in developer servers |
botPermissions | array | Required bot permissions (e.g., ['SendMessages', 'ManageChannels']) |
userPermissions | array | Required user permissions (e.g., ['Administrator', 'KickMembers']) |
cooldown | number | Cooldown in seconds before reuse (default: 3) |
disabled | boolean | Disable command without deleting it |
requiredRoles | array | Array of role IDs required to run command |
Example Command:
module.exports = {
data: new SlashCommandBuilder()
.setName('ping')
.setDescription('Replies with pong!'),
cooldown: 5,
botPermissions: ['SendMessages'],
userPermissions: ['SendMessages'],
async execute(interaction, client) {
// Your command logic here
}
};
Configure your event handlers with these options:
| Option | Type | Description |
|---|---|---|
name | string | Required. The Discord.js event name (e.g., 'messageCreate', 'guildMemberAdd') |
customId | string | For button/select menu interactions - matches the component's customId |
cooldown | number | Cooldown in seconds before reuse |
cooldownMessage | string | Cooldown message to send when user uses command while on cooldown. Use {time} for showing remaining time in message |
botPermissions | array | Required bot permissions (e.g., ['SendMessages', 'ManageChannels']) |
userPermissions | array | Required user permissions (e.g., ['Administrator', 'KickMembers']) |
rateLimit | object | Rate limit configuration |
Example Event:
module.exports = {
name: 'interactionCreate',
customId: 'verify-button', //or multiple customIds in array ['verify-button', 'verify-button2']
cooldown: 5,
cooldownMessage: 'You are on cooldown! Please try again in {time}.',
botPermissions: ['SendMessages'],
userPermissions: ['SendMessages'],
rateLimit: {
type: 'user', // 'user', 'guild', 'channel',
max: 5, // max uses
window: 60000 // 60 seconds
},
async execute(interaction, client) {
// Your event logic here
}
};
Your config.json structure:
| Parameter | Type | Description |
|---|---|---|
bot.token | string | Required. Your Discord bot token |
bot.id | string | Required. Your Discord bot ID |
bot.admins | array | Optional. List of admin user IDs |
bot.ownerId | string | Optional. The owner's user ID |
bot.developerCommandsServerIds | array | Optional. Server IDs for dev-only commands |
database.mongodbUrl | string | Optional. MongoDB connection URL |
logging.guildJoinLogsId | string | Optional. Channel ID for guild join logs |
logging.guildLeaveLogsId | string | Optional. Channel ID for guild leave logs |
logging.commandLogsChannelId | string | Optional. Channel ID for command logs |
logging.errorLogs | string | Optional. Webhook URL for error logging |
prefix.value | string | Optional. Prefix for text commands |
Advanced function configuration:
| Property | Type | Description |
|---|---|---|
once | boolean | Run once then stop |
interval | number | Time (ms) between repeated executions |
retryAttempts | number | Number of retries if function fails |
maxExecution | number | Maximum number of executions allowed |
initializer | number | Initial value/state for setup |
Example:
const exampleFunction = async () => {
console.log("Function executed!");
};
exampleFunction.config = {
once: false,
interval: 10000, // Run every 10 seconds
retryAttempts: 3,
maxExecution: 100,
initializer: 0
};
module.exports = exampleFunction;
Monitor all file changes in real-time through discobase.json:
{
"activityTracker": {
"enabled": true,
"ignoredPaths": [
"**/logs/**",
"**/node_modules/**",
"**/private/**"
]
}
}
Create new commands and events instantly:
npm run generate
The CLI automatically generates imports and example code!
Edit, pause, or delete commands and events:
npm run manage
Features:
For complete guides, tutorials, and API reference:
π discobase.site
Join our Discord community:
Apache-2.0 Β© DiscoBase Team
FAQs
Easily create and manage your Discord bot with our powerful toolkit! π
The npm package create-discobase receives a total of 52 weekly downloads. As such, create-discobase popularity was classified as not popular.
We found that create-discobase demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socketβs new extensible reporting framework.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.