Discord.js开发:实现机器人ping(@提及)成员的正确方法
报错原因
你遇到unexpected sign '<'语法错误,是因为代码里的<@id>没有被包裹为字符串,JavaScript会直接把<识别为运算符,自然触发解析错误。
正确实现方式
Discord 内@成员的格式规则确实是<@用户ID>,但这部分内容必须作为字符串传入发送方法,有两种常用写法:
- 直接拼接字符串写法:把你需要@的成员的真实数字ID填入模板字符串对应位置即可
// 将1234567890替换为你要@的成员的实际用户ID message.channel.send(`<@1234567890> 要附带发送的文本内容`);
- 如果你已经通过接口拿到了对应的成员对象(
GuildMember类型)或用户对象(User类型),可以直接在字符串里插入对象,Discord.js会自动把它转成合法的@提及格式,不需要手动拼接格式串:
// 例:拿消息触发者的成员对象,@发送消息的用户 const targetMember = message.member; message.channel.send(`${targetMember} 要附带发送的文本内容`);
注意事项
- 如果消息发送后没有成功触发@提醒,先排查两个问题:
- 填入的ID是目标用户的纯数字ID,不是用户昵称、标签或者其他自定义标识
- 机器人在当前频道拥有发送消息、提及@成员的对应权限,频道没有开启限制机器人提及的规则
内容的提问来源于stack exchange,提问作者squidguy
相关产品推荐
相关产品推荐

