如果用户向机器人发送 DM,discord.js Bot 会向 DM 发送垃圾邮件

时间:2021-05-11 15:33:53

标签: node.js discord.js

我最近完成了对我的机器人的编码,但我的一位朋友注意到了这个错误,您可以在其 DM 中使用命令,最终导致机器人崩溃。所以我尝试使用以下代码来修复错误:

client.on('message', message => {

  if (message.channel.type == 'dm') {
    message.reply('Server commands only!')
  }

当有人向机器人发送 DM 时,机器人会向他们的 DM 发送垃圾邮件,而不是发送一条消息。我尝试将 message.reply('Server commands only!') 更改为 return message.reply('Server commands only!'),但似乎不起作用。

1 个答案:

答案 0 :(得分:2)

您陷入了消息循环。这样看

client.on('message', message => {
   // On every message, if it's a dm, send a message
   if (message.channel.type == 'dm') {
    // The bot is sending a message, which itself triggers a message event, which then triggers the bot to send the message again since it's a dm, and so on...
    message.reply('Server commands only!')
  }
}

机器人正在检测它自己的消息,作为回报,它会触发消息事件,并且由于它也在 dm 中,导致机器人再次发送消息。这个循环将永远持续下去。防止这种情况的方法是使用

检查用户是否是机器人
if (message.author.bot) return;

您的最终代码:

client.on('message', message => {

  if (message.author.bot) return;
  if (message.channel.type == 'dm') {
    return message.reply('Server commands only!')
  }

机器人现在将忽略自己的消息。