Discord禁言命令如何支持直接输入原始用户ID而非@提及作为识别参数
问题原因
你当前使用的message.guild.member()方法在Discord.js v12及以上版本已经被弃用,该方法仅支持处理用户对象、<@用户ID>格式的提及字符串,无法直接识别纯数字的原始用户ID,因此输入纯ID时会返回空,触发错误提示。
修复代码
将原有成员获取逻辑调整为如下写法即可兼容提及、纯ID两种输入格式:
// 优先匹配提及用户,其次从缓存中读取ID对应的成员 let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); if (!user) return message.channel.send("Please put a valid member or a user ID for me to mute")
补充说明
如果你的服务器成员数量较多,缓存中可能不会留存离线成员信息,可调整为异步拉取模式,兼容离线成员的ID查询:
// 注意:使用await需要将外层函数标记为async let user = message.mentions.members.first() || await message.guild.members.fetch(args[0]).catch(() => null); if (!user) return message.channel.send("Please put a valid member or a user ID for me to mute")
内容的提问来源于stack exchange,提问作者Connor
相关产品推荐
相关产品推荐

