отправить DM пользователю, указанному командой arg в discord.js

#discord.js

#discord.js

Вопрос:

Я создаю бота для своего сервера и хочу, чтобы он отправлял DM пользователю, о котором я знаю, message.author.send("Your message here.") но я хочу, чтобы это было сделано с помощью команды. Например !dm {user} {message} . как мне это сделать?

Ответ №1:

После того, как вы проанализируете свои аргументы, вы можете использовать этот код в своей команде (убедитесь, что он находится внутри асинхронной функции).

 let mention = args[1].match(/^<@!?(d )>$/)[1];
if (!mention) return message.channel.send('Invalid user.');

let recipient = await client.fetchUser(mention);
recipient.send(args.slice(2));
  

Комментарии:

1. что такое асинхронная функция

2. Он должен быть объявлен с помощью async function(bot, message) { or async (bot, message) => { (ES6).

3. На самом деле вам не нужно самостоятельно настраивать регулярное выражение упоминания, вы также можете использовать: message.mentions.users.first() , но в то же время message.mentions.users не гарантируется сортировка, так что это может быть хорошим обходным путем для этого

4. Если вы разрешите упомянуть своего бота в качестве другого префикса (настоятельно рекомендуется), первым упоминанием будет бот, а не пользователь, и это просто ад, чтобы разобраться.