javascript - 让 Discord 机器人命令不区分大小写?
问题描述
我为我的不和谐机器人创建了一个“roleinfo”命令。我不确定如何使角色搜索不区分大小写。请参阅下面的代码:
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。)
这个想法是.toLowerCase()
在查看角色名称的两个过滤语句中使用,既在全局角色列表中,也在每个成员角色列表中。
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);
};
推荐阅读
- routes - 如何检查用于调用页面/组件的路由?
- flutter - 地理定位器包不起作用,颤振
- typescript - NestJS 使用 .env 和 @nestjs/config 设置 TypeOrm 连接
- react-native - 如何在 React Native 中使用 Firebase 实现 Microsoft 登录?
- java - 使用 com.sun.tools 附加到当前 VM
- android - Tasks.await(task) 显示不适当的阻塞方法调用警告
- php - 导入用分号分隔并用引号分隔的 CSV
- html - HTML5 输入的“min”属性不会使日历的过去日期变灰
- openldap - 为 ldapjs 服务器端排序创建客户端控制对象
- azure-devops - 链接 Azure DevOps CI 和 CD yaml 管道