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

Discord选择列表添加服务器自定义表情不显示问题求助

解决Discord选择菜单自定义表情不显示的问题

问题根源:你当前是把自定义表情的<:ProEvent:1274673606239981598>格式字符串直接拼接在label里,Discord不会自动解析这种文本为表情,只会当成普通字符显示。正确的方式是使用discord.SelectOption的emoji参数,传入正确的表情对象。

修复步骤

  1. 解析自定义表情字符串:从JSON配置里提取的表情格式是<:表情名:表情ID>,拆分出表情名和ID后,构建discord.PartialEmoji对象。
  2. 修改SelectOption创建逻辑:把表情对象传入emoji参数,label可只保留工单名称(表情会通过参数单独显示在选项左侧)。

修改后的代码

view = TicketTypeSelectView(ticket_data['ticket_types'])
await interaction.response.send_message("请选择你要创建的工单类型:", view=view, ephemeral=True, delete_after=60.0)


class TicketTypeSelectView(discord.ui.View):
    def __init__(self, ticket_types):
        super().__init__(timeout=None)
        options = []
        for name, data in ticket_types.items():
            emoji_str = data.get('emoji', '')
            emoji = None
            # 解析自定义表情格式
            if emoji_str.startswith('<:') and emoji_str.endswith('>'):
                parts = emoji_str[2:-1].split(':')
                if len(parts) == 2:
                    emoji_name, emoji_id = parts
                    emoji = discord.PartialEmoji(name=emoji_name, id=int(emoji_id))
            # 用emoji参数传入表情对象,label保留工单名称
            options.append(discord.SelectOption(label=name, value=name, emoji=emoji))
        self.add_item(TicketTypeSelect(options))

注意事项

  • 确保你的机器人在自定义表情所在的服务器中,否则无法正常渲染该表情。
  • 跨服务器可用的Nitro表情,也可以用同样的方式解析。

内容的提问来源于stack exchange,提问作者Leon Hu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:05:02