我如何发出命令将特定消息发送给特定人员?

时间:2020-09-19 06:29:34

标签: javascript node.js discord discord.js

只是说我对编程还很陌生,但是在尝试阅读文档几个小时后,我放弃了。

我正在尝试创建一个类似于!dm "User" "Message content"的命令,但是我无法使其正常工作,我发现了三个使我发疯的问题。

我不知道如何分隔两个参数,不知道如何指定要发送的用户,也不知道如何从参数中获取用户ID。

这是我的命令:

const Discord = require('discord.js');


module.exports.run = async (client, message, args) => {
    const A = args.join(' ')
    message.author = args.join(message.mentions.members);
    message.author.send(A)

}

但是你们看到的我不知道我在做什么,我希望你们能帮助我。

我要在dm中发送邮件。

1 个答案:

答案 0 :(得分:0)

在您的命令处理程序中,我假设您获得args的方式是 args.split(" ")

这在大多数情况下都是可行的,但是就像这里一样,当您在参数中需要空格时,它会变得很杂乱。

我建议使用下面放置的代码来获取命令字和参数

// make sure whatever your prefix is, is already defined
const prefix = "!"

const input = message.content.slice(prefix.length).trim();
const args = [];
input.match(/"[^"]+"|[\S]+/g).forEach((element) => {
    if (!element) return null;
    return args.push(element.replace(/"/g, ''));
});
console.log(args);

// get the command keyword (first word after prefix)
let cmd = args.shift().toLowerCase();


const command = client.commands.get(cmd); // get the command from the name however you stored it
command.run(client, message, args) // run the command

然后在您的命令中就可以执行

module.exports.run = async (client, message, args) => {
    // get either the user from the first mention or from a given userId
    let userToSendTo = message.guild.member(message.mentions.users.first()) || message.guild.members.cache.get(args[0])

    // args[1] contains the entire message because of the argument parsing code I gave you (above)
    userToSendTo.send(args[1])

}

以上所有代码均取决于用户以以下格式书写

!dm @user“其中包含空格的消息用引号引起来”