Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Discord.js打印出引用错误:未定义命令_Javascript_Node.js_Discord.js - Fatal编程技术网

Javascript Discord.js打印出引用错误:未定义命令

Javascript Discord.js打印出引用错误:未定义命令,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我对编程还很陌生,我想我会胡闹一下,试着用discord.js编写一个discord机器人来搞乱我的朋友。 不幸的是,虽然我收到了一些错误,但下面附加了完整的日志(未处理的PromisejectionWarning:ReferenceError:command未定义) 以下是完整的代码: const BotName = "name"; // Name const Token = "token"; // Token const SpamMessage = "hello"; // Message c

我对编程还很陌生,我想我会胡闹一下,试着用discord.js编写一个discord机器人来搞乱我的朋友。 不幸的是,虽然我收到了一些错误,但下面附加了完整的日志(未处理的PromisejectionWarning:ReferenceError:command未定义)

以下是完整的代码:

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加入我的服务器后,在控制台中收到“Ready!”,而不是在带有登录URL的消息上,如果我在discord上键入命令(-spam),我会得到下面列出的错误


当您的bot接收到消息类型的事件时,它会调用您的回调,并且在回调中您只会收到
消息
,因此
命令
当然是未定义的。通过一些例子,我认为应该是这样的:

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

是完整的示例,我建议查看。

因此,虽然这确实解决了问题,但不幸的是,它带来了一个新的问题。我将您建议的代码片段粘贴在我的其他常量下(将消息更改为垃圾邮件消息)。我现在收到的错误是:
const args=SpamMessage.content.slice(config.prefix.length).trim().split(+/+/g);^TypeError:无法读取undefined at对象的属性“slice”。
此错误表示您的
SpamMessage.content
返回
undefined
,调试它以查看返回的内容。在进行切片和尝试一次性完成所有操作之前,请尝试接收任何消息,然后尝试发送随机消息,然后从那里开始,一步一步地进行,而不是在第一次游泳时跳入深水,希望这会有所帮助!