chiark / gitweb /
make karma channel-specific, to avoid over-writing it
[irc.git] / commands.py
index 6049640b62fddce7749fa01f1d5b5b3c83b3099b..b63836af7d08425c522c0876b0e34464915500b8 100644 (file)
@@ -326,7 +326,10 @@ class UrlLog:
         return urlcomplaints[z]
 
 #(?:) is a regexp that doesn't group        
-urlre = re.compile("((?:(?:http)|(?:nsfw))s?://[^ ]+)( |$)")
+urlre = re.compile(r"((?:(?:http)|(?:nsfw))s?://[^ ]+)( |$)")
+hturlre= re.compile(r"(http)(s?://[^ ]+)( |$)")
+#matches \bre\:?\s+ before a regexp; (?i)==case insensitive match
+shibboleth = re.compile(r"(?i)\bre\:?\s+((?:(?:http)|(?:nsfw))s?://[^ ]+)( |$)")
 urlcomplaints = ["a contemporary","an interesting","a fascinating","an overused","a vastly overused"]
 
 ### Deal with /msg bot url or ~url in channel
@@ -346,6 +349,11 @@ def urlq(bot, cmd, nick, conn, public,urldb):
       T.count+=1
     bot.automsg(False,nick,complaint)
     T.lastasked=time.time()
+    #URL suppressed, so mention in #urls
+    if urlstring != cmd.split()[1]: #first argument to URL was not the url
+      conn.privmsg("#urls","%s remarks: %s" % (nick," ".join(cmd.split()[1:])))
+    else:
+      conn.privmsg("#urls","(via %s) %s"%(nick," ".join(cmd.split()[1:])))
   else:
     if (public):
       bot.automsg(False,nick,"That URL was unique. There is little point in using !url out loud; please use it via /msg")
@@ -366,7 +374,8 @@ def dourl(bot,conn,nick,command,urldb):
     T=urldb[urlstring]
     message="observes %s URL, first mentioned %s by %s" % \
              (T.urltype(),T.firstmen(),T.nick)
-    conn.action(bot.channel, message)
+    if shibboleth.search(command)==None:
+        conn.action(bot.channel, message)
     T.lastseen=time.time()
     T.count+=1
   else:
@@ -390,6 +399,17 @@ def canonical_url(urlstring):
         urlstring.replace(middle,"/hi/")
   return urlstring
 
+# automatically make nsfw urls for you and pass them on to url
+def nsfwq(bot,cmd,nick,conn,public,urldb):
+  if (not hturlre.search(cmd)):
+    bot.automsg(False,nick,"Please use 'nsfw' only with http or https URLs")
+    return
+  newcmd=hturlre.sub(nsfwify,cmd)
+  urlq(bot,newcmd,nick,conn,public,urldb)
+
+def nsfwify(match):
+    a,b,c=match.groups()
+    return 'nsfw'+b+c
 
 #get tweet text
 def twitterq(bot,cmd,nick,conn,public,twitapi):