A package to manage extensions for event listeners or discord bot commands with ease!
npm install ext-manager
at the main file
const { EventEmitter } = require('events')
const { EventManager } = require('ext-manager')
const eventEmitter = new EventEmitter()
const eventManager = new EventManager(eventEmitter)
eventManager.loadExtension('ext.js') //Load ext.js file in same directory
eventEmitter.emit('test', 'TEST!')
eventManager.reloadExtension('ext.js') //Reload ext.js extension if there is any changes
eventManager.unloadExtension('ext.js') //Unload ext.js extension
at ext.js
module.exports = {
name: 'test', //the event listener name
once: true, //event listener only works for once
main(str) {
console.log(str)
} //the main function
}
at the main file
const { Bot } = require('ext-manager')
const bot = new Bot({
prefix: '!', //the bot prefix
respondBot: false, //bot cannot respond to another bot
ownerBypass: true, //owner of the bot can bypass any command filter
insensitive: true, //command are case insensitive
filters: [] //adding a custom filter to commands
})
bot.loadExtension('commands.js')
bot.loadExtension('memberjoin.js')
bot.login('BOT_TOKEN')
at commands.js
module.exports = {
type: 'command', //the type of the ext
name: 'ping', //the command name
description: 'show the bot ping.', //the command description
async main(message, args, prefix) {
const now = Date.now()
const msg = await message.channel.send('Pinging...')
msg.edit(`Pong! my ping is ${Date.now() - now}ms`)
} //the command code
}
at memberjoin.js
module.exports = {
type: 'event', //the type of the ext
name: 'guildMemberAdd', //the event listener name
async main(member) {
const channel = member.guild.channels.cache.first()
await channel.send(`A member has joined, the name is ${member.user.tag}`)
} //the main function
}
//Load an extension
loadExtension(String)
//Reload an extension
reloadExtension(String)
//Unload an extension
unloadExtension(String)
example
module.exports = [{
name: 'test',
once: true,
main(str) {
console.log(str)
}
}, {
name: 'error',
main(err) {
console.error('An error occured', err)
}
}]
new EventManager(eventEmitter)
new Bot({
prefix: Array<Function || String> || Function || String,
owner: Array,
respondBot: Boolean,
ownerBypass: Boolean,
insensitive: Boolean,
filters: Array,
noPermission: String,
helpCommand: {
embed: Discord.MessageEmbed,
hideDuplicate: Boolean,
decorator: {
group: {
title: String,
separator: String
},
command: {
title: String,
separator: String,
notFound: String
}
}
},
extensionCommand: {
embed: Discord.MessageEmbed
},
evalCommand: {
embed: Discord.MessageEmbed
},
...Discord.ClientOptions
})
module.exports = {
type: 'event', //only for discord bot extension
name: String,
once: Boolean,
main: Function
}
module.exports = {
type: 'command',
category: String,
name: String,
aliases: Array,
description: String,
guildOnly: String,
ownerOnly: String,
usage: String,
notes: String,
cooldown: {
limit: Number,
timeout: Number,
target: 'guild' || 'channel' || 'author',
response: String
},
permission: {
type: 'guild' || 'channel',
optional: Boolean,
perms: Discord.Permissions || Array<String || Number> || String || Number,
response: String
},
botPermission: {
type: 'guild' || 'channel',
optional: Boolean,
perms: Discord.Permissions || Array<String || Number> || String || Number,
response: String
},
args: [{
position: Number,
response: String,
prompt: {
timeout: Number,
cancelled: String,
failed: String,
timedOut: String
}
}],
main: Function
}
- Node version must be not less than v10.x to avoid any bugs
- Discord.js version must be 12.x or so
at the main file
const { Bot } = require('ext-manager')
const bot = new Bot({
...BotParameters
})
bot.loadExtension('help.js')
bot.login('BOT_TOKEN')
at help.js
const { Commands } = require('ext-manager')
const { HelpCommand } = Commands
module.exports = new HelpCommand({
...CommandProperty
})
at the main file
const { Bot } = require('ext-manager')
const bot = new Bot({
...BotParameters
})
bot.loadExtension('extension.js')
bot.login('BOT_TOKEN')
at extension.js
const { Commands } = require('ext-manager')
const { ExtensionCommand } = Commands
module.exports = new ExtensionCommand({
...CommandProperty
})
at the main file
const { Bot } = require('ext-manager')
const bot = new Bot({
...BotParameters
})
bot.loadExtension('eval.js')
bot.login('BOT_TOKEN')
at eval.js
const { Commands } = require('ext-manager')
const { EvalCommand } = Commands
module.exports = new EvalCommand({
...CommandProperty
})