Intentar obtener una identificación de usuario con expresiones regulares y luego enviarles un dm. No funciona en absoluto. Los argumentos serán como !DM @usermention.
const { MessageMentions: { USERS_PATTERN } } = require('discord.js'); const Discord = require("discord.js"); const Command = require("../Structures/Command.js"); module.exports = new Command({ name: "DM", description: "Will DM given author", async run(message, args, client) { const matches = String(args).match(USERS_PATTERN); if (!matches) return; const id = matches[1]; client.users.fetch(id).then(dm => { dm.send("Hello"); }) } })Está convirtiendo la matriz en una cadena antes de hacer coincidir, lo que debería funcionar bien, pero no estoy seguro de que sea lo que desea.
Entonces obtienes la segunda coincidencia con matches[1] en lugar de la primera.
Y luego está utilizando la coincidencia, formateada como <@XXXXXXXX> como una identificación, que se supone que es numérica.
Sugeriría reemplazar todo eso simplemente con:
async run(message, args, client) { message.mentions.users.first().send('Hello'); }esto obtiene la primera mención de usuario en el mensaje y dms al usuario 'Hola'