Search code examples
javascriptdiscord.jsargs

Multiple args.split().join(" ") discord.js


So I am making a discord bot using Discord.js. In the bot, there is a command where you can do a giveaway ping and the bot will send a embed with the sponsor, prize, and message. But I need all of these different arguments to have args.slice().join(" ").


    const Discord = require('discord.js');
    module.exports = {
        name: 'giveaway',
        description: 'giveaway embed',
        execute(message, args) {

            if(!message.member.hasPermission("MENTION_EVERYONE")) return message.channel.send('You do not have permission to do this!');
        
            let sponsor = args[0];
            if(!sponsor) {
                sponsor = 'Me';
            }

            let prize = args.slice(1).split('/').join(" ");
            if(!prize) return message.reply('You need to put a prize for the giveaway! `-giveaway <sponsor> <prize> <message>`');

            let userMessage = args.slice(2).join(' ')
            if(!userMessage) {
                userMessage = 'none';
            }
                const giveawayPingEmbed = new Discord.MessageEmbed()
                .setTitle(':tada: GIVEAWAY :tada:')
                .setDescription(`Sponsor: ${sponsor} \nPrize: ${prize} \nMessage: ${userMessage}`)

                
            
        },
    };


Solution

  • As you asked for another way, here it is:

    var X = args.join(" ") //X is your message arguments - change it depending on how you run them
    if (!X) return message.channel.send("Error - No arguments");
    
    var sponsor = X.replace(new RegExp('.*' + "sponsor:"), ''); //uses regex to remove text after the word "sponsor:"
    var prize = sponsor.replace(new RegExp('.*' + "prize:"), '');
    var messageUser = sponsor.replace(new RegExp('.*' + "message:"), '');
    sponsor = sponsor.replace(prize, "").replace("prize:", "")
    prize = prize.replace(messageUser, "").replace("message:", "") //removes parts you dont want
    
    message.channel.send(sponsor);
    message.channel.send(prize);
    message.channel.send(messageUser);
    

    Please note I have not input validated

    Syntax MUST be <prefix><command name> sponsor: <sponsor name> prize: <prize> message: <message>

    e.g.:

    !giveaway sponsor: @user prize: epic prize message: epic message