Stack Exchange
Discord.js: Invalid bitfield flag or number: GUILDS
I'm having my first go at making a Discord bot. The code is very basic, just a bot that logs its own tag into the console upon startup:
const Discord = require("discord.js");

const TOKEN = "REDACTED"

const client = new Discord.Client({
    intents: ["GUILDS", "GUILD_MESSAGES"]
})

client.on("ready", () => {
    console.log(`Logged in as ${client.user.tag}`)
})

client.login(TOKEN)

Upon typing node index.js into the VSCode terminal, however, I am given the following error:
PS C:\Users\15055\Documents\Alt Formatter> node index.js
C:\Users\15055\Documents\Alt Formatter\node_modules\discord.js\src\util\BitField.js:168
    throw new RangeError(ErrorCodes.BitFieldInvalid, bit);
    ^

RangeError [BitFieldInvalid]: Invalid bitfield flag or number: GUILDS.
    at IntentsBitField.resolve (C:\Users\15055\Documents\Alt Formatter\node_modules\discord.js\src\util\BitField.js:168:11)
    at C:\Users\15055\Documents\Alt Formatter\node_modules\discord.js\src\util\BitField.js:163:54
    at Array.map (<anonymous>)
    at IntentsBitField.resolve (C:\Users\15055\Documents\Alt Formatter\node_modules\discord.js\src\util\BitField.js:163:40)
    at Client._validateOptions (C:\Users\15055\Documents\Alt Formatter\node_modules\discord.js\src\client\Client.js:481:41)
    at new Client (C:\Users\15055\Documents\Alt Formatter\node_modules\discord.js\src\client\Client.js:78:10)
    at Object.<anonymous> (C:\Users\15055\Documents\Alt Formatter\index.js:9:16)
    at Module._compile (node:internal/modules/cjs/loader:1112:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
    at Module.load (node:internal/modules/cjs/loader:988:32) {
  [Symbol(code)]: 11
}

Node.js v18.4.0

I have installed discord.js with the command npm i discord.js so I'm using v14.

I've just tested your code in both v12 and v13 of discord.js and there was no error at all, worked as expected.

Please change your token as you have leaked it!

Please make sure, you refresh your token as it's exposed in your last edit!

In discord.js v14, intent flags are available from GatewayIntentBits.
const { Client, GatewayIntentBits } = require('discord.js');

const client = new Discord.Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
  ]
})

List of changes:




v12/v13
v14




GUILDS
GatewayIntentBits.Guilds


GUILD_BANS
GatewayIntentBits.GuildBans


GUILD_EMOJIS_AND_STICKERS
GatewayIntentBits.GuildEmojisAndStickers


GUILD_INTEGRATIONS
GatewayIntentBits.GuildIntegrations


GUILD_INVITES
GatewayIntentBits.GuildInvites


GUILD_MEMBERS
GatewayIntentBits.GuildMembers


GUILD_MESSAGE_REACTIONS
GatewayIntentBits.GuildMessageReactions


GUILD_MESSAGE_TYPING
GatewayIntentBits.GuildMessageTyping


GUILD_MESSAGES
GatewayIntentBits.GuildMessages


GUILD_PRESENCES
GatewayIntentBits.GuildPresences


GUILD_SCHEDULED_EVENTS
GatewayIntentBits.GuildScheduledEvents


GUILD_VOICE_STATES
GatewayIntentBits.GuildVoiceStates


GUILD_WEBHOOKS
GatewayIntentBits.GuildWebhooks


DIRECT_MESSAGES
GatewayIntentBits.DirectMessages


DIRECT_MESSAGE_TYPING
GatewayIntentBits.DirectMessageTyping


DIRECT_MESSAGE_REACTIONS
GatewayIntentBits.DirectMessageReactions


N/A
GatewayIntentBits.MessageContent




the solution I've found based on the documentation is :
const { Client, GatewayIntentBits } = require("discord.js");

const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
    ]});

Hope it helps

Based on the documentation, you can't use strings for intent names, but you import them from the package, so in your case something like
const Discord = require('discord.js');

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

should do the trick.

Thank you for your reply. I did try doing this before using strings, and it throws the following error: TypeError: Cannot read properties of undefined (reading 'FLAGS')
at Object. (C:\Users\15055\Documents\Alt Formatter\index.js:10:21)
at Module._compile (node:internal/modules/cjs/loader:1112:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
at Module.load (node:internal/modules/cjs/loader:988:32)
at Module._load (node:internal/modules/cjs/loader:834:12)
...............

Using strings for intent names works perfectly fine. @Arman what version of DJs are you using?

I ran npm install discord.js whilst in my project directory only a couple of hours ago. Should be the latest version, it says up to date.
