#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) {
orasync (bot, message) => {
(ES6).3. На самом деле вам не нужно самостоятельно настраивать регулярное выражение упоминания, вы также можете использовать:
message.mentions.users.first()
, но в то же времяmessage.mentions.users
не гарантируется сортировка, так что это может быть хорошим обходным путем для этого4. Если вы разрешите упомянуть своего бота в качестве другого префикса (настоятельно рекомендуется), первым упоминанием будет бот, а не пользователь, и это просто ад, чтобы разобраться.