首页 > 解决方案 > .addRole 和 .removeRole 不是函数 - Discord Bot Mute Case

问题描述

我已经浏览了 Stack Overflow 上的所有相关主题并尝试了所有内容,但这些代码不起作用:) 所以我正在关注关于如何在 Discord 上使用机器人静音成员的 YouTube 教程,这是错误:

TypeError: person.removeRole is not a function
at Client.<anonymous> (C:\Users\hp\Documents\discordBot\Codes\index.js:39:14)
    at Client.emit (events.js:311:20)
    at MessageCreateAction.handle (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)    at WebSocketManager.handlePacket (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
    at WebSocket.onMessage (C:\Users\hp\Documents\discordBot\Codes\node_modules\ws\lib\event-target.js:120:16)
    at WebSocket.emit (events.js:311:20)
    at Receiver.receiverOnMessage (C:\Users\hp\Documents\discordBot\Codes\node_modules\ws\lib\websocket.js:801:20)

这是我的代码,如果有必要,其他部分被删除,我可以把它们放在这里。

case "mute":
      let person = m.mentions.members.first() || m.guild.members.fetch(args[1]); //m.guild.member(
      //console.log(person);
      if (!person) return m.reply("I don't know who this is, bro.");

      let mainrole = m.guild.roles.cache.find((role) => role.name === "Main");
      let muterole = m.guild.roles.cache.find((role) => role.name === "Mute");

      if (!muterole) return m.reply("Sorry they simply don't exsit.");

      let time = args[2];
      console.log(time);
      if (!time) return m.reply("That's not a time. How did you even do it?");

      person.removeRole(mainrole.id);
      person.addRole(muterole.id);
      // person.remove("Main");
      // person.add("Mute");

      m.channel.send(
        `@${person.user.tag} has now been mute for ${ms(ms(time))}`
      );

      setTimeout(() => {
        person.addRole(mainRole.id);
        person.removeRole(muterole.id); //switching the order and see how that looks like
        m.channel.send(`@${person.user.tag} has been unmuted, good job!`);
      }, ms(time));

让我想知道ms模块或discord.js的导入是否有问题?请发送帮助!谢谢!

标签: botsdiscorddiscord.js

解决方案


从 discord.js v12 开始,您现在需要使用roles.add()androles.remove()而不是.addRole()and .removeRole()


推荐阅读