chiark / gitweb /
new trout from ewx
[irc.git] / Servus-chiark.py
index 3fcdc01c7d9a143a881f028e697f0bc2090ab8c4..0af2dbce4424bc423676a1581ed22e6ba35b1bf3 100644 (file)
@@ -24,7 +24,9 @@
 # Acrobat configuration file
 
 # The following definitions are required to be present in this module:
-server = "rapun"
+# You can also override them on the command-line
+# e.g. python acrobat.py Servus-chiark nickname=testbot channel=\#test owner=MyNick
+server = "chiark"
 port = 6667
 nickname = "Servus"
 channel = "#chiark"
@@ -33,7 +35,7 @@ owner = "Emperor"
 
 # Everything else in this file is configuration-specific.
 
-import os, time, re
+import os, time, re, twitter
 
 # Most command implementations are stored in a separate module.
 import commands as c
@@ -141,7 +143,15 @@ class game:
        losetime=time.time()+300000
 
 # initialise the urldb on startup
-c.urldb={}
+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
+
+# non-authenticated twitter api instance
+twitapi = twitter.Api()
 
 # Command processing: whenever something is said that the bot can hear,
 # "command" is invoked and must decide what to do.  This configuration
@@ -163,12 +173,13 @@ commands = {"karma": (c.karmaq,karmadb),
            "die": quit,
            "define": c.defineq,
             "google": c.googleq,
-#          "url": urlq,
+           "url": (c.urlq,urldb),
            "units": c.unitq,
            "help": c.helpq,
 #          "game": (c.gameq,game),
             "say": c.sayq,
-            "do": c.doq }
+            "do": c.doq, 
+            "twit": (c.twitterq,twitapi) }
 # disconnect and hop annoy people
 #            "disconnect": c.disconnq,
 #            "hop": c.disconnq }
@@ -178,6 +189,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,twitapi
     ours=0
     try:
            if public and cmd[0] in triggers:
@@ -189,10 +201,15 @@ def command(bot, cmd, nick, conn, public):
     except IndexError:
            command=""
 
-#    if public:
-#      if c.urlre.search(cmd):
-#        c.dourl(bot,conn,nick,cmd)
-         
+    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)