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

创建Discord机器人时触发TypeError:无法读取undefined的GUILDS属性

Discord机器人报错:TypeError: Cannot read properties of undefined (reading 'GUILDS') 解决方法

问题描述

我正在开发一个可将数据发送至Airtable的Discord机器人,该机器人会在用户加入服务器时发送用户信息。运行代码时持续报错:

TypeError: Cannot read properties of undefined (reading 'GUILDS')at Object.

原代码如下:

const { Intents } = require('discord.js');
const Discord = require('discord.js');
const Airtable = require('airtable');

const client = new Discord.Client({ 
    token: 'TOKEN_ID',
    intents: [Intents.GUILDS, Intents.GUILD_MEMBERS]
});

Airtable.configure({ apiKey: 'API_KEY' });
const base = Airtable.base('BASE_ID');

client.on('guildMemberAdd', member => {
  base('New Members').create({
    'Username': member.user.username,
    'Time Joined': new Date().toISOString()
  }, function(err, record) {
    if (err) {
      console.error(err);
      return;
    }
    console.log(`Added new record with ID ${record.getId()}`);
  });
});

client.login();

错误原因

  1. Discord.js v14版本中,Intents的访问方式变更,不再支持Intents.GUILDS这种写法,需改用GatewayIntentBits来获取意图标识。
  2. 创建Client实例时,配置对象不能直接传入token,token必须放在client.login()方法中作为参数传入。
  3. GUILD_MEMBERS意图属于特权网关意图,需要在Discord开发者后台手动开启,否则机器人无法触发guildMemberAdd事件。

修复后的代码

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

// 初始化Discord客户端
const client = new Client({ 
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMembers
    ]
});

Airtable.configure({ apiKey: 'API_KEY' });
const base = Airtable.base('BASE_ID');

client.on('guildMemberAdd', member => {
  base('New Members').create({
    'Username': member.user.username,
    'Time Joined': new Date().toISOString()
  }, function(err, record) {
    if (err) {
      console.error(err);
      return;
    }
    console.log(`Added new record with ID ${record.getId()}`);
  });
});

// 传入机器人token完成登录
client.login('TOKEN_ID');

必要操作

  • 打开Discord开发者门户,找到你的机器人应用,进入「Privileged Gateway Intents」页面,开启Server Members Intent权限。
  • 确保Discord.js版本为v14及以上,若版本过低,执行命令更新:npm install discord.js@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:35:26