async def METHOD_NAME(self, ctx, *, formula = None):
    """Do some math."""
    if formula == None: return await ctx.send('Usage: `{}calc [formula]`'.format(ctx.prefix))
    formula = formula.replace("*","x")
    try:
        answer=self.nsp.eval(formula)
    except:
        msg = 'I couldn\'t parse "{}" :(\n\n'.format(formula.replace('*', '\\*').replace('`', '\\`').replace('_', '\\_'))
        msg += 'I understand the following syntax:\n```\n'
        msg += "expop   :: '^'\n"
        msg += "multop  :: 'x' | '*' | '/'\n"
        msg += "addop   :: '+' | '-'\n"
        msg += "integer :: ['+' | '-'] '0'..'9'+\n"
        msg += "atom    :: PI | E | real | fn '(' expr ')' | '(' expr ')'\n"
        msg += "factor  :: atom [ expop factor ]*\n"
        msg += "term    :: factor [ multop factor ]*\n"
        msg += "expr    :: term [ addop term ]*```"
        return await ctx.send(Utils.suppressed(ctx,msg))
    if int(answer) == answer:
        # Check if it's a whole number and cast to int if so
        answer = int(answer)
    # Say message
    await ctx.send('{} = {}'.format(formula, answer))