so I’m trying to make a chatbot that sends the message after the user types the prefix and the command name. The command works in general but it seems to also take in the command name. I use a command and event handler btw. This is what it looks like:
const fetch = require("node-fetch").default; module.exports = { name: 'chat', description: "chat command", execute(client, message, args){ if(!args[0]) return message.reply("To chat, do a.chat <message>"); fetch(`https://api.monkedev.com/fun/chat?msg=${message.content}&uid=${message.author.id}`) .then(response => response.json()) .then(data => { message.channel.send(data.response) }) } }
So when people do a.chat
without an arg after that, bot will respond To chat, do a.chat <message>
and when people put the message in there it seems to take the chat part in a.chat
as a ${message.content}
as well. How do I make it so it will ignore a.chat
and respond to only the things after it?
Advertisement
Answer
You can join all args array items into one sentence.
const fetch = require("node-fetch").default; module.exports = { name: 'chat', description: "chat command", execute(client, message, args){ const content = args.join(" "); if(!content) return message.reply("To chat, do a.chat <message>"); fetch(`https://api.monkedev.com/fun/chat?msg=${content}&uid=${message.author.id}`) .then(response => response.json()) .then(data => { message.channel.send(data.response) }) } }