首页 > 解决方案 > 如何使用命令向用户发送 dm

问题描述

我正在编写一个机器人脚本来向某个用户发送一条我写的消息,例如我会这样做:

!dm @user Hi!

机器人会向该用户发送 dm,只说你好!

它不允许我,有人可以检查我的代码吗?

if(command === "dm") {
      let member = message.mentions.members.first() || message.guild.members.get(args[0]);
      if(!member)
          return message.reply("Please mention a valid member of this server");
      let reason = args.slice(1).join(' ');
      mentionedUser.send(`${reason}`);

}

更新代码:

  if(command === "dm") {
  let member = message.mentions.members.first() || message.guild.members.get(args[0]);
  if(!member)
      return message.reply("Please mention a valid member of this server");

  let reason = args.slice(1).join(' ');
    if(!reason)
        return message.reply("Please write a message.");
  member.dmChannel.send(`${reason}`);
  message.reply(`${member.user.tag} received a message( ${reason} ) sent by:${message.author.tag}`);

  }

现在我得到这个错误:

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'send' of undefined

标签: botsdiscorddiscord.js

解决方案


此答案适用于版本 11 及更高版本。


无需与用户一起访问客户端的 DM 通道(无论如何都需要先实例化)。只需使用User.send()orGuildMember.send()方法。

member.send(reason)
  .catch(console.error);

推荐阅读