将Discord Bot从v13升级到v14时出现action_type类型转换错误
Discord.js v13 升级到 v14 报错
action_type [NUMBER_TYPE_COERCE]: Value "ROLE_UPDATE" is not int 解决方法 错误核心原因:Discord.js v14 对审计日志操作类型(AuditLogAction)的校验逻辑严格化,v13中允许直接传入字符串如
"ROLE_UPDATE",但v14要求必须使用对应的整数枚举值或枚举成员,不再接受字符串类型的action_type参数。具体修复步骤:
- 定位代码中调用审计日志相关方法(比如
fetchAuditLogs)时传入action_type: "ROLE_UPDATE"的位置。 - 替换为 v14 支持的写法:
- 方式一:直接使用对应整数
await guild.fetchAuditLogs({ type: 31 }); // 31 是 ROLE_UPDATE 对应的枚举值 - 方式二:导入并使用AuditLogAction枚举(更易读)
const { AuditLogAction } = require('discord.js'); // 调用时替换为枚举成员(驼峰命名) await guild.fetchAuditLogs({ type: AuditLogAction.RoleUpdate });
- 方式一:直接使用对应整数
- 全局检查代码中其他审计日志操作类型(如
CHANNEL_CREATE、MEMBER_BAN_ADD等),统一替换为对应的枚举值或驼峰式枚举成员,避免同类错误重复出现。
- 定位代码中调用审计日志相关方法(比如
内容的提问来源于stack exchange,提问作者anis2dev
相关产品推荐
相关产品推荐

