如何修复Discord.js中“TypeError: message.member.hasPermission is not a function”错误
问题解决方案
错误原因
TypeError: message.member.hasPermission is not a function 报错的核心原因是你使用的Discord.js版本为v13及以上版本,v12版本中原GuildMember.hasPermission()方法已被官方废弃移除,替换为新的权限校验API。
修复步骤
- 替换权限校验语句
将代码中
if(!message.member.hasPermission(perm))
替换为:
if(!message.member.permissions.has(perm))
- 版本兼容注意事项
如果你使用的是Discord.js v14及以上版本,原有的全大写下划线分隔的权限常量标识已改为驼峰式枚举,你的validPermissions数组需要对应调整,示例:
const validPermissions = [ "CreateInstantInvite", "KickMembers", "BanMembers", "Administrator", "ManageChannels", "ManageGuild" ]
修改后完整参考代码
const validPermissions = [ // v13及以下用全大写下划线格式,v14及以上替换为上面的驼峰格式 "CREATE_INSTANT_INVITE", "KICK_MEMBERS", "BAN_MEMBERS", "ADMINISTRATOR", "MANAGE_CHANNELS", "MANAGE_GUILD", ] if(command.permissions.length){ let invalidPerms = [] for(const perm of command.permissions){ if(!validPermissions.includes(perm)){ return console.log(`Invalid Permissions ${perm}`); } // 修复后的权限校验行 if(!message.member.permissions.has(perm)){ invalidPerms.push(perm); } } if (invalidPerms.length){ return message.channel.send(`Missing Permissions: \`${invalidPerms}\``); } }
内容的提问来源于stack exchange,提问作者XZen
相关产品推荐
相关产品推荐

