首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DM命令不会使用DM用户

DM命令不会使用DM用户
EN

Stack Overflow用户
提问于 2021-11-09 22:36:16
回答 1查看 38关注 0票数 0

这是我的代码,当我运行命令时,它不会发送消息。我正确设置了命令处理程序

代码语言:javascript
复制
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或响应。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 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),在这里,messageclientargsmessage。因此,请确保它们是有序的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69905928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档