mxtorie-handler
v1.0.8
Published
An advanced handler for fast developpment
Downloads
21
Maintainers
Readme
Mxtorie Handler
This module is useful to make fast commands. Advanced handler using this module : https://github.com/Jeotique/mxtorie-optimised-handler
How to use it ?
First you will need to create a custom client
class
const {Mxtorie_Client, Command} = require('./index')
const client = new Mxtorie_Client()
client.login("") // <-- your secret token
And now you can create a command :
const myFirstCommand = new Command(client, {
name: "ping",
description: "Return the bot latency"
})
myFirstCommand.run = async(data) => {
const {message} = data
message.reply(`${client.ws.ping}ms`)
}
So for the moment we have that :
const {Mxtorie_Client, Command} = require('./index')
const client = new Mxtorie_Client()
client.login("") // <-- your secret token
const myFirstCommand = new Command(client, {
name: "ping",
description: "Return the bot latency"
})
myFirstCommand.run = async(data) => {
const {message} = data
message.reply(`${client.ws.ping}ms`)
}
If you try it you will see everything is working nice. But now we will make an advanced command :
const mySecondCommand = new Command(client, {
name: "haverole",
description: "Return if this member have this role or not",
permission: "MANAGE_ROLES", //<-- the executor will need to have this permission
noPermissionReply: "You don't have the required permission",
arguments: [
{
name: 'member', //<-- this the futur variable name in the data object
//type can be : member, role, user, channel, string(or normal)
type: 'member', //<-- will resolve and return a guildMember class with a mention or id
required: true, //<-- if required and not given the bot wil answer with the missingResponse
invalidResponse: 'The member is invalid', //<-- if the mention or the id is invalid for a member
missingResponse: 'The member is missing' //<-- if the mention or the id is missing for a member
},
{
name: 'role',
type: 'role', //<-- will resolve and return a Role class with a mention or id
required: true,
invalidResponse: 'The role is invalid',
missingResponse: 'The role is missing'
}
]
})
mySecondCommand.run = async(data) => {
const {message, member, role} = data // <-- so here we get the variables declared above
if(member.roles.cache.has(role.id)) return message.reply(`Yes \`${member.user.tag}\` have the role \`${role.name}\``)
else return message.reply(`No \`${member.user.tag}\` doesn't have the role \`${role.name}\``)
}
Now for a kick command :
myThirdCommand = new Command(client, {
name: 'kick',
aliases: ['expulse'],
description: "Will kick a member from the guild",
permission: "KICK_MEMBERS",
noPermissionReply: "You don't have the required permission",
arguments: [
{
name: 'member',
type: 'member',
required: true,
invalidResponse: 'The member is invalid',
missingResponse: 'The member is missing'
},
{
name: 'reason',
type: 'normal',
required: false,
long: true
}
]
})
myThirdCommand.run = async(data) => {
const {message, member, reason} = data
member.kick(reason ?? "no reason given").then(() => {
message.reply(`${member.user.tag} has been kicked`)
}).catch(e=>{
message.reply(`I can't kick ${member.user.tag}`)
})
}
In the variable reason
what long
property ?
+kick <@member> this is the reason
long: false
-> reason = 'this'
long: true
-> reason = 'this is the reason'
So now you have the base of the module, for any help request you can find me on my discord server
Final result :
const {Mxtorie_Client, Command} = require('./index')
const client = new Mxtorie_Client()
client.login("") // <-- your secret token
const myFirstCommand = new Command(client, {
name: "ping",
description: "Return the bot latency"
})
myFirstCommand.run = async(data) => {
const {message} = data
message.reply(`${client.ws.ping}ms`)
}
const mySecondCommand = new Command(client, {
name: "haverole",
description: "Return if this member have this role or not",
permission: "MANAGE_ROLES", //<-- the executor will need to have this permission
noPermissionReply: "You don't have the required permission",
arguments: [
{
name: 'member', //<-- this the futur variable name in the data object
//type can be : member, role, user, channel, string(or normal)
type: 'member', //<-- will resolve and return a guildMember class with a mention or id
required: true, //<-- if required and not given the bot wil answer with the missingResponse
invalidResponse: 'The member is invalid', //<-- if the mention or the id is invalid for a member
missingResponse: 'The member is missing' //<-- if the mention or the id is missing for a member
},
{
name: 'role',
type: 'role', //<-- will resolve and return a Role class with a mention or id
required: true,
invalidResponse: 'The role is invalid',
missingResponse: 'The role is missing'
}
]
})
mySecondCommand.run = async(data) => {
const {message, member, role} = data // <-- so here we get the variables declared above
if(member.roles.cache.has(role.id)) return message.reply(`Yes \`${member.user.tag}\` have the role \`${role.name}\``)
else return message.reply(`No \`${member.user.tag}\` doesn't have the role \`${role.name}\``)
}
myThirdCommand = new Command(client, {
name: 'kick',
aliases: ['expulse'],
description: "Will kick a member from the guild",
permission: "KICK_MEMBERS",
noPermissionReply: "You don't have the required permission",
arguments: [
{
name: 'member',
type: 'member',
required: true,
invalidResponse: 'The member is invalid',
missingResponse: 'The member is missing'
},
{
name: 'reason',
type: 'normal',
required: false,
long: true
}
]
})
myThirdCommand.run = async(data) => {
const {message, member, reason} = data
member.kick(reason ?? "no reason given").then(() => {
message.reply(`${member.user.tag} has been kicked`)
}).catch(e=>{
message.reply(`I can't kick ${member.user.tag}`)
})
}