Discord.js 打印出 ReferenceError: command is not defined

Posted

技术标签:

【中文标题】Discord.js 打印出 ReferenceError: command is not defined【英文标题】:Discord.js printing out ReferenceError: command is not defined 【发布时间】:2020-02-16 04:17:01 【问题描述】:

我对编程很陌生,我想我会搞砸并尝试使用 discord.js 编写一个不和谐机器人来搞乱我的朋友。 不幸的是,虽然我遇到了一些错误,但完整的日志附在下面(UnhandledPromiseRejectionWarning: ReferenceError: command is not defined)

这里是完整的代码:

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 === `$prefixspam`) 
         if(!message.author.id === YourDiscordID) return;
         let Ping = message.mentions.users.first();
         setInterval(function()
             Ping.send(SpamMessage)
         ,
             1200
         );
     ;
);

bot.login(Token);

我希望收到“Ready!”在让机器人加入我的服务器后在控制台中,而不是它卡在带有登录 URL 的消息上,如果我在不和谐上键入命令 (-spam),我会收到下面列出的错误。

Full console log

【问题讨论】:

【参考方案1】:

当您的机器人收到消息类型的事件时,它会调用您的回调,并且在您的回调中您只会收到message,所以command 当然是未定义的。通过一些例子,我认为应该是这样的:

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

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

【讨论】:

虽然这确实解决了问题,但不幸的是,它带来了一个新问题。我将您建议的代码 sn-p 粘贴在我的其他常量下(将消息更改为 spamMessage)。我现在收到的错误是:const args = SpamMessage.content.slice(config.prefix.length).trim().split(/ +/g); ^ TypeError: Cannot read property 'slice' of undefined at Object.<anonymous> 这个错误意味着你的SpamMessage.content返回undefined,调试它看看它返回什么。在进行切片并尝试一次完成所有操作之前,尝试接收任何消息,然后尝试发送随机消息,然后从那里继续,一步一步地进行,而不是在第一次游泳时跳到深水区,希望对您有所帮助!

以上是关于Discord.js 打印出 ReferenceError: command is not defined的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js:机器人应该提到执行命令的用户

从函数中导出数据 [mysql, node.js, discord.js]

如何设置无法踢出具有更高角色的成员 - Discord.js

discord.js 我的代码不起作用,在终端中显示 typeError 但我不知道出了啥问题

Discord bot TypeError:client.guilds.forEach不是函数

读取文件附件(例如;.txt 文件)- Discord.JS