chiark / gitweb /
new trouts from rjk
[irc.git] / Servus-chiark.py
index a0ba8a5..02c44d3 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 }
@@ -174,6 +183,7 @@ 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:
@@ -184,6 +194,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) and command.lower()!="url":
+        c.dourl(bot,conn,nick,cmd,urldb)
+         
     # karma: up
     if command.endswith("++"):
         karma(cmd,1)