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

NodeJS Discord机器人获取服务器Boost级别报错求助

解决Discord机器人获取服务器Boost数据时的Null错误

问题根源

错误TypeError: Cannot read properties of null (reading 'premiumSubscriptionCount')的核心原因是**interaction.guild为null**。当用户在Discord私信(DM)中执行机器人命令时,不存在对应的服务器(Guild)对象,此时直接访问interaction.guild的属性就会抛出该错误。

解决方案

在执行任何依赖服务器对象的逻辑前,先判断interaction.guild是否存在,同时调整延迟回复的时机避免无效操作:

client.on('interactionCreate', async interaction => {
  if (!interaction.isCommand()) return;

  // 检查命令是否在服务器内执行
  if (!interaction.guild) {
    await interaction.reply('此命令仅支持在Discord服务器中使用,请移步服务器内执行!');
    return;
  }

  await interaction.deferReply(); // 仅在服务器环境下发送延迟回复

  const { commandName, options, guildId } = interaction;
  const userID = interaction.user.id;
  console.log(`Boost count: ${interaction.guild.premiumSubscriptionCount}`);
  // 后续命令逻辑...
});

额外说明

  1. 若遇到服务器已存在但premiumSubscriptionCount仍无法获取的情况,可尝试强制获取最新服务器数据:
const guild = await interaction.guild.fetch();
console.log(`Boost count: ${guild.premiumSubscriptionCount}`);
  1. 已开启Guilds意图的情况下,无需调整意图配置,问题核心是未处理非服务器环境的命令执行场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:03:10