Discord.js v12实现艾特我时机器人自动回复,现有代码无响应该如何修改?
Discord.js v12 艾特触发回复代码修改方案
现有代码存在的问题
- 硬编码匹配
<@myid>字符串,首先你没有把占位符替换成自己的实际用户ID,其次没有兼容带昵称艾特的<@!用户ID>格式,只要艾特的时候带了你的服务器昵称就会匹配失败 - 使用
startsWith匹配要求艾特必须在消息开头且后面跟空格,要是艾特在消息中间、后面没跟空格都会匹配失败 - 未确认是否开启了必要的权限,Discord官方要求所有机器人必须在开发者后台开启
Message Content Intent才能读取普通消息内容,未开启的话机器人拿不到消息文本自然不会触发逻辑
修改后的可用代码
// 请将下方引号内的内容替换为你自己的Discord用户ID const TARGET_USER_ID = "你的实际用户ID"; client.on("message", (message) => { if (message.author.bot) return; // 直接调用官方封装的提及判断方法,自动兼容所有艾特格式 if (message.mentions.users.has(TARGET_USER_ID)) { message.channel.send("yo sup"); } });
额外检查项
- 确认机器人邀请到服务器时已经勾选了「发送消息」权限
- 确认Discord开发者后台的机器人设置页已经开启
Message Content Intent开关
内容的提问来源于stack exchange,提问作者pixma
相关产品推荐
相关产品推荐

