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

如何在discord-py-slash-command下拉菜单中为选项设置自定义ID

问题核心原因

custom_id 是**整个下拉选择组件(Select)**的属性,不是单个下拉选项(SelectOption)的属性,因此你给create_select_option()传递custom_id参数才会抛出参数不存在的错误。单个选项的标识用自带的value参数即可实现。

实现方案

  1. 如果你需要自定义整个下拉菜单的ID,避免使用系统自动生成的随机ID,可在create_select()方法中添加custom_id参数:
select = create_select(
        # 自定义整个下拉菜单的ID
        custom_id="my_test_select",
        options=[
            create_select_option("Option 1", value="opt1", emoji="1️⃣"),
            create_select_option("Option 2", value="opt2", emoji="2️⃣"),
            create_select_option("Option 3", value="opt3", emoji="3️⃣"),
        ],
        placeholder="Choose an option or two", 
        min_values=1,
        max_values=2, 
        )
await user.send("Select options here", components=[create_actionrow(select)])
  1. 识别用户选中的选项,直接读取返回上下文的values属性即可,该属性会返回用户选中的所有选项对应的value值列表:
select_ctx: ComponentContext = await wait_for_component(client, components=create_actionrow(select))
# selected_values 即为用户选中的选项标识列表
selected_values = select_ctx.values
await select_ctx.edit_origin(content=f"You chose: {', '.join(selected_values)}")

补充说明

如果存在多个下拉菜单需要区分,可通过select_ctx.custom_id判断当前触发事件的是哪个下拉菜单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:36:03