exports.exec = async (client, message, args, level, settings, texts) => {
const user = args[0];
const text = args[1]
// Fires Error message that the command wasn't ran correctly.
if (!user) {
return client.emit('commandUsage', message, this.help);
}
// Fires Error message that the command wasn't ran correctly.
try {
const { body } = await snekfetch.get(`https://nekobot.xyz/api/imagegen?type=${user.toLowerCase() === "realdonaldtrump" ? "trumptweet" : "tweet"}&username=${user.startsWith("@") ? user.slice(1) : user}&text=${encodeURIComponent(text)}`);
message.channel.send("", { file: body.message });
/* * * * */
正如您在 gif 中看到的,在这种情况下,第一个单词 (it
) 之后的任何内容都会被切片。我不知道为什么,我不确定这是否是由于 const text = args[1]
引起的。
我认为 const text = args.join ("")
根本不起作用,我也没有尝试过,但相当肯定它不会起作用。
抱歉,我是不熟悉的新手,我是discord.js的新手:/
最佳答案
这肯定是由于 args[1]
造成的,假设 args
是消息中使用的单词数组,按空格分隔,1
位置将始终只包含第二个单词。
你想要的是这样的:
const [user, ...restArgs] = args;
const text = restArgs.join(' ');
这会将第一个元素作为user
,并使用数组的其余部分作为文本,而不仅仅是第二个元素。
关于javascript - 参数在第一个单词后被切片 | Discord.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687265/