如何在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
相关产品推荐
相关产品推荐

