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

Discord.js报错TypeError: Cannot read property 'setPresence' of null如何解决?

错误产生原因
  • client.login()是异步网络请求方法,调用后需要等待Discord服务端返回登录鉴权成功的响应,才会完成client对象的初始化,赋值client.user属性。
  • 你将client.user.setPresence()代码放在client.login()之后同步执行,此时登录流程还未完成,client.user为null,调用方法自然抛出空值读取错误。
  • 额外说明:若你使用的discord.js为v13及以上版本,未配置网关意图也可能触发登录异常、client.user初始化失败的问题。
对应解决方法
  1. 调整setPresence代码的执行时机,将其移动到ready事件的回调函数内部,确保登录完成后再执行状态设置:
client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
  // 新增状态设置代码
  client.user.setPresence({ activities: [{ name: 'Test' }], status: 'online' });
});

同时删除原来在client.login()之后写的setPresence代码。

  1. 若使用discord.js v13及以上版本,需要补充以下配置:
  • 初始化Client时声明必要的网关意图:
const Discord = require('discord.js');
const client = new Discord.Client({
  intents: [
    Discord.IntentsBitField.Flags.Guilds,
    Discord.IntentsBitField.Flags.GuildMessages,
    Discord.IntentsBitField.Flags.MessageContent
  ]
});
  • 原来的message事件已废弃,替换为messageCreate事件:
client.on('messageCreate', msg => {
  // 原有逻辑保持不变
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:09:01