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

如何使用discord.py在Python中实现按钮点击弹出Discord模态框

如何给Discord按钮添加点击弹出模态框的功能

当然可以实现点击Discord按钮后弹出模态框的效果,下面是结合你现有代码的完整实现方案:

步骤1:创建模态框类

首先定义一个继承自discord.ui.Modal的类,用来构建模态框的输入内容(比如举报原因、详情等):

class ReportModal(discord.ui.Modal, title="提交举报"):
    # 添加输入组件,示例包含两个输入框
    reason = discord.ui.TextInput(
        label="举报原因",
        placeholder="请简要说明举报理由...",
        style=discord.TextStyle.short,
        required=True
    )
    details = discord.ui.TextInput(
        label="详细描述",
        placeholder="请提供更多细节...",
        style=discord.TextStyle.paragraph,
        required=False
    )

    async def on_submit(self, interaction: discord.Interaction):
        # 处理模态框提交后的逻辑,比如保存内容、发送通知
        await interaction.response.send_message(
            f"已收到你的举报!\n原因:{self.reason.value}\n详情:{self.details.value or '无'}",
            ephemeral=True
        )

步骤2:修改按钮回调函数

在你原有的Report视图类的按钮回调里,调用interaction.response.send_modal()弹出定义好的模态框:

class Report(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=86400)
        self.value = None
     
    @discord.ui.button(label="Report", style=discord.ButtonStyle.red)
    async def report(self, interaction: discord.Interaction, button: discord.ui.Button):
        # 触发模态框弹出
        await interaction.response.send_modal(ReportModal())
        # 可保留你原有其他业务逻辑

关键细节说明

  • 模态框的title是弹窗顶部显示的标题,输入框的label对应输入项的名称,placeholder是输入提示文本
  • required参数控制输入框是否为必填项
  • on_submit方法是模态框提交后的处理入口,可在此实现数据存储、通知管理员等操作
  • ephemeral=True表示回复仅提交者可见,适合隐私类操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:25:02