You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:06:03