mxtorie-handler

1.0.8 • Public • Published

Mxtorie Handler

This module is useful to make fast commands. Advanced handler using this module : https://github.com/Jeotique/mxtorie-optimised-handler

image

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}`)
    })
}

Package Sidebar

Install

npm i mxtorie-handler

Weekly Downloads

2

Version

1.0.8

License

ISC

Unpacked Size

19.1 kB

Total Files

9

Last publish

Collaborators

  • jeotique