Added support for dynamic python factoids :D

This commit is contained in:
Luke Rogers 2012-05-13 17:11:59 +12:00
parent 9906bfbcb6
commit 4d7c94f6da

View file

@ -1,8 +1,9 @@
# Written by Scaevolus 2010 # Written by Scaevolus 2010
from util import hook from util import hook, http
import string import string
import re import re
re_lineends = re.compile(r'[\r\n]*')
# some simple "shortcodes" for formatting purposes # some simple "shortcodes" for formatting purposes
shortcodes = { shortcodes = {
@ -119,18 +120,35 @@ def factoid(inp, say=None, db=None, bot=None, me=None, conn=None, input=None):
data = get_memory(db, inp.group(1).strip()) data = get_memory(db, inp.group(1).strip())
if data: if data:
out = multiwordReplace(data, shortcodes)
# dynamic variables for factoids # dynamic variables for factoids
out = out.replace("$nick", input.nick) data = data.replace("$nick", input.nick)
out = out.replace("$chan", input.chan) data = data.replace("$chan", input.chan)
out = out.replace("$botnick", conn.nick) data = data.replace("$botnick", conn.nick)
if out.startswith("<act>"): # if <py>, execute python code
out = out[5:].strip() if data.startswith("<py>"):
me(out) data = data[4:].strip()
res = http.get("http://eval.appspot.com/eval", statement=data).splitlines()
if len(res) == 0:
return
res[0] = re_lineends.split(res[0])[0]
if not res[0] == 'Traceback (most recent call last):':
result = res[0].decode('utf8', 'ignore')
else:
result = res[-1].decode('utf8', 'ignore')
else:
result = data
# process formatting "shortcodes"
result = multiwordReplace(result, shortcodes)
# return final dataput
if result.startswith("<act>"):
result = result[5:].strip()
me(result)
else: else:
if prefix_on: if prefix_on:
say("\x02[%s]:\x02 %s" % (inp.group(1).strip(), out)) say("\x02[%s]:\x02 %s" % (inp.group(1).strip(), result))
else: else:
say(out) say(result)