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

Discord.js v14迁移报错:TypeError: Intents is not a constructor

Discord.js v14 迁移:Intents 构造函数报错解决

错误原因

Discord.js v14 彻底移除了旧版本的Intents构造函数,改用GatewayIntentBits枚举类定义网关意图,你沿用v9的旧写法,才触发了TypeError: Intents is not a constructor错误。

代码修正方案

步骤1:清理冗余导入并使用正确API

移除无效的Intents导入,合并重复的discord.js模块导入,改用GatewayIntentBits配置意图:

const fs = require('fs')
const ms = require('ms')
const moment = require('moment')
const mongoose = require('mongoose')
// 一次性解构导入所需的discord.js组件
const { Client, GatewayIntentBits, Partials, Collection, EmbedBuilder } = require('discord.js');

// 推荐方式:用枚举值数组声明所需意图(直观且易维护)
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds, // 服务器相关基础操作
    GatewayIntentBits.GuildMessages, // 服务器消息事件
    GatewayIntentBits.MessageContent, // 读取消息内容(需在开发者门户开启特权意图)
    // 按需添加其他你需要的意图,比如GuildMembers、DirectMessages等
  ],
  partials: [Partials.Channel, Partials.Message] // 根据机器人功能需求添加Partial类型
});

const config = require('./storage/config.json')
client.commands = new Collection()

const Logs = require('./models/logs.js')

可选:保留数字意图值的兼容写法

如果你想继续使用数字7796指定意图组合,可以借助BitField处理:

const { Client, GatewayIntentBits, BitField } = require('discord.js');

const client = new Client({
  intents: new BitField(GatewayIntentBits, 7796)
});

额外注意事项

  • v14中MessageEmbed已更名为EmbedBuilder,代码中所有创建嵌入消息的地方都需要替换为new EmbedBuilder()。
  • 部分敏感意图(如MessageContent、GuildMembers)需要在Discord开发者门户的机器人设置中手动开启「特权网关意图」,否则机器人无法正常接收相关事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:55:18