这是我的代码,当我运行命令时,它不会发送消息。我正确设置了命令处理程序
const fs = require('fs');
module.exports = {
name: 'accept',
description: 'Accept',
execute(message, args) {
mentiondm = message.mentions.users.first();
message.channel.bulkDelete(1);
if (!message.member.roles.cache.some((role) => role.name === 'Owner'))
return message.channel.send('Beep Boing: This command is way too powerful for you to use!');
if (mentiondm == null) return message.reply('Beep Boing: No user to send message to!');
mentionMessage = message.content.slice(3);
mentiondm.send(mentionMessage);
console.log('Message Sent!');
},
};这不会以任何方式对用户进行DM或响应。有什么想法吗?
发布于 2021-11-10 04:29:13
首先,如果没有指定用户,mentiondm将不是null,而是返回undefined。因此,您可以执行if (!mentiondm),而不是执行if (mentiondm == null)。
也可以尝试检查控制台中的错误。如果弹出一个显示Cannot send message to this user的错误,这意味着用户的DM被阻止了,所以您应该抓住这个承诺。例如,mentiondm.send("Some content").catch(e => { console.log(e.message) })
机器人不发送消息的另一个原因可能是它没有删除消息的权限(message.channel.bulkDelete(1))。这通常会抛出一个错误,说缺少权限或类似的东西。同样,你也可以做message.delete() (如果机器人有权限的话),而不是以这种方式删除消息,它的作用与此类似。
如果没有弹出错误,则可能是您的函数参数的顺序错误。假设在你的主文件中,你做了execute(client, message, args),在这里,message是client,args是message。因此,请确保它们是有序的。
https://stackoverflow.com/questions/69905928
复制相似问题