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

Discord.py中info命令处理不存在用户时的discord.NotFound异常问题

解决Discord机器人info命令查询不存在用户的NotFound异常问题

嘿,我帮你搞定这个问题!你遇到的情况是因为Discord.py的discord.Member类型转换器在找不到对应用户时,会自动抛出discord.NotFound异常,而你的代码没有对这个异常做捕获处理,所以就触发报错了。下面给你两种实用的解决方案:

方案一:直接捕获NotFound异常

这是最直接的方式,用try-except块包裹你的命令逻辑,当异常发生时返回友好提示:

@laugh.command(pass_context=True)
async def info(ctx, user: discord.Member = None):
    try:
        # 如果没有指定用户,默认取命令发送者
        if user is None:
            user = ctx.author
        
        # 这里写你原本的用户信息展示逻辑
        embed = discord.Embed(title=f"{user.display_name}的信息", color=user.color)
        embed.add_field(name="用户ID", value=user.id)
        embed.add_field(name="加入服务器时间", value=user.joined_at.strftime("%Y-%m-%d %H:%M:%S"))
        embed.set_thumbnail(url=user.avatar.url)
        await ctx.send(embed=embed)
    except discord.NotFound:
        await ctx.send("抱歉,找不到这个用户哦!请检查输入的用户名/ID是否正确~")

方案二:手动处理用户输入(更灵活)

如果你想自定义用户查找逻辑(比如支持模糊匹配),可以不用discord.Member类型转换器,自己处理输入并查询用户:

@laugh.command(pass_context=True)
async def info(ctx, *, user_input: str = None):
    # 默认取命令发送者
    if user_input is None:
        user = ctx.author
    else:
        # 先尝试通过用户ID查找
        try:
            user_id = int(user_input)
            user = ctx.guild.get_member(user_id)
        except ValueError:
            # ID无效的话,尝试通过用户名/昵称查找(不区分大小写)
            user = discord.utils.find(
                lambda m: m.name.lower() == user_input.lower() or m.display_name.lower() == user_input.lower(),
                ctx.guild.members
            )
        
        # 没找到用户就提示
        if user is None:
            await ctx.send("抱歉,找不到这个用户哦!请检查输入的用户名/ID是否正确~")
            return
    
    # 后续的信息展示逻辑和之前一致
    embed = discord.Embed(title=f"{user.display_name}的信息", color=user.color)
    embed.add_field(name="用户ID", value=user.id)
    embed.add_field(name="加入服务器时间", value=user.joined_at.strftime("%Y-%m-%d %H:%M:%S"))
    embed.set_thumbnail(url=user.avatar.url)
    await ctx.send(embed=embed)

两种方案各有优势:方案一简单快捷,适合快速修复异常;方案二更灵活,能应对更多自定义查找场景,比如支持模糊匹配用户名。你可以根据自己的需求选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:08:38