You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:45:05