Discord bot 特定用户被@时触发响应功能失效问题咨询
故障排查与解决方案
核心失效原因
Discord 不会将消息中的用户提及以显示层面的纯文本@用户名#标签格式存储在msg.content字段内,提及用户的实际存储格式为<@用户数字ID>(使用服务器昵称提及时为<@!用户数字ID>),你当前直接全等匹配@usertag#0001的逻辑自然无法触发。
修复步骤
- 打开Discord客户端的开发者模式,右键目标用户复制其纯数字ID。
- 优先使用Discord.js内置的提及检测API实现逻辑,避免手动匹配格式出错,修复后代码示例如下:
// 若使用Discord.js v14及以上版本,请将事件名替换为 messageCreate client.on('message', msg => { // 替换为你复制的目标用户的纯数字ID const TARGET_USER_ID = '替换为实际用户ID'; // 检测当前消息是否提及了目标用户 if (msg.mentions.users.has(TARGET_USER_ID)) { msg.channel.send(`<@${msg.author.id}> <@${msg.author.id}> <@${msg.author.id}> <@${msg.author.id}> don't tag me`); } });
- 检查权限配置:登录Discord开发者后台,进入你的Bot应用的「Privileged Gateway Intents」板块,开启
Message Content Intent权限,Discord.js v13及以上版本必须开启该权限才能正常读取消息内容。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

