【问题标题】:.addRole and .removeRole are not functions - Discord Bot Mute Case.addRole 和 .removeRole 不是函数 - Discord Bot Mute Case
【发布时间】:2020-04-21 15:31:08
【问题描述】:

我已经浏览了 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的导入有问题? 请发送帮助! 谢谢!

【问题讨论】:

  • 温迪,你承认@Syntle 解决了你的问题,习惯上接受他的回答。所以其他人知道这个问题不再开放。(点击他答案上的灰色复选标记)

标签: bots discord discord.js


【解决方案1】:

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

【讨论】:

  • 如果我想删除用户的所有角色,person.roles.remove(person.roles) 不起作用,错误类型无效,你知道这是怎么发生的吗跨度>
  • ``` TypeError [INVALID_TYPE]:提供的角色不是角色或雪花的数组或集合。在 GuildMemberRoleManager.remove (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\managers\GuildMemberRoleManager.js:127:15) ``` .etc
  • 是因为 person.roles 不是角色数组吗?如果是这种情况,我该如何改变它:(
  • 哦,那是因为您需要使用cache 来访问它们,所以请改为使用person.roles.cache
  • 非常感谢
猜你喜欢
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2021-10-22
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
相关资源
最近更新 更多