fulvia/modules/calc.py

49 lines
1.2 KiB
Python
Raw Normal View History

2018-03-16 03:13:43 -04:00
#!/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')
2018-03-16 03:13:43 -04:00
@example('.c 5 + 3', '8')
def c(bot, trigger):
"""Evaluate some calculation."""
2020-01-07 18:58:19 -05:00
if len(trigger.args) < 2:
2018-03-16 03:13:43 -04:00
return bot.reply("Nothing to calculate.")
2020-01-07 18:58:19 -05:00
eqn = ' '.join(trigger.args[1:])
2018-03-16 03:13:43 -04:00
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."""
2020-01-07 18:58:19 -05:00
if len(trigger.args) < 2:
2018-05-25 15:21:18 -04:00
return bot.msg("Need an expression to evaluate")
2018-03-16 03:13:43 -04:00
2020-01-07 18:58:19 -05:00
query = trigger.args[1]
2018-03-16 03:13:43 -04:00
uri = BASE_TUMBOLIA_URI + 'py/'
res = requests.get(uri + query)
res.raise_for_status()
answer = res.text
2019-09-13 18:54:36 -04:00
answer = answer[:2000]
2018-03-16 03:13:43 -04:00
if answer:
2018-05-25 15:21:18 -04:00
#bot.msg can potentially lead to 3rd party commands triggering.
2019-09-13 18:54:36 -04:00
bot.msg(answer, length=300)
2018-03-16 03:13:43 -04:00
else:
bot.reply('Sorry, no result.')