如果我使用这样的命令,那么它将不起作用: 角色@ Nick#0000 @角色 我该如何解决?
我尝试使用 message.mentions.members.first() ,但我认为我做错了
const Discord = require("discord.js");
module.exports.run = async (bot, message, args) => {
if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply();
let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
if(!rMember) return message.reply("nope.");
let role = args.join(" @").slice(22);
if(!role) return message.reply("nope!");
let gRole = message.guild.roles.find(`name`, role);
if(!gRole) return message.reply("nope.");
if(rMember.roles.has(gRole.id)) return message.reply("nope.");
await(rMember.removeRoles(['id', 'id']));
await(rMember.addRole(gRole.id));
try{
await rMember.send(`nope ${gRole.name}!`)
}catch(e){
}
}
module.exports.help = {
name: "role"
}
所以我现在没有任何结果。
答案 0 :(得分:0)
免责声明::我是此答案中使用的npm软件包的作者。我将其包含在内,以介绍我看到的最简单,最简单的解决方案。这个答案无意以任何方式推广软件包本身。
要检查是否提及某个参数或字符串并提取成员/角色/渠道,可以使用discord-mentions
。
const getMention = require('discord-mentions');
try {
if (!args[1]) return await message.reply('Please provide a user.');
if (!args[2]) return await message.reply('Please provide a role.');
let member;
if (getMention(args[1])) member = getMention(args[1], message.guild).member;
else member = message.guild.members.find(m => m.user.tag === args[1]);
if (!member) return await message.reply('Invalid user.');
let role;
if (getMention(args[2])) role = getMention(args[2], message.guild).role;
else role = message.guild.roles.find(r => r.name === args[2]);
if (!role) return await message.reply('Invalid role.');
// Continue on... 'member' is a GuildMember, 'role' is a Role.
} catch(err) {
console.error(err);
}