DiscordJS v12 — Как я могу использовать переменные args.slice .join(» «)

#javascript #discord.js

Вопрос:

Я создаю команду, если для этого потребуется ввести 3-значный номер и комментарий, но как я могу получить и то, и другое. Например, если я запущу .onboard <@user> [call-sign] [comments] , как я могу разместить в команде как часть позывного, так и комментарии. Потому что у меня это есть прямо сейчас, как показано ниже в коде, и когда я запускаю команду, она выглядит так

 const Discord = require("discord.js")
const ms = require("ms");
const botconfig = require("../../botconfig.json");

module.exports.run = async (bot, message, args) => {
    message.delete();

    let leoRole = message.guild.roles.cache.find(role => role.id === botconfig["leo_setup"].leo_role);
    let cadetRole = message.guild.roles.cache.find(role => role.id === botconfig["leo_setup"].cadet_role);
    if (!cadetRole) return console.log("Role not found (Config: 'leo_setup - cadet_role')");
    if (!leoRole) return console.log("Role not found (Config: 'leo_setup - leo_role')");

    if(!message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].supervisor_role) amp;amp; !message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].command_role) amp;amp; !message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].high_command_role) amp;amp; !message.member.hasPermission("ADMINISTRATOR") amp;amp; !message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].asst_commish_role)) return message.channel.send('Invalid permissions.').then(msg => msg.delete({ timeout: 8000 })).catch(console.error)

    let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
    let callSign = args.slice(1).join(" ");
    let comments = args.slice(1).join(" ");
    if (!args[0]) return message.channel.send("Please put a valid member or a user ID for me to onboard").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
    if (!user) return message.channel.send("Sorry, I was unable to find this user.")
    //if (!user) return message.channel.send("Please put a valid member or a user ID for me to onboard").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
    //if (!callSign) return message.channel.send("Please enter in the call-sign.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
    if (user.roles.cache.some(role => role.id === botconfig["leo_setup"].leo_role)) return message.channel.send('This member is already Law Enforcement').then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
    if (user.id === message.author.id) return message.channel.send('Why are you trying to onboard yourself?').then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
    if (user.user.bot) return message.channel.send('You can't onboard a bot').then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
    if (user.hasPermission('ADMINISTRATOR') || user.roles.highest.rawPosition >= message.guild.me.roles.highest.rawPosition) return message.channel.send("You cannot onboard this member").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);

    if(botconfig["module_toggles"].leo_module) {
        const logEmbed = new Discord.MessageEmbed()
        .setAuthor(`LEO Onboarding Log`, botconfig["bot_setup"].embed_logo_cropped)
        .setThumbnail(botconfig["bot_setup"].embed_logo_cropped)
        .setDescription(`**Onboarder:** <@${message.author.id}> nn**Cadet:** <@${user.id}>nn**Cadet ID:** ${user.id}nn**Comments:** ${comments || "No Comments"}`,)
        /*.addField(
            { name: `Onboarder:`, value: `<@${message.author.tag}>` },
            { name: `Cadet:`, value: `<@${user.name}>` },
            { name: `Cadet ID:`, value: user.id },
            { name: `Comments:`, value: comments },
        )*/
        .setFooter(message.guild.name)
        .setColor(botconfig["bot_setup"].main_embed_color)
        .setTimestamp();

        let onboardLogChannel = message.guild.channels.cache.find(channel => channel.id === botconfig["channel_setup"].onboard_log_channel);
        if (!onboardLogChannel) return console.log("Channel not found (Config: 'onboard_log_channel')");
        onboardLogChannel.send(logEmbed);
    }

    await(user.roles.add(leoRole.id));
    await(user.roles.add(cadetRole.id));


}

module.exports.help = {
    name: "onboard"
}
 

Комментарии:

1. пожалуйста, приведите пример ввода, который вам нужен, и то, что вы ожидаете в качестве вывода. например: 321 это_ис_т_коммент?

Ответ №1:

Я действительно не знаю, с чем вам нужна помощь, но почему бы не сделать

 let callsign = args[1]
let comments = args[2]
 

И если в аргументах есть пробелы, используйте»,», чтобы разделить их.

Комментарии:

1. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.

2. Извините, я не знал, как это объяснить, но это помогло, и теперь все работает, спасибо.

3. @mrzeny, пожалуйста, отметьте ответ как «ответил»