我正在尝试创建一个命令,该命令将特定角色(按名称)赋予消息作者。我现在的代码是
client.on('message', message =>{
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
const user = message.mentions.users.first();
if(command === "mod"){
let role = message.guild.roles.find(r => r.name === "test");
let member = message.mentions.members.first();
member.roles.add(role)
}
});
但是我得到的是TypeError
。
let role = message.guild.roles.find(r => r.name === "test");
^
TypeError: message.guild.roles.find is not a function
答案 0 :(得分:1)
Discord JS v12引入了管理器的概念,您将无法再在Collection
之类的数据结构上直接使用Collection#get
之类的Client#users
方法。现在,您在尝试使用收集方法之前必须直接在管理器上请求缓存。
let role = message.guild.roles.cache.find(r => r.name === "test");
答案 1 :(得分:0)
错误是在discord.js版本12中,您需要使用cache
,因此您的代码将是
let role = message.guild.roles.cache.find(r => r.name === `test`);
let member = message.mentions.members.first();
member.roles.add(role)