我最近完成了对我的机器人的编码,但我的一位朋友注意到了这个错误,您可以在其 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!')
,但似乎不起作用。
答案 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!')
}
机器人现在将忽略自己的消息。