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

如何在discord.py 2.0的下拉菜单中添加自定义表情?

在discord.py 2.0下拉菜单中使用自定义表情的实现方法

步骤1:获取自定义表情对象

你有两种方式获取自定义表情,按需选择:

  • 从目标服务器中获取:如果表情在机器人已加入的服务器里,可通过服务器实例直接获取
# 获取服务器实例(替换成你的服务器ID)
guild = bot.get_guild(123456789012345678)
# 通过表情名称获取
custom_emoji = discord.utils.get(guild.emojis, name="表情名称")
# 或通过表情ID获取
custom_emoji = guild.get_emoji(987654321098765432)
  • 构造PartialEmoji对象:如果表情不在机器人所在服务器,或你已知表情的ID和名称,可直接构造
# animated设为True如果是动态表情
custom_emoji = discord.PartialEmoji(name="表情名称", id=987654321098765432, animated=False)

步骤2:在下拉菜单选项中绑定表情

通过discord.ui.Select创建下拉菜单,在SelectOption的emoji参数中传入获取到的表情对象即可:

import discord
from discord.ext import commands

class CustomDropdown(discord.ui.Select):
    def __init__(self):
        # 初始化自定义表情
        pizza_emoji = discord.PartialEmoji(name="pizza", id=123456789012345678)
        burger_emoji = discord.PartialEmoji(name="burger", id=987654321098765432)
        
        # 定义带表情的下拉选项
        options = [
            discord.SelectOption(label="披萨", description="选择披萨选项", emoji=pizza_emoji),
            discord.SelectOption(label="汉堡", description="选择汉堡选项", emoji=burger_emoji)
        ]
        super().__init__(placeholder="选个爱吃的", min_values=1, max_values=1, options=options)

    async def callback(self, interaction: discord.Interaction):
        await interaction.response.send_message(f"你选了{self.values[0]}", ephemeral=True)

class DropdownView(discord.ui.View):
    def __init__(self):
        super().__init__()
        self.add_item(CustomDropdown())

# 触发下拉菜单的命令
@bot.command()
async def food(ctx):
    view = DropdownView()
    await ctx.send("来选个食物:", view=view)

注意事项

  • 若使用其他服务器的表情,机器人必须加入该服务器才能正常显示
  • 动态表情要将animated参数设为True
  • 表情ID可通过右键表情→复制ID获取(需开启开发者模式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:57:33