Discord机器人权限不足时返回‘no’消息的问题求助
解决方案:捕获权限异常并返回提示
你的代码存在两个核心问题,导致权限不足时无法发送"no"提示:
- 执行顺序错误:先执行修改昵称操作,权限不足时直接抛出异常,后续判断代码根本不会运行
- 异常判断逻辑无效:
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
相关产品推荐
相关产品推荐

