Skip to content

Instantly share code, notes, and snippets.

@Ikke
Created January 17, 2011 21:48
Show Gist options
  • Select an option

  • Save Ikke/783549 to your computer and use it in GitHub Desktop.

Select an option

Save Ikke/783549 to your computer and use it in GitHub Desktop.
from jsb.lib.threadloop import TimedLoop
from jsb.lib.persistconfig import PersistConfig
from jsb.lib.persist import PlugPersist
from jsb.lib.fleet import getfleet
from jsb.lib.commands import cmnds
from jsb.lib.examples import examples
#tweepy
from jsb.contrib.tweepy.api import API
from jsb.contrib import tweepy
import logging
cfg = PersistConfig()
cfg.define("enabled", False)
cfg.define("delay", 30)
cfg.define("account", "adamcurry")
cfg.define("trigger", "#@pocketnoagenda")
cfg.define("channels", [])
cfg.save()
state = PlugPersist("batsignal")
api = API()
if not state.data.has_key('processed_tweets'):
state.data.processed_tweets = []
if not state.data.has_key('jabberusers'):
state.data.jabberusers = []
class TwitterTimedLoop(TimedLoop):
def handle(self, *args, **kwargs):
TimedLoop.handle(self, args, kwargs)
statuses = api.user_timeline(cfg.get('account'))
bot = getfleet().getfirstbot()
jabberbot = getfleet().getfirstjabber()
for status in statuses:
if cfg.get('trigger') in status.text:
if status.id not in state.data.processed_tweets:
state.data.processed_tweets.append(status.id)
state.save()
message = "Batsignal: %s - %s" % (status.text, status.created_at)
if jabberbot:
for jid in state.data.jabberusers:
jabberbot.say(jid, message)
if bot:
for channel in cfg.get('channels'):
bot.say(channel, message)
twitter_loop = TwitterTimedLoop("Batsignal", cfg.get('delay'))
twitter_loop.start()
twitter_loop.handle()
def handle_batsignalstart(bot, event):
if not 'xmpp' in bot.type:
event.reply("This command is meant for jabber clients")
return
if event.auth not in state.data.jabberusers:
state.data.jabberusers.append(event.auth)
state.save()
event.reply('You will now recieve batsignals')
else:
event.reply('You are already getting the batsignal')
def handle_batsignalstop(bot, event):
if not 'xmpp' in bot.type:
event.reply("This command is meant for jabber clients")
return
try:
state.data.jabberusers.remove(event.auth)
state.save()
event.reply("You are no longer recieving batsignals")
except ValueError:
event.reply("You weren't recieving any batsignals")
cmnds.add('batsignal-start', handle_batsignalstart, "GUEST")
examples.add('batsignal-start', "Start recieving batsignals from Adam Curry", 'batsignal-start')
cmnds.add('batsignal-stop', handle_batsignalstop, "GUEST")
examples.add('batsignal-stop', "Stop recieving batsignals", 'batsignal-stop')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment