Search code examples
javascriptdiscord.jsrobloxreplit

noblox.js and discord.js, currently using discord.js and got a intent error, v13


Was watching a tutorial on making a discord.js and noblox.js bot. error is something about intents not being a constructor or whatever. tutorial playlist isnt even helpful like the discord server. im just following the tutorial to set up a bot account and some slash commands with noblox.js (a roblox js API i guess or a wrapper idk) code:

const { Client, Intents }  = require('discord.js')
const noblox = require('noblox.js')

const { Token } = require('./config.json')

// Create a new client instance
const intents = new Intents([
  'GUILDS',
  'GUILD_MEMBERS',
  'GUILD_MESSAGES'
])

const bot = new Client({ Intents : intents })


bot.login(Token)
bot.on('ready', () => {
  console.log(`${bot.user.tag} has booted up.`)
})

error:

TypeError: Intents is not a constructor
    at Object.<anonymous> (/home/runner/ImpishDefiantClasses/index.js:7:17)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)

IDE: Replit


Solution

  • First of all, You should require intents:

    const { Client, Intents } = require("discord.js");
    const { Token } = require("./config.json")
    
    const bot = new Client({
      intents: [Intents.FLAGS.GUILDS,
      Intents.FLAGS.GUILD_MEMBERS,
      Intents.FLAGS.GUILD_MESSAGES,
      Intents.FLAGS.MESSAGE_CREATE]
    });
    

    Then, the things we want to do when the bot is ready:

    bot.on('ready', () => {
      console.log(`${bot.user.tag} is now online!`)
    })
    

    Also, Make sure you put bot.login(Token) at the end of your code.

    At the end, If you want to receive messages, you need to listen to messageCreate event:

    client.on("messageCreate", async (message) => {
      if (message.author.bot) return;
      if (message.content.startsWith('!ping')) {
        message.reply('Pong!')
      }
    });
    

    So your code should look like this:

    const { Client, Intents } = require("discord.js");
    
    const bot = new Client({
      intents: [Intents.FLAGS.GUILDS,
      Intents.FLAGS.GUILD_MEMBERS,
      Intents.FLAGS.GUILD_MESSAGES,
      Intents.FLAGS.MESSAGE_CREATE]
    });
    
    bot.on('ready', () => {
      console.log(`${bot.user.tag} is now online!`)
    })
    
    client.on("messageCreate", async (message) => {
      if (message.author.bot) return;
      if (message.content.startsWith('!ping')) {
        message.reply('Pong!')
      }
    });
    
    bot.login(Token);
    

    More info on intents.