# Everything else in this file is configuration-specific.
-import os, time
+import os, time, re
# Most command implementations are stored in a separate module.
import commands as c
maxlose=14*minlose #2 weeks
losetime=time.time()+300000
+# initialise the urldb on startup
+urldb={}
+lastexp=time.time()
+#expire urls if not asked about or seen for >71 hours
+expirelen=71*60*60
+#do an expiry run every hour
+expirevery=60*60
+
# Command processing: whenever something is said that the bot can hear,
# "command" is invoked and must decide what to do. This configuration
# defines a couple of special cases (for karma) but is otherwise driven
"reload": reload,
"quit": quit,
"die": quit,
+ "define": c.defineq,
"google": c.googleq,
+ "url": (c.urlq,urldb),
"units": c.unitq,
-# "define": c.defineq,
+ "help": c.helpq,
# "game": (c.gameq,game),
"say": c.sayq,
"do": c.doq }
# disconnect and hop annoy people
# "disconnect": c.disconnq,
# "hop": c.disconnq }
-commands["list"]=(c.listkeysq,commands)
+commands["list"]=(c.listkeysq,commands,True)
triggers = ("!", "~") # what character should the bot be invoked by:
# eg !trout, ~trout etc.
def command(bot, cmd, nick, conn, public):
+ global urldb,lastexp,expirelen,expirevery
ours=0
try:
if public and cmd[0] in triggers:
command = cmd.split()[0]
except IndexError:
command=""
+
+ t=time.time()
+ if t - lastexp > expirevery:
+ c.urlexpire(urldb,expirelen)
+ lastexp=t
+
+ if public:
+ if c.urlre.search(cmd) and command.lower()!="url":
+ c.dourl(bot,conn,nick,cmd,urldb)
+
# karma: up
if command.endswith("++"):
karma(cmd,1)