【问题标题】:TypeError: Class extends value Command is not a constructor or null - node.jsTypeError:类扩展值命令不是构造函数或 null - node.js
【发布时间】:2021-04-15 02:21:36
【问题描述】:

我尝试发出!warn 命令,这样我就可以警告我服务器中的人,如果您有 2 个警告,您会获得静音等。

当我完成时,只剩下 1 个错误。我尝试了很多东西,但我就是想不通,每一个帮助都会很棒。

完全错误:

 TypeError: Class extends value Command is not a constructor or null
   at Object.<anonymous> (/app/server.js:297:12)
   at Module._compile (internal/modules/cjs/loader.js:759:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
   at Module.load (internal/modules/cjs/loader.js:628:32)
   at Function.Module._load (internal/modules/cjs/loader.js:555:12)
   at Function.Module.runMain (internal/modules/cjs/loader.js:826:10)
   at internal/main/run_main_module.js:17:11

代码:

const ms = require("ms");

class Warn extends ("Command") {
constructor(client) {
    super(client, {
        name: "warn",
        description: "Command om een gebruiker te waarschuwen",
        usage: "warn",
        category: "System",
        permLevel: "Moderator"
    });
}

async run(message, args) {
try {
    const warnedUser = message.guild.member(
        message.mentions.users.first() || message.guild.members.get(args[0])
    );
    if (!warnedUser) return message.channel.send("Deze gebruiker bestaat niet");

    const warnToAdd = 1;
    const warnToDel = 4;
    const reason = args.join(" ").slice(22);

    this.client.warns.ensure(`${warnedUser.id}`, {
        warnings: 0
    });

    let userWarnings = this.client.warns.get(`${warnedUser.id}`, "warnings");
    userWarnings += warnToAdd;

    this.client.warns.set(`${warnedUser.id}`, userWarnings, "warnings");

    message.delete();

    if (this.client.warns.get(`${warnedUser.id}`, "warnings") == 1) {
        message.channel.send(`${warnedUser}, eerste waarschuwing (reden: ${reason})`);
    } else if (this.client.warns.get(`${warnedUser.id}`, "warnings") == 2) {
        const muteRole = message.guild.roles.find(x => x.name === "muted");
        if (!muteRole) message.guild.createRole("name", "muted");
        message.channel.send(
            `${warnedUser}, tweede waarschuwing (reden: ${reason})`
        );
        const muteTime = "1h";
        await warnedUser.addRole(muteRole.id);
        message.channel.send(
            `${warnedUser} is gemuted voor ${muteTime} (reden: ${reason})`
        );

        setTimeout(function() {
            warnedUser.removeRole(muteRole.id);
            message.channel.send(`De gebruiker ${warnedUser} is niet meer gemuted!`);
        }, ms(muteTime));

        } else if (this.client.warns.get(`${warnedUser.id}`, "warnings") == 3) {
            message.channel.send(`${warnedUser}, derde waarschuwing (reden: ${reason})`);
            message.channel.send(`:warning: Pas op ${warnedUser}, bij 4 waarschuwingen krijg je een kick`);
        } else if (this.client.warns.get(`${warnedUser.id}`, "warnings") == 4) {
            message.channel.send(`${warnedUser}, vierde waarschuwing, veel plezier met je kick (reden: ${reason})`);
            warnedUser.kick(reason);
            userWarnings -= warnToDel;
        }
    } catch (e) {
        console.log(e);
    }
}
}

module.exports = Warn;

如果有人可以帮助我,那就太棒了。 还有一点让我很吃惊的是,当我把这段代码放到Visual Studio Code中时,并没有报错,但是当我把它放到glitch.com中时,却出现了这个错误。

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    应该是class Warn extends Command,而不是class Warn extends ("Command")。我认为,您尝试从 Discord.js Commando 扩展 Command 类。

    你只能扩展类,不能扩展字符串。

    另外,请确保在文件中导入类:

    const { Command } = require('discord.js-commando');
    const ms = require("ms");
    
    class Warn extends Command {
      constructor(client) {
        super(client, {
          name: "warn",
          ...
    

    【讨论】:

    • 需要先导入。我刚刚更新了我的帖子。
    • 然后我得到另一个错误(对不起我所有的问题)
    猜你喜欢
    • 2020-09-15
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2022-01-22
    • 2021-10-28
    • 2019-02-16
    相关资源
    最近更新 更多