所以我想为我的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))