Dynamic factoids (and normal ones) can now take input with inp

This commit is contained in:
Luke Rogers 2012-05-13 17:40:17 +12:00
parent d15e4ff3cf
commit 7f98bf912c

View file

@ -128,9 +128,18 @@ def factoid(inp, say=None, db=None, bot=None, me=None, conn=None, input=None):
prefix_on = False
db_init(db)
# split up the input
split = inp.group(1).strip().split(" ")
factoid_id = split[0]
if len(split) >= 1:
arguments = " ".join(split[1:])
else:
arguments = None
# attempt to get the factoid from the database
data = get_memory(db, inp.group(1).strip())
data = get_memory(db, factoid_id)
if data:
@ -139,6 +148,12 @@ def factoid(inp, say=None, db=None, bot=None, me=None, conn=None, input=None):
data = data.replace("$chan", input.chan)
data = data.replace("$botnick", conn.nick)
# if factoid had arguments, replace $inp with that
if arguments:
data = data.replace("$inp", arguments)
else
data = data.replace("$inp", "null")
# if <py>, execute python code
if data.startswith("<py>"):
data = data[4:].strip()
@ -162,6 +177,6 @@ def factoid(inp, say=None, db=None, bot=None, me=None, conn=None, input=None):
me(result)
else:
if prefix_on:
say("\x02[%s]:\x02 %s" % (inp.group(1).strip(), result))
say("\x02[%s]:\x02 %s" % (factoid_id, result))
else:
say(result)