discord.js bot回复自己

时间:2017-09-11 13:33:51

标签: javascript node.js bots discord discord.js

我目前正在编写我的第一个discord bot,它已经可以播放YouTube音乐了。

if (message.content.includes("Good Job") || 
    message.content.includes("good job")) {
    message.channel.sendMessage("Good Job everyone :smirk:");
}

如你所见,如果有人打字,那么好工作" (这只是一个例子)然后机器人将回答"好工作每个人:smirk :),然后垃圾邮件将开始:机器人读取他自己的消息并回复它。

如何防止机器人自行回答?

5 个答案:

答案 0 :(得分:15)

在消息事件中使用此项:

"test1","test2","test3","test4","test5"

了解更多信息: https://anidiotsguide.gitbooks.io/discord-js-bot-guide/coding-guides/a-basic-command-handler.html

答案 1 :(得分:4)

您的机器人回复自己的原因是因为您放置的位置:

  

if(message.content.includes(“Good Job”)||       message.content.includes(“good job”))

如果一段文字包含“好工作”或“好工作”,基本上是检查聊天。你的机器人发送:

  

message.channel.sendMessage(“Good job everyone:smirk:”);

作为答案,它会创建一个循环,因为该消息包含单词 “Good Job”,基本上是一次又一次地运行代码。

当然,解决这个问题的最简单方法是让你改变答案,不要包含 Good Job 这两个词,但有更好的解决方案可以确保它不会发生你可能做的所有命令。

正如@Jörmungandr所说,在消息事件中包括:

  

if(message.author.bot)return;

确保不会发生。它基本上检查消息的作者是否是机器人,如果是,则忽略它。

答案 2 :(得分:0)

您只需检查发送邮件的用户是否为机器人。例如:

if (!msg.author.bot) {
    <Your code to execute if the user is not a bot.>
} 

希望这很有帮助,谢谢!

答案 3 :(得分:0)

// In message event
if(message.author.id === client.user.id) return;

// I would recommend a variable like this for splits on words
// const args = message.content.trim().split(/\s+/g); 
// You could also .slice() off a prefix if you have one

if(/good job/i.test(message.content)) {
  message.channel.send('Good job everyone :smirk:'); // sendMessage is deprecated, use send instead
}

答案 4 :(得分:0)

如果作者是机器人,则可以使用以下代码避免执行任何操作:

if(message.author.bot) return;