#!/usr/bin/env python3 """ A basic calculator and python interpreter application. """ import sys import requests from module import commands, example from tools.calculation import eval_equation BASE_TUMBOLIA_URI = 'https://tumbolia-two.appspot.com/' @commands('calc', 'c') @example('.c 5 + 3', '8') def c(bot, trigger): """Evaluate some calculation.""" if len(trigger.args) < 2: return bot.reply("Nothing to calculate.") eqn = ' '.join(trigger.args[1:]) try: result = eval_equation(eqn) result = "{:.10g}".format(result) except ZeroDivisionError: result = "Division by zero is not supported in this universe." except Exception as e: result = "{error}: {msg}".format(error=type(e), msg=e) bot.reply(result) @commands('py') @example('.py len([1,2,3])', '3') def py(bot, trigger): """Evaluate a Python expression.""" if len(trigger.args) < 2: return bot.msg("Need an expression to evaluate") query = trigger.args[1] uri = BASE_TUMBOLIA_URI + 'py/' res = requests.get(uri + query) res.raise_for_status() answer = res.text answer = answer[:2000] if answer: #bot.msg can potentially lead to 3rd party commands triggering. bot.msg(answer, length=300) else: bot.reply('Sorry, no result.')