Discord.js打印出ReferenceError:命令未定义

时间:2019-10-19 11:24:50

标签: javascript node.js discord.js

我对编程很陌生,我想我会四处乱逛,并尝试使用discord.js编写一个Discord机器人来与我的朋友们搞乱。 不幸的是,尽管我遇到了一些错误,但完整的日志附在下面(UnhandledPromiseRejectionWarning:ReferenceError:命令未定义)

这是完整的代码:

const BotName = "name"; // Name
const Token = "token"; // Token
const SpamMessage = "hello"; // Message
const YourDiscordID = 398561449078685717; // My discord ID 

// Actual bot code

const Discord = require("discord.js");
const prefix = "-";

const bot = new Discord.Client({disableEveryone: true});

bot.on("ready", async () => {
 bot.user.setActivity("Getting Things Ready", "https://twitch.tv/")

 console.log(`${BotName} Loaded!`);

 try {
     let link = await bot.generateInvite(["ADMINISTRATOR"]);
     console.log(link);
 } catch(e) {
     console.log(e);
 };
});

bot.on("message", async message => {
 if(message.author.bot) return;

 if(!command.startsWith(prefix)) return;

     if(command === `${prefix}spam`) {
         if(!message.author.id === YourDiscordID) return;
         let Ping = message.mentions.users.first();
         setInterval(function(){
             Ping.send(SpamMessage)
         },
             1200
         );
     };
});

bot.login(Token);

我希望收到“就绪!”在让僵尸程序加入我的服务器后,在控制台中进入僵尸程序,而是将其卡在带有登录URL的消息中,如果我在不和谐状态下键入命令(-spam),则会出现以下错误。

Full console log

1 个答案:

答案 0 :(得分:0)

当您的漫游器收到类型为message的事件时,它将调用您的回调,并且在您的回调内部您仅会收到message,因此command当然是未定义的。通过一些例子,我相信应该是这样的:

const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();

Here是完整的示例,建议您检查一下。