提问者:小点点

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


我对编程还是个新手,我想我应该尝试用discord.js编写一个discord bot来惹我的朋友们。不幸的是,虽然我收到了一些错误,但下面附上了完整的日志(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);

我期待收到“准备好了!”在控制台中,让bot加入我的服务器后,它却卡在带有log in URL的消息上,如果我在discord上键入命令(-spam),我会得到下面列出的错误。

完整控制台日志


共1个答案

匿名用户

当bot收到消息类型的事件时,它会调用回调,而在回调中,您只会收到消息,因此,命令当然是未定义的。翻看一些例子,相信应该是这样的:

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

这里是完整的例子,我建议检查一下。