]> jfr.im git - z_archive/twitter.git/commitdiff
bugfixes in irc bot for 0.2.1
authormverdone <redacted>
Mon, 12 May 2008 19:17:49 +0000 (19:17 +0000)
committermverdone <redacted>
Mon, 12 May 2008 19:17:49 +0000 (19:17 +0000)
git-svn-id: http://svn.mike.verdone.ca/pyprojects/twitter/trunk@168 d723f978-dc38-0410-87ed-da353333cdcc

setup.py
twitter/ircbot.py

index 046c3422cdbec37125e943532974f2557e5f4319..7977039adce44aec048f39d671b936fcff5169d9 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 import sys, os
 
-version = '0.2'
+version = '0.2.1'
 
 setup(name='twitter',
       version=version,
index 36acde7e971c0014f4fbdbe0c702b7257ff7958b..c5363eadb5ffd7a6fca142f8ce377589bd8f8e9f 100644 (file)
@@ -26,6 +26,18 @@ password: <twitter_account_password>
   If no config file is given "twitterbot.ini" will be used by default.
 
 """
+
+# TODO add delimiter if first word isn't "is" or "was"
+# TODO handle newlines
+# TODO handle quotes
+
+BOT_VERSION = "TwitterBot 0.2.1 (mike.verdone.ca/twitter)"
+
+IRC_BOLD = chr(0x02)
+IRC_ITALIC = chr(0x16)
+IRC_UNDERLINE = chr(0x1f)
+IRC_REGULAR = chr(0x0f)
+
 import sys
 import time
 from dateutil.parser import parse
@@ -93,13 +105,14 @@ class TwitterBot(object):
         self.config = load_config(self.configFilename)
         self.irc = irclib.IRC()
         self.irc.add_global_handler('privmsg', self.handle_privmsg)
+        self.irc.add_global_handler('ctcp', self.handle_ctcp)
         self.ircServer = self.irc.server()
         self.twitter = Twitter(
             self.config.get('twitter', 'email'),
             self.config.get('twitter', 'password'))
         self.sched = Scheduler(
             (SchedTask(self.process_events, 1),
-             SchedTask(self.check_statuses, 60)))
+             SchedTask(self.check_statuses, 120)))
         self.lastUpdate = time.gmtime()
 
     def check_statuses(self):
@@ -114,10 +127,15 @@ class TwitterBot(object):
         for update in updates:
             crt = parse(update['created_at']).utctimetuple()
             if (crt > self.lastUpdate):
+                text = (
+                    update['text']
+                    .replace('\n', ' ')
+                    .replace("&quot;", "\"")
+                    .replace('&amp;', '&'))
                 self.privmsg_channel(
-                    "=^_^= %s %s" %(
-                        update['user']['screen_name'],
-                        update['text']))
+                    "=^_^= %s%s%s %s" %(
+                        IRC_BOLD, update['user']['screen_name'],
+                        IRC_BOLD, text))
                 self.lastUpdate = crt
             else:
                 break
@@ -144,6 +162,17 @@ class TwitterBot(object):
                     + "(unfollow <twitter_name>) to make me stop.")
         except Exception:
             traceback.print_exc(file=sys.stderr)
+    
+    def handle_ctcp(self, conn, evt):
+        args = evt.arguments()
+        source = evt.source().split('!')[0]
+        if (args):
+            if args[0] == 'VERSION':
+                conn.ctcp_reply(source, "VERSION " + BOT_VERSION)
+            elif args[0] == 'PING':
+                conn.ctcp_reply(source, "PING")
+            elif args[0] == 'CLIENTINFO':
+                conn.ctcp_reply(source, "CLIENTINFO PING VERSION CLIENTINFO")
 
     def privmsg_channel(self, msg):
         return self.ircServer.privmsg(