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

如何在Discord Python中添加按钮?求有效解决方案

Discord.py 添加按钮的有效实现方案(适配v2.x+版本)

首先确保你的discord.py是最新版本,旧版的组件API已经完全更新,执行以下命令升级:

pip install -U discord.py

核心实现步骤

1. 基础按钮示例(完整可运行代码)

import discord
from discord.ext import commands

# 初始化机器人,必须开启对应Intents
intents = discord.Intents.default()
intents.message_content = True  # 必须开启,否则收不到命令消息
intents.members = True

bot = commands.Bot(command_prefix="!", intents=intents)

# 自定义View类,用来承载按钮组件
class ButtonView(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)  # 设置timeout=None让按钮永久有效,直到手动关闭

    # 定义按钮:设置标签、样式、表情
    @discord.ui.button(label="打个招呼", style=discord.ButtonStyle.primary, emoji="👋")
    async def greet_button(self, interaction: discord.Interaction, button: discord.ui.Button):
        # 按钮被点击后的响应,ephemeral=True表示只有点击者能看到这条回复
        await interaction.response.send_message(f"嗨,{interaction.user.mention}!", ephemeral=True)

# 机器人启动提示
@bot.event
async def on_ready():
    print(f"机器人已登录:{bot.user.name}")

# 发送带按钮的测试命令
@bot.command()
async def send_button(ctx):
    await ctx.send("点击下方按钮试试:", view=ButtonView())

# 替换成你的机器人Token
bot.run("你的机器人专属Token")

2. 关键注意事项

  • Intents配置:必须在Discord开发者门户的Bot页面,开启Message Content Intent和Server Members Intent,否则机器人无法接收命令和交互事件。
  • 响应超时:按钮回调里的interaction.response必须在3秒内触发,如果要处理耗时操作,先调用await interaction.response.defer(),之后用await interaction.followup.send()发送结果。
  • 多按钮添加:直接在ButtonView类里添加多个@discord.ui.button()装饰的函数即可,每个按钮对应独立的回调逻辑。

3. 进阶功能:点击后禁用按钮

如果需要做一次性按钮,点击后禁用,只需在回调里修改按钮状态并更新消息:

@discord.ui.button(label="一次性按钮", style=discord.ButtonStyle.success)
async def one_time_btn(self, interaction: discord.Interaction, button: discord.ui.Button):
    button.disabled = True  # 禁用按钮
    await interaction.response.edit_message(view=self)  # 更新消息的View,让禁用生效
    await interaction.followup.send("按钮已失效,不能再点击啦!", ephemeral=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:59:59