Discord.js角色问题

时间:2020-09-13 00:32:51

标签: discord.js

我正在尝试创建一个命令,该命令将特定角色(按名称)赋予消息作者。我现在的代码是

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

2 个答案:

答案 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)