Как отправить дм пользователю с помощью команд - PullRequest
0 голосов
/ 04 октября 2019

Я пишу боту для dm определенного пользователя сообщение, которое я напишу, например, что я сделаю:

!dm @user Hi!

И бот отправит этому пользователю dm, говоря только Hi!

Это не позволяет мне, может кто-нибудь проверить мой код?

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

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Этот ответ относится только к версиям 11 и новее.


Нет необходимости обращаться к каналу DM клиента с пользователем (который долженв любом случае быть первым экземпляром). Просто используйте метод User.send() или GuildMember.send().

member.send(reason)
  .catch(console.error);
0 голосов
/ 04 октября 2019

Вы можете DM пользователя, сначала извлекая DM пользователя,

let member = message.mentions.members.first() || message.guild.members.get(args[0]);
//...
member.dmChannel.send("")

В качестве альтернативы вы можете использовать createDM() вместо.

...