javascript - 使 Discord 机器人命令不区分大小写?

标签 javascript node.js discord.js case-sensitive

我为我的不和谐机器人创建了一个“roleinfo”命令。我不知道如何使 Angular 色搜索不区分大小写。请参阅下面的代码:

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",
}

我知道我必须使用 .toLowerCase() 或 .toUpperCase() 但我不确定在这种情况下如何/在哪里。有人可以帮我吗?将不胜感激。提前致谢!

最佳答案

也许这样的东西对你有用? (干编码,YMMV。)

这个想法是在两个查看 Angular 色名称的过滤语句中使用 .toLowerCase() ,无论是在全局 Angular 色列表中还是在每个成员 Angular 色列表中。

module.exports.run = async (bot, message, args) => {
  const roleName = args[0];
  //Message checks
  if (!roleName) return message.channel.send("You must specify a role name");

  const roleFind = message.guild.roles.find(roles => roles.name.toLowerCase() === roleName.toLowerCase());
  if (!roleFind) return message.channel.send(`Can't find role ${roleName}`);

  const memberNamesWithRole = [];
  message.guild.members.forEach(member => {
    if (member.roles.some(memberRole => memberRole.name.toLowerCase() === roleName.toLowerCase())) {
      memberNamesWithRole.push(member.user.username);
    }
  });

  const serverembed = new Discord.RichEmbed()
    .setColor("#FFD700")
    .addField("Role name", roleName)
    .addField("Number of users with the role", memberNamesWithRole.length)
    .addField("Users with the role", memberNamesWithRole.join("\n"));

  message.channel.send(serverembed);
};

关于javascript - 使 Discord 机器人命令不区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283960/

相关文章:

javascript - 如何同时触发多个命名空间函数?

javascript - DomContentLoaded 事件是否意味着构建 DOM 树或渲染树?

mysql - NodeJS MySQL 将查询与多个模型查询的响应连接到一个 Controller 调用

javascript - 高阶 reducer 应用于多个 reducer

javascript - 尝试将事件处理程序放入单独文件时出现 Discord.js "cannot read properties of undefined"

javascript - 尝试为我的不和谐机器人发出抽奖命令,但始终返回未定义的获胜者

javascript - Discord JS 无法清除所有反应

javascript - 有什么方法可以使交互式坐标平面的代码更简单?

javascript - 不使用 eval 创建未知大小的对象

javascript - 如何在 NestJS 中提供静态图像