因此,从昨天开始,我的机器人无法发送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.send
或message.member.send
,同样的问题,我收到DM,然后收到错误消息。
答案 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);
})