所以基本上,我现在已经为朋友的服务器使用此机器人工作了2天,因此它可以完成他希望它执行的一般操作。但是我无法让它响应我为其设置的前缀。
代码如下:
const Discord = require("discord.js");
const client = new Discord.Client();
const prefix = "$";
client.once("ready", () => {
console.log("Bot is on!");
});
client.on("message", (message) => {
if ($message.content.startWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (command === "test") {
message.channel.send("test!");
} else if (command == "youtube test") {
message.channel.send("youtube test!");
}
});
令牌位于代码的底部,但我没有将其粘贴在此处。
答案 0 :(得分:0)
您将message
称为$message
,这将不起作用,并且正确的函数名称是startsWith()
而不是startWith()
。另外,您可能要确保邮件与前缀不匹配,因此应使用!
。
将其更改为:
if(!message.content.startsWith(prefix) || message.author.bot) return;
答案 1 :(得分:0)
除了@Dwosk答案,您的问题还包括错别字
使用
$message
代替message
。
如果您使用的口译员/ linter不好,这是很常见且很难注意的。
此外,似乎您的逻辑没有按照您的意愿做。
使用
!
检查不是以前缀开头的消息以破坏功能。if(!message.content.startsWith(prefix) || message.author.bot) return;
否则,您将丢掉所有以您的前缀开头的消息;)
不要为此感到羞耻,这些错别字错误就像试图在自己的文本上找到语法错误一样,您就会失明。
这就是为什么推荐一个优秀的linter的原因,我建议您尝试Visual Studio Code,它是一个免费的开源IDE,它带有针对js语言的不错的linter,您可以随时使用社区扩展对其进行扩展,以为您提供更好的体验