Discord机器人富嵌入用户提及显示异常,需呈现样式但无实际Ping
解决Discord Rich Embed中用户提及显示异常的问题
我来帮你搞定这个Discord机器人的Embed提及问题!你想要的「显示用户提及样式但不触发Ping」其实刚好是Discord Embed的默认特性,只要用对格式就能实现。
为什么你的尝试没生效?
- 你用的
@${author.tag}是纯文本字符串,Discord不会把它识别为用户提及,自然只会显示成普通文字; - 虽然你试过
<@${author.id}>,但可能没意识到这个格式本身是正确的——只是你之前的写法没让Discord正确解析,而且Embed里的提及默认就不会触发Ping!
正确的实现方法
在Embed中使用<@${用户ID}>格式,Discord会自动将其渲染成带样式的用户昵称/用户名(就是你想要的那种@样式),并且不会发送Ping通知给该用户,完全匹配你的需求。
修正后的代码示例
把你代码里的setFooter行替换成下面这行,其他部分保持不变:
.setFooter(`Requested by <@${author.id}>`, author.avatarURL)
完整的修正后代码如下:
const Discord = require('discord.js'); // 确保正确引入discord.js const serv = message.guild; const author = message.author; const myInfo = new Discord.RichEmbed() .setAuthor(`${serv.name}'s roles`, message.guild.iconURL) .addField(`Roles`, serv.roles.map(r => `${r}`).join(' | '), true) .setColor(0xffd000) .setFooter(`Requested by <@${author.id}>`, author.avatarURL); // 关键修改处 message.channel.sendEmbed(myInfo);
补充说明
- 关于Ping的问题:Discord的Embed中所有用户/角色提及都不会触发通知,只有普通消息(非Embed)里的提及才会Ping用户,所以你完全不需要额外处理;
- 如果你的discord.js版本是v12及以上,
RichEmbed已经被替换为MessageEmbed,只需要把new Discord.RichEmbed()改成new Discord.MessageEmbed()即可,用法完全一致。
内容的提问来源于stack exchange,提问作者SomePerson
相关产品推荐
相关产品推荐

