Search code examples
javascriptnode.jsdiscord.jscase-sensitive

Making Discord bot command case insensitive?


I created a "roleinfo" command for my discord bot. I'm not sure how to make the role search case insensitive. See my code below:

const Discord = require("discord.js");

module.exports.run = async (bot, message, args) => {

    //Message checks
    if (!args[0]) return message.channel.send("You must specify a role name");

    //Grab args and specify as rolename
    let roleName = `${args[0]}`

    //@rolename
    let roleMention = message.guild.roles.find(roles => roles.name === roleName)

    let rolefind = message.guild.roles.find(roles => roles.name === roleName)
    if (!rolefind) return message.channel.send(`Can't find role ${args[0]}`);

    //Filter members for role
    let membersWithRole = message.guild.members.filter(member => {
        return member.roles.find(roles => roles.name === roleName);
    }).map(member => {
        return member.user.username;
    })

    let serverembed = new Discord.RichEmbed()
        .setColor("#FFD700")
        .addField("Role name", roleMention)
        .addField("Number of users with the role", rolefind.members.size)
        .addField("Users with the role", membersWithRole.join("\n"))


    message.channel.send(serverembed);
}

module.exports.help = {
    name: "roleinfo",
    usage: "``prefix`` roleinfo or ``prefix`` roleinfo rolename",
    description: "Displays detailed role information",
}

I know I have to use .toLowerCase() or .toUpperCase() but i'm not sure how/where in this scenario. Could anyone help me out? Will be greatly appreciated. Thanks in advance!


Solution

  • As you said yourself, just do

    roleMention = message.guild.roles.find(roles => roles.name.toLowerCase() === roleName.toLowerCase())
    

    That would make out of :

    'Role-name' === 'Role-NAME'
    
    'role-name' === 'role-name'