Discord.js开发报错:TypeError无法读取null的id属性求助
错误排查:TypeError: Cannot read properties of null (reading 'id')
你的代码片段:
const { options, guildId, member } = interaction; const role = options.getRole("role"); const description = options.getString("description"); const emoji = options.getString("emoji"); const newRole = { roleId: role.id, roleDescription: description || "No Description", roleEmoji: emoji || "", }
报错信息:
/Users/surendrasah/Desktop/MonDisTech/Commands/Roles/AddRole.js:42
roleId: role.id,
^
TypeError: Cannot read properties of null (reading 'id')
at Object.execute
错误原因
role变量的值为null,导致访问role.id时触发类型错误。options.getRole("role")返回null通常有以下几种可能:
- 命令注册时,
.addRoleOption的name参数和代码中getRole传入的"role"不匹配 - 命令注册时未将该角色参数设为必填(
setRequired(true)),执行命令时用户未传入角色参数 - 执行命令时用户选择的角色无效或不存在
解决方案
检查命令注册配置
确保.addRoleOption的name为"role",且设为必填:.addRoleOption(option => option.setName("role") .setDescription("指定要配置的角色") .setRequired(true) )添加null值校验
在代码里先判断role是否有效,避免直接访问id:const role = options.getRole("role"); // 校验角色是否存在 if (!role) { await interaction.reply({ content: "请选择一个有效的角色!", ephemeral: true }); return; } // 后续代码正常执行 const newRole = { roleId: role.id, roleDescription: description || "No Description", roleEmoji: emoji || "", }验证命令执行流程
确保执行命令时确实选择了服务器内存在的角色,没有跳过参数输入。
内容的提问来源于stack exchange,提问作者technology power
相关产品推荐
相关产品推荐

