discord.py-rewrite - Команда калькулятора - Как безопасно вычислить выражение? - PullRequest
0 голосов
/ 19 июня 2019

Итак, я хочу сделать команду калькулятора для моего 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))
...