discord.py-rewrite-计算器命令-如何安全地评估表达式?

时间:2019-06-19 18:04:15

标签: python discord discord.py discord.py-rewrite

所以我想为我的BOT发出计算器命令,但是问题是我必须使用eval(),这可能非常危险。我尝试使用ast.literal_eval(),但这是非常有限的,某些计算将无法正常工作。任何人都知道我该如何解决这个问题?

@bot.command(case_insensitive=True, aliases=["calc", "math"])
@commands.cooldown(rate=Cooldown.maxcommands, per=Cooldown.seconds, type=Cooldown.mode)
async def calculate(ctx, *, operation=None):
    try:
        operation = eval(operation)
    except ZeroDivisionError:
        await ctx.send(":point_right: **Error: division by zero!**")
        return
    except:
        await ctx.send(":thumbsdown: **Error: expression could not be calculated!**")
        return
    await ctx.send(":1234: **The answer to your calculation is: **`{}`**!**".format(operation))

0 个答案:

没有答案