discord.js开发仪表盘报Invalid bitfield flag or number: 37035584错误如何解决
问题根因
报错触发在new perms(guild.permissions)这一行,Discord OAuth2接口返回的服务器权限字段是字符串格式的数字,而discord.js的Permissions构造函数要求传入BigInt类型的权限位,直接传入字符串或普通数字就会识别为无效位域,抛出该错误。你报错里的37035584本身是合法的Discord权限位,仅存在类型不匹配问题。
修复方案
修改dashboard.ejs中的对应代码,将权限值转为BigInt类型后再传入构造函数,可额外增加容错逻辑避免单个服务器权限异常导致整个页面崩溃:
<div class="servers"> <% user.guilds.forEach(guild => { let guildPermissions; // 兼容字符串/数字类型的权限值,增加异常捕获容错 try { guildPermissions = BigInt(guild.permissions); } catch (err) { // 权限无效直接跳过当前服务器 return; } const permsOnGuild = new perms(guildPermissions); if(!permsOnGuild.has("MANAGE_GUILD")) { return; } %>
内容的提问来源于stack exchange,提问作者Nicky
相关产品推荐
相关产品推荐

