Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Discord.js On message command not working

Discord.js Problem I should point out I am not experienced at discord.js. I have the following code which is supposed to change the users requested sum or expression into the actual answer and message back. My other command is working but not the other here is the code for that:

client.once("message", msg => {
    if(msg.content.includes("!simple")){
       math = Number(msg.content.slice(msg.content.search("e")))
msg.reply(guild.username + "The answer is " + math )


    }
})

I basically remove the command part via slice method then compute the value of it using the Number function and subsequently return it but I get no response from the bot. Any help appreciated


2 Answers

In the mean while Discord changed their APIs. client.on("message") is deprecated now. The working example at 2021 would look like this:

const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });

client.on("messageCreate", (message) => {
  if (message.author.bot) return false; 
  
  console.log(`Message from ${message.author.username}: ${message.content}`);
});

client.login(process.env.BOT_TOKEN);

The boot needs explicit permission to read messages. If the bot doesn't have that permission then the on messageCreate event will not be fired.

like image 152
Robert Reiz Avatar answered Jun 10 '26 10:06

Robert Reiz


i'm not to sure about what you mean with "requested sum or expression", something like this?

client.on('message', msg => {
  if (msg.content.startsWith('!simple')) {
    var tocalc = msg.content.substr(8);
    if (!tocalc.match(/^[\d\(\)\+\-\/\*e\.%=!\s]+$/)) { // allowed = ['number', '(', ')', '+', '-', '*', '/', 'e', '.', '%', '=', '!', ' ']
        msg.reply('no valid expression or calculation');
        return;
    }
    var result;
    try {
        result = Function('return ' + tocalc)();
    } catch(e) {
        console.error(`tried to exploit! ban user ${msg.author.id}!`);
        return;
    }
    if (isNaN(result)) {
        console.error(`tried to exploit! ban user ${msg.author.id}!`);
        return;
    }
    msg.reply(result);
  }
});

!simple 1 + 8 - (4 * .25) // 8
!simple 1 == 1 // true
!simple 9 % 2 != 8 % 2 // true
like image 39
Scriptkiddy1337 Avatar answered Jun 10 '26 10:06

Scriptkiddy1337



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!