You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用discord.js开发Discord机器人时遇GatewayIntentBits未定义错误

Discord.js机器人报错:GatewayIntentBits未定义

问题描述

执行node bot.js时提示GatewayIntentBits未定义,已通过解构导入该对象,从discord.io切换到discord.js后问题仍存在,相关代码:

const {Client, GatewayIntentBits, Partials} = require('discord.js');
const auth = require('./auth.json')

const bot = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent,
    ],
    partials: [Partials.Channel, Partials.Message]
})
bot.on('ready', function() {
    logger.info('Connected')
    logger.info("Logged in as: ")
    logger.info(bot.username + ' - (' + bot.id + ')')
})
bot.on('message', function(user, userID, channelID, message, evt) {
    if (message.substring(0, 1) === "!") {
        var args = message.substring(1).split(' ')
        const cmd = args[0]
        args = args.splice(1)
        console.log(args)
        switch(cmd) {
            case 'search': {
                bot.sendMessage({
                    to: channelID,
                    message: 'Coming soon..'
                })
            }
            break;
        }
    }
})

bot.login('nothin to see')

解决方案

1. 确认discord.js版本

GatewayIntentBits是discord.js v14及以上版本新增的API,若安装的是v13或更早版本,会触发未定义错误:

  • 执行npm list discord.js查看当前版本
  • 针对不同版本的处理方式:
    • 升级到最新版:执行npm install discord.js@latest,同时适配v14的核心变更:
      • 事件名message改为messageCreate,参数结构调整,示例:
        bot.on('messageCreate', (message) => {
            if (message.content.startsWith('!')) {
                const args = message.content.slice(1).split(' ');
                const cmd = args.shift();
                if (cmd === 'search') {
                    message.channel.send('Coming soon..');
                }
            }
        });
        
      • 移除不存在的bot.sendMessage方法,改用渠道对象的send方法
      • bot.username和bot.id需改为bot.user.username和bot.user.id
      • 补充定义logger(直接用console.log代替,或导入日志库)
    • 保留旧版本:将代码中的GatewayIntentBits替换为旧版的Intents.FLAGS,同时修改导入语句:
      const {Client, Intents, Partials} = require('discord.js');
      const bot = new Client({
          intents: [
              Intents.FLAGS.GUILDS,
              Intents.FLAGS.GUILD_MESSAGES,
              Intents.FLAGS.MESSAGE_CONTENT,
          ],
          partials: [Partials.Channel, Partials.Message]
      })
      

2. 修复其他潜在问题

  • 代码中logger未定义,会导致ready事件触发时报错,可直接替换为console.log
  • bot.sendMessage不是discord.js的标准方法,需改为通过渠道对象发送消息

内容的提问来源于stack exchange,提问作者TheDemonSlayerOfTheDemons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:20:26