def build_sweetiebot(config=None): if config is None: import config resource = config.nickname + randomstr() if config.fake_redis: log.debug('faking out redis') redis_conn = FakeRedis() else: redis_conn = redis.from_url(config.redis_url) jid = config.username + '/' + resource nick = config.nickname room = config.chatroom password = config.password if config.hostname is not None: address = (config.hostname, config.port) else: address = () bot = MUCJabberBot(jid, password, room, nick, address) crest = SweetieCrest(config.crest_base_url, config.crest_client_id, config.crest_client_secret, config.crest_refresh_token) lookup = SweetieLookup(bot, crest) admin = SweetieAdmin(bot, config.chatroom) mq = SweetieMQ(config) de = SweetieDe(bot, admin, mq, ResponsesFile('data/deowl_fails.txt')) actions = ResponsesFile('data/actions.txt') sass = ResponsesFile('data/sass.txt') cadmusic = ResponsesFile('data/cadmusic.txt') tell = SweetieTell(bot, redis_conn) dictionary = SweetieDictionary(bot) chat = SweetieChat(bot, actions, sass, config.chatroom, cadmusic, tell, dictionary) roulette = SweetieRoulette(bot, admin) pings = SweetiePings(bot, redis_conn) moon = SweetieMoon(bot) if config.twitter_key is not None: twitter = TwitterClient.get_client(config.twitter_key, config.twitter_secret) watchers = list(map(twitter.get_timeline_watcher, ['EVE_Status'])) else: watchers = [] watchers.append( AtomWatcher.get_watcher( 'http://eveion.blogspot.com/feeds/posts/default')) seen = SweetieSeen(bot, redis_conn) sweet = Sweetiebot(config.nickname, bot, lookup, mq, admin, chat, roulette, de, pings, watchers, moon) return sweet
def setUp(self): self.bot = MagicMock() self.actions = MagicMock() self.sass = MagicMock() self.sass.get_next = MagicMock(name='some sass') self.chatroom = MagicMock() self.cadmusic = MagicMock() self.tell = MagicMock() self.tell.get_messages_for = MagicMock(return_value=None) self.dictionary = MagicMock() self.dictionary.get_definition = MagicMock( return_value='a picture of you') self.chat = SweetieChat(self.bot, self.actions, self.sass, self.chatroom, self.cadmusic, self.tell, self.dictionary)