ext-manager
A package to manage extensions for event listeners or discord bot commands with ease!
How to use? Easy!
Install using NPM
npm install ext-manager
Example of using event 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')
eventEmitter.emit('test', 'TEST!')
eventManager.reloadExtension('ext.js')
eventManager.unloadExtension('ext.js')
at ext.js
module.exports = {
name: 'test',
once: true,
main(str) {
console.log(str)
}
}
Example of using bot
at the main file
const { Bot } = require('ext-manager')
const bot = new Bot({
prefix: '!',
respondBot: false,
ownerBypass: true,
insensitive: true,
filters: []
})
bot.loadExtension('commands.js')
bot.loadExtension('memberjoin.js')
bot.login('BOT_TOKEN')
at commands.js
module.exports = {
type: 'command',
name: 'ping',
description: 'show the bot ping.',
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`)
}
}
at memberjoin.js
module.exports = {
type: 'event',
name: 'guildMemberAdd',
async main(member) {
const channel = member.guild.channels.cache.first()
await channel.send(`A member has joined, the name is ${member.user.tag}`)
}
}
Methods
loadExtension(String)
reloadExtension(String)
unloadExtension(String)
You can put events or commands in an array to make it as a group
example
module.exports = [{
name: 'test',
once: true,
main(str) {
console.log(str)
}
}, {
name: 'error',
main(err) {
console.error('An error occured', err)
}
}]
EventManager parameters
new EventManager(eventEmitter)
Bot parameters
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
})
Event property
module.exports = {
type: 'event',
name: String,
once: Boolean,
main: Function
}
Command property
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
}
Notes
- Node version must be not less than v10.x to avoid any bugs
- Discord.js version must be 12.x or so
Example of adding help command
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
})
Example of adding extension command
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
})
Example of adding eval command
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
})