Created
January 17, 2011 21:48
-
-
Save Ikke/783549 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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