我的Discord.js漫游器在尝试发送DM时出错。

时间:2020-07-04 17:47:17

标签: javascript discord.js

因此,从昨天开始,我的机器人无法发送DM,而没有收到错误。 它实际上将消息发送到用户的DM,但是它也通过.catch接收到此错误:

DiscordAPIError: Cannot send messages to this user
    at RequestHandler.execute (D:\Users\me\Discord\mybot\node_modules\discord.js\src\rest\RequestHandler.js:170:25)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
  code: 50007,
  httpStatus: 400
}

我的机器人似乎没有被列入黑名单或类似的东西都可能导致此错误。

这是 synchronous (可能是问题,但我不知道怎么回事)发生错误时的代码(我简化了代码并删除了很多东西,但我仍然遇到400 Bad请求):

client.on('message', message => {
    message.member.user.send(message.content).catch(console.error);
})

我也尝试过message.author.sendmessage.member.send,同样的问题,我收到DM,然后收到错误消息。

1 个答案:

答案 0 :(得分:1)

您的代码不会检查邮件作者是否是机器人。

client.on('message', message => {
    message.member.user.send(message.content).catch(console.error);
})

因此,僵尸程序向您发送消息后,message事件会检测到您在DM中(从僵尸程序中)收到的消息,并且僵尸程序会尝试向自己发送消息。

修复:

client.on('message', message => {
    if (message.author.bot) return false // Checking if the message author is a bot.
    message.member.user.send(message.content).catch(console.error);
})