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}`)
},
};
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