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}`); // 后续命令逻辑... });
额外说明
- 若遇到服务器已存在但
premiumSubscriptionCount仍无法获取的情况,可尝试强制获取最新服务器数据:
const guild = await interaction.guild.fetch(); console.log(`Boost count: ${guild.premiumSubscriptionCount}`);
- 已开启Guilds意图的情况下,无需调整意图配置,问题核心是未处理非服务器环境的命令执行场景。
内容的提问来源于stack exchange,提问作者Austin4606
相关产品推荐
相关产品推荐

