Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当发生错误时,如何使我的评估发送完整的回溯 @bot.command(name=“eval”) @评估检查() 异步定义评估(ctx,*,cmd): fn_name=“_eval_expr” cmd=cmd.strip(“`”) cmd=“\n”.join(cmd.splitlines()中i的f“{i}”) body=f“异步定义{fn_name}():\n{cmd}” parsed=ast.parse(正文) 正文=已分析。正文[0]。正文 插入返回(正文) 环境={ “bot”:ctx.bot, "不和":不和,, “命令”:命令, “ctx”:ctx, “\uuuuu导入”:\uuuu导入__ } exec(编译(已解析,filename=”“,mode=“exec”),env) 结果=(等待评估(f“{fn_name}()”,env)) embed=discord.embed(title=“Success!”,description=f“``py\n{result}`````”,color=discord.color(0x00ff6a)) 等待ctx.send(嵌入=嵌入)_Python_Discord_Discord.py - Fatal编程技术网

Python 当发生错误时,如何使我的评估发送完整的回溯 @bot.command(name=“eval”) @评估检查() 异步定义评估(ctx,*,cmd): fn_name=“_eval_expr” cmd=cmd.strip(“`”) cmd=“\n”.join(cmd.splitlines()中i的f“{i}”) body=f“异步定义{fn_name}():\n{cmd}” parsed=ast.parse(正文) 正文=已分析。正文[0]。正文 插入返回(正文) 环境={ “bot”:ctx.bot, "不和":不和,, “命令”:命令, “ctx”:ctx, “\uuuuu导入”:\uuuu导入__ } exec(编译(已解析,filename=”“,mode=“exec”),env) 结果=(等待评估(f“{fn_name}()”,env)) embed=discord.embed(title=“Success!”,description=f“``py\n{result}`````”,color=discord.color(0x00ff6a)) 等待ctx.send(嵌入=嵌入)

Python 当发生错误时,如何使我的评估发送完整的回溯 @bot.command(name=“eval”) @评估检查() 异步定义评估(ctx,*,cmd): fn_name=“_eval_expr” cmd=cmd.strip(“`”) cmd=“\n”.join(cmd.splitlines()中i的f“{i}”) body=f“异步定义{fn_name}():\n{cmd}” parsed=ast.parse(正文) 正文=已分析。正文[0]。正文 插入返回(正文) 环境={ “bot”:ctx.bot, "不和":不和,, “命令”:命令, “ctx”:ctx, “\uuuuu导入”:\uuuu导入__ } exec(编译(已解析,filename=”“,mode=“exec”),env) 结果=(等待评估(f“{fn_name}()”,env)) embed=discord.embed(title=“Success!”,description=f“``py\n{result}`````”,color=discord.color(0x00ff6a)) 等待ctx.send(嵌入=嵌入),python,discord,discord.py,Python,Discord,Discord.py,这是我的评估,我希望它在发生错误时发送完整的回溯。。 我怎样才能做到这一点,甚至可能做到这一点呢?为什么要使用eval?您正在对fn\u name的值进行硬编码,因此只需定义一个名为\u eval\u expr的函数并完成它。 @bot.command(name="eval") @eval_check() async def eval_(ctx, *, cmd): fn_name = "_eval_expr" cmd = cmd

这是我的评估,我希望它在发生错误时发送完整的回溯。。
我怎样才能做到这一点,甚至可能做到这一点呢?

为什么要使用
eval
?您正在对
fn\u name
的值进行硬编码,因此只需定义一个名为
\u eval\u expr
的函数并完成它。
@bot.command(name="eval")
@eval_check()
async def eval_(ctx, *, cmd):
    
    fn_name = "_eval_expr"

    cmd = cmd.strip("` ")

    
    cmd = "\n".join(f"    {i}" for i in cmd.splitlines())

   
    body = f"async def {fn_name}():\n{cmd}"

    parsed = ast.parse(body)
    body = parsed.body[0].body

    insert_returns(body)

    env = {
        'bot': ctx.bot,
        'discord': discord,
        'commands': commands,
        'ctx': ctx,
        '__import__': __import__
    }
    exec(compile(parsed, filename="<ast>", mode="exec"), env)

    result = (await eval(f"{fn_name}()", env))
    embed = discord.Embed(title="Success!", description=f"```py\n{result}```", color = discord.Color(0x00ff6a))
    await ctx.send(embed=embed)