本文详解如何在 discord.py 的 discord.ui.Button 中动态校验用户角色权限避免误用命令装饰器并提供可直接运行的健壮实现方案。 本文详解如何在 discord.py 的 discord.ui.button 中动态校验用户角色权限避免误用命令装饰器并提供可直接运行的健壮实现方案。在 Discord 机器人开发中常需为 UI 按钮如“上岗”“离岗”设置角色访问控制——例如仅允许拥有 ? IN SERVIZIO 角色的成员点击“离岗”按钮或仅限 ? FUORI SERVIZIO 成员触发“上岗”操作。关键误区在于commands.has_role() 是专为 bot.command() 设计的命令检查装饰器不能用于 discord.ui.button 回调函数——它会在运行时抛出 AttributeError 或完全失效因为按钮回调不经过命令上下文管道。? 正确做法是在按钮回调内部手动校验用户角色并使用 interaction.response.defer(ephemeralTrue) 静默拒绝无权限请求确保用户体验干净、安全且符合预期。以下是一个完整、生产就绪的实现示例已适配 discord.py 2.3 VWO 一个A/B测试工具