只是说我对编程还很陌生,但是在尝试阅读文档几个小时后,我放弃了。
我正在尝试创建一个类似于!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中发送邮件。
答案 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“其中包含空格的消息用引号引起来”