chiark / gitweb /
new slash from rjk
[irc.git] / Servus-chiark.py
index 128300a53822a3e28429c9a0f1c29647fe1f440f..647bce0768ea12910d6fef9d234c98f9b338e8cd 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,21 +166,24 @@ commands = {"karma": (c.karmaq,karmadb),
             "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:
@@ -183,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)