我正在创建Discord Bot。
我正在尝试创建一个Mute命令,但是我总是遇到相同的错误。

javascript - addRole不是函数-LMLPHP

什么地方出了错?

背景资料:

  • Discord.js版本:12.0.0-dev
  • 使用版本0.5.0-dev的Klasa

  • 码:
    const { Command } = require('klasa');
    const { MessageEmbed } = require('discord.js');
    
    module.exports = class extends Command {
    
        constructor(...args) {
            super(...args, { description: 'Mute an user.' })
        }
    
        async run(msg, args) {
            if(!msg.member.hasPermission("MANAGE_MEMBERS")) return msg.channel.send("You can't use this command.");
    
            let MuteUser = msg.guild.member(msg.mentions.users.first() || msg.guild.members.get(args[0]))
            if(!MuteUser) return msg.channel.send("Can't find user!");
    
            let MuteReason = msg.content.split(" ").slice(2).join(" ");
    
            let MuteRole = msg.guild.roles.find(r => r.name === "Spammer");
            if(!MuteRole) return msg.channel.send("Can't find the Spammer role!");
    
            let MuteChannel = msg.guild.channels.find(guild => guild.name === 'bot-logs');
            if(!MuteChannel) return msg.channel.send("Can't find the #bot-logs channel.");
    
            if(MuteUser.roles.has(MuteRole)) return msg.channel.send("That user is already muted!.");
    
            MuteUser.addRole(MuteRole.id);
    
            return MuteChannel.send(new MessageEmbed()
                .setAuthor("Mute"|| 'Unknown', "http://wolfdevelopment.cf/BotSymbols/info.png")
                .setColor("#ff0000")
                .addField("Muted User", `${MuteUser}`)
                .addField("Muted By", `<@${msg.author.id}>`)
                .addField("Muted In", `${msg.channel}`)
                .addField("Time", `${msg.createdAt}`)
                .addField("Reason", `${MuteReason}`));
        }
    }
    

    我检查了MuteUser是这一行的人:
        if(!MuteUser) return msg.channel.send("Can't find user!");
    

    所以一定是一个人。为什么没有addRole函数?

    最佳答案

    我决定从另一个 Angular 看待这个问题,并在Discord.js文档中搜索了更多信息。果然发现了一些东西:

    我假设您对msg.guild.member的调用将导致生成GuildMember,因为这就是名称的含义。

    稳定(大概是11.x):https://discord.js.org/#/docs/main/stable/class/GuildMember
    javascript - addRole不是函数-LMLPHP

    请注意,addRole是“方法”下的第一项。

    现在,切换到master(又名Development分支-从那里获得12.0.0-dev)...
    https://discord.js.org/#/docs/main/master/class/GuildMember

    javascript - addRole不是函数-LMLPHP
    addRole不再存在。

    单击roles的类型...
    https://discord.js.org/#/docs/main/master/class/GuildMemberRoleStore
    javascript - addRole不是函数-LMLPHPadd是第一种方法。

    您可能可以将MuteUser.addRole替换为MuteUser.roles.add

    注意:这不会使我在注释中的任何单词失效,因为您没有在问题本身中提供有关引发错误时MuteUser是什么类型的足够信息。

    注意2:仅进行了一次Google搜索。您什至投入了多少工作?

    关于javascript - addRole不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53580392/

    10-09 22:28