import sys
import time
-from dateutil.parser import parse
+from datetime import datetime, timedelta
+from email.utils import parsedate
from ConfigParser import SafeConfigParser
from heapq import heappop, heappush
import traceback
new_tweet="=^_^= ",
error="=O_o= ",
inform="=o_o= "
- )
+ ),
none=dict(
new_tweet=""
- )
+ ),
)
ACTIVE_PREFIXES=dict()
if (wait > 0):
time.sleep(wait)
task()
- debug("tasks: " + str(self.task_heap))
+ #debug("tasks: " + str(self.task_heap))
def run_forever(self):
while True:
self.configFilename = configFilename
self.config = load_config(self.configFilename)
+ global ACTIVE_PREFIXES
+ ACTIVE_PREFIXES = PREFIXES[self.config.get('irc', 'prefixes')]
+
oauth_file = self.config.get('twitter', 'oauth_token_file')
if not os.path.exists(oauth_file):
oauth_dance("IRC Bot", CONSUMER_KEY, CONSUMER_SECRET, oauth_file)
self.sched = Scheduler(
(SchedTask(self.process_events, 1),
SchedTask(self.check_statuses, 120)))
- self.lastUpdate = time.gmtime()
+ self.lastUpdate = (datetime.utcnow() - timedelta(minutes=10)).utctimetuple()
def check_statuses(self):
debug("In check_statuses")
try:
- updates = self.twitter.statuses.friends_timeline()
+ updates = reversed(self.twitter.statuses.friends_timeline())
except Exception, e:
print >> sys.stderr, "Exception while querying twitter:"
traceback.print_exc(file=sys.stderr)
return
nextLastUpdate = self.lastUpdate
+ debug("self.lastUpdate is %s" % self.lastUpdate)
for update in updates:
- crt = parse(update['created_at']).utctimetuple()
- if (crt > self.lastUpdate):
+ crt = parsedate(update['created_at'])
+ if (crt > nextLastUpdate):
text = (htmlentitydecode(
update['text'].replace('\n', ' '))
.encode('utf-8', 'replace'))
# to people who are not on our following list.
if not text.startswith("@"):
self.privmsg_channels(
- u"%s %s%s%s %s" %(
+ u"%s %s%s%s %s" %(
get_prefix(),
IRC_BOLD, update['user']['screen_name'],
IRC_BOLD, text.decode('utf-8')))
nextLastUpdate = crt
- else:
- break
+
+ debug("setting self.lastUpdate to %s" % nextLastUpdate)
self.lastUpdate = nextLastUpdate
def process_events(self):
- debug("In process_events")
self.irc.process_once()
def handle_privmsg(self, conn, evt):
conn.privmsg(
evt.source().split('!')[0],
"%sHi! I'm Twitterbot! you can (follow "
- + "<twitter_name>) to make me follow a user or "
- + "(unfollow <twitter_name>) to make me stop." %
+ "<twitter_name>) to make me follow a user or "
+ "(unfollow <twitter_name>) to make me stop." %
get_prefix())
except Exception:
traceback.print_exc(file=sys.stderr)
print >> sys.stderr, __doc__
sys.exit(1)
- global ACTIVE_PREFIXES
- ACTIVE_PREFIXES = PREFIXES[cp.get('irc', 'prefixes')]
bot = TwitterBot(configFilename)
return bot.run()