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

Discord机器人权限不足时返回‘no’消息的问题求助

解决方案:捕获权限异常并返回提示

你的代码存在两个核心问题,导致权限不足时无法发送"no"提示:

  1. 执行顺序错误:先执行修改昵称操作,权限不足时直接抛出异常,后续判断代码根本不会运行
  2. 异常判断逻辑无效:MissingPermissions == True是错误写法,MissingPermissions是前缀命令的异常类,而slash命令(app_commands)的权限错误会抛出discord.Forbidden异常

修正后的代码如下:

import discord
from discord import app_commands

@client.tree.command(name='nikname', description='testing the bot')
async def nikname(interaction: discord.Interaction, user: discord.User, *, nickname: str):
    try:
        # 尝试修改用户昵称
        await user.edit(nick=nickname)
        # 修改成功发送"ok"
        await interaction.response.send_message("ok")
    except discord.Forbidden:
        # 捕获权限不足的异常,发送"no"
        await interaction.response.send_message("no")

关键修改说明:

  • 用try-except块包裹可能触发异常的操作,确保权限不足时能进入异常处理分支
  • 捕获discord.Forbidden异常(这是slash命令场景下权限不足的正确异常类型)
  • 调整流程:先尝试执行操作,成功返回"ok",失败则返回"no"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:25