Discord机器人按钮如何添加emoji?setEmoji方法报错如何解决?
问题原因
你遇到的报错是因为setEmoji()方法不支持传入Embed场景用的<:emoji名称:emojiID>格式字符串,该格式仅会在消息正文、Embed文本中被Discord自动解析为emoji,按钮组件的emoji需要单独传入符合要求的参数。同时setLabel()的内容会被当做纯文本处理,不会解析emoji格式串,所以会原样显示字符串。
正确实现方法
1. 使用自定义服务器emoji
直接传入emoji的ID即可,不需要额外的格式包裹:
const row = new MessageActionRow() .addComponents( new MessageButton() .setCustomId("upvote") .setEmoji("905702018902011955") // 仅填写对应emoji的ID .setStyle("SUCCESS"), new MessageButton() .setCustomId("downvote") .setEmoji("905702018902011955") // 替换为向下箭头emoji的ID .setStyle("DANGER") );
如果是动态emoji,也可以传入对象格式明确参数:
.setEmoji({ name: 'arrow_up', id: '905702018902011955', animated: true // 静态emoji改为false即可 })
2. 使用原生Unicode emoji
直接传入emoji本身即可:
.setEmoji('⬆️')
注意事项
- 自定义emoji必须是你的机器人所在服务器已上传的emoji,机器人没有跨服务器调用非全局emoji的权限,否则也会触发无效emoji报错
- 如果需要按钮同时显示emoji和文字,搭配
setLabel()方法使用即可,仅显示emoji则不用调用setLabel()
内容的提问来源于stack exchange,提问作者OOPS Studio
相关产品推荐
相关产品推荐

