how do I read args in discord.js? I am trying to create a support bot and I want to have an !help {topic} command. how do I do that? my current code is very basic

const Discord = require('discord.js'); const client = new Discord.Client(); const prefix = ("!") const token = ("removed") client.on('ready', () => { console.log(`Logged in as ${client.user.tag}!`); }); client.on('message', msg => { if (msg.content === 'ping') { msg.reply('pong'); } if (msg.content === 'help') { msg.reply('type -new to create a support ticket'); } }); client.login(token); 
0

5 Answers

You can make use of a prefix and arguments like so...

const prefix = '!'; // just an example, change to whatever you want client.on('message', message => { if (!message.content.startsWith(prefix)) return; const args = message.content.trim().split(/ +/g); const cmd = args[0].slice(prefix.length).toLowerCase(); // case INsensitive, without prefix if (cmd === 'ping') message.reply('pong'); if (cmd === 'help') { if (!args[1]) return message.reply('Please specify a topic.'); if (args[2]) return message.reply('Too many arguments.'); // command code } }); 
1

you can use Switch statement instead of if (command == 'help') {} else if (command == 'ping') {}

client.on ('message', async message => { var prefix = "!"; var command = message.content.slice (prefix.length).split (" ")[0], topic = message.content.split (" ")[1]; switch (command) { case "help": if (!topic) return message.channel.send ('no topic bro'); break; case "ping": message.channel.send ('pong!'); break; } }); 
let args = msg.content.split(' '); let command = args.shift().toLowerCase(); 

this is the simplified answer from @slothiful.

usage

if(command == 'example'){ if(args[0] == '1'){ console.log('1'); } else { console.log('2'); 

You can create a simple command/arguments thing (I don't know how to word it correctly)

client.on("message", message => { let msgArray = message.content.split(" "); // Splits the message content with space as a delimiter let prefix = "your prefix here"; let command = msgArray[0].replace(prefix, ""); // Gets the first element of msgArray and removes the prefix let args = msgArray.slice(1); // Remove the first element of msgArray/command and this basically returns the arguments // Now here is where you can create your commands if(command === "help") { if(!args[0]) return message.channel.send("Please specify a topic."); if(args[1]) return message.channel.send("Too many arguments."); // do your other help command stuff... } }); 

You can do

 const args = message.content.slice(prefix.length).trim().split(' '); const cmd = args.shift().toLocaleLowerCase(); 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy