chiark / gitweb /
uncomment url-tracking
[irc.git] / Servus-chiark.py
index a0ba8a5189a0d2060f4b6d635293f91c6309e8c5..de6a88fa36069da51d134ad5cd1b28d29d0d7037 100644 (file)
@@ -33,7 +33,7 @@ owner = "Emperor"
 
 # 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
@@ -140,6 +140,14 @@ class game:
        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
@@ -158,10 +166,11 @@ commands = {"karma": (c.karmaq,karmadb),
             "reload": reload,
             "quit": quit,
            "die": quit,
+           "define": c.defineq,
             "google": c.googleq,
+           "url": (c.urlq,urldb),
            "units": c.unitq,
            "help": c.helpq,
-#          "define": c.defineq,
 #          "game": (c.gameq,game),
             "say": c.sayq,
             "do": c.doq }
@@ -184,6 +193,16 @@ def command(bot, cmd, nick, conn, public):
            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):
+        c.dourl(bot,conn,nick,cmd,urldb)
+         
     # karma: up
     if command.endswith("++"):
         karma(cmd,1)