def testMemeGenImplicitSyntax(self): inputText = "#dogebot #henry I like, test driven development!" reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) self.assertTrue( self.returnTweetHasImage(self.getResponse(1)) )
def testMemeGenImplicitSyntax(self): inputText = "#dogebot #henry I like, test driven development!" reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) self.assertTrue(self.returnTweetHasImage(self.getResponse(1)))
def testDongerResponds(self): reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputText = "#dogebot #donger" inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) self.assertTrue( True )
def testDongerResponds(self): reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputText = "#dogebot #donger" inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) self.assertTrue(True)
def testParrot(self): reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputText = "#dogebot #parrot hello world!" expectedOutputText = "@n4vjot hello world!, Woof" inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) self.assertTrue( self.returnedTweetContains(self.getResponse(1), expectedOutputText) )
def testSmite(self): reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputText = "#dogebot #smite this guy" expectedOutputText = "@n4vjot Get smitten, scrub" inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) self.assertTrue( self.returnedTweetContains(self.getResponse(1), expectedOutputText) )
def testMemeGen(self): inputText = "#dogebot #meme #henry I like, test driven development!" reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) #image = self.getResponse(1).get_image() #image_base64 = base64.b64encode(image.read()) #print image_base64 self.assertTrue( self.returnTweetHasImage(self.getResponse(1)) )
def testErrorRecovery(self): Log.showE = False reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) input1 = self.buildMockTweet("#dogebot #henry missing comma is broken syntax!") input2 = self.buildMockTweet("#dogebot #meme #henry I like, test driven development!") self.postTweetToBot(reader, input1) self.postTweetToBot(reader, input2) self.waitForResponse(1) Log.showE = True self.assertTrue( self.returnTweetHasImage(self.getResponse(1)) )
def testMemeGen(self): inputText = "#dogebot #meme #henry I like, test driven development!" reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) #image = self.getResponse(1).get_image() #image_base64 = base64.b64encode(image.read()) #print image_base64 self.assertTrue(self.returnTweetHasImage(self.getResponse(1)))
def testParrot(self): reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputText = "#dogebot #parrot hello world!" expectedOutputText = "@n4vjot hello world!, Woof" inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) self.assertTrue( self.returnedTweetContains(self.getResponse(1), expectedOutputText))
def testSmite(self): reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) inputText = "#dogebot #smite this guy" expectedOutputText = "@n4vjot Get smitten, scrub" inputTweet = self.buildMockTweet(inputText) self.postTweetToBot(reader, inputTweet) self.waitForResponse(1) self.assertTrue( self.returnedTweetContains(self.getResponse(1), expectedOutputText))
def testErrorRecovery(self): Log.showE = False reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) input1 = self.buildMockTweet( "#dogebot #henry missing comma is broken syntax!") input2 = self.buildMockTweet( "#dogebot #meme #henry I like, test driven development!") self.postTweetToBot(reader, input1) self.postTweetToBot(reader, input2) self.waitForResponse(1) Log.showE = True self.assertTrue(self.returnTweetHasImage(self.getResponse(1)))
def testStackedTweets(self): reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) input1 = self.buildMockTweet("@hanray #dogebot #parrot hello world!") input2 = self.buildMockTweet( "#dogebot #parrot hello world!") input3 = self.buildMockTweet("#dogebot #henry I like, test driven development!") input4 = self.buildMockTweet("#dogebot #meme #henry I like, test driven development!") self.postTweetToBot(reader, input1) self.postTweetToBot(reader, input2) self.postTweetToBot(reader, input3) self.postTweetToBot(reader, input4) self.waitForResponse(4) self.assertTrue( self.returnedTweetContains(self.getResponse(1), "@n4vjot @hanray hello world!, Woof") ) self.assertTrue( self.returnedTweetContains(self.getResponse(2), "@n4vjot hello world!, Woof") ) self.assertTrue( self.returnTweetHasImage(self.getResponse(3)) ) self.assertTrue( self.returnTweetHasImage(self.getResponse(4)) )
def testStackedTweets(self): reader = StatusQueue() bot = StatusAnalyzer() bot.add_response_generated_listener(self.handleResponse) reader.add_status_ready_listener(bot.generate_response_tweet) input1 = self.buildMockTweet("@hanray #dogebot #parrot hello world!") input2 = self.buildMockTweet("#dogebot #parrot hello world!") input3 = self.buildMockTweet( "#dogebot #henry I like, test driven development!") input4 = self.buildMockTweet( "#dogebot #meme #henry I like, test driven development!") self.postTweetToBot(reader, input1) self.postTweetToBot(reader, input2) self.postTweetToBot(reader, input3) self.postTweetToBot(reader, input4) self.waitForResponse(4) self.assertTrue( self.returnedTweetContains(self.getResponse(1), "@n4vjot @hanray hello world!, Woof")) self.assertTrue( self.returnedTweetContains(self.getResponse(2), "@n4vjot hello world!, Woof")) self.assertTrue(self.returnTweetHasImage(self.getResponse(3))) self.assertTrue(self.returnTweetHasImage(self.getResponse(4)))
from config import * from logger import Log from components.statusqueue import StatusQueue from components.timelinescanner import TimelineScanner from components.tweetsender import TweetSender from components.statusanalyzer import StatusAnalyzer import json if __name__ == '__main__': auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token_key, access_token_secret) api = tweepy.API(auth) timeline_scanner = TimelineScanner(api) status_queue = StatusQueue() status_analyzer = StatusAnalyzer() tweet_sender = TweetSender(api) timeline_scanner.add_new_status_listener(status_queue.queue_tweet) #once scanner finds a tweet, pass it to the reader status_queue.add_status_ready_listener(status_analyzer.generate_response_tweet) status_analyzer.add_response_generated_listener(tweet_sender.send_tweet) Log.v("MAIN", "Initialized scanner") stream = tweepy.Stream(auth, timeline_scanner) stream.filter(track=['dogebot']) #I want to listen in onto #dogebot first, then from there detect commands. If you want to just listen into all commands, do: #stream.filter(track=plugin_classes.get_commands_list())
from config import * from logger import Log from components.statusqueue import StatusQueue from components.timelinescanner import TimelineScanner from components.tweetsender import TweetSender from components.statusanalyzer import StatusAnalyzer import json if __name__ == '__main__': auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token_key, access_token_secret) api = tweepy.API(auth) timeline_scanner = TimelineScanner(api) status_queue = StatusQueue() status_analyzer = StatusAnalyzer() tweet_sender = TweetSender(api) timeline_scanner.add_new_status_listener( status_queue.queue_tweet ) #once scanner finds a tweet, pass it to the reader status_queue.add_status_ready_listener( status_analyzer.generate_response_tweet) status_analyzer.add_response_generated_listener(tweet_sender.send_tweet) Log.v("MAIN", "Initialized scanner") stream = tweepy.Stream(auth, timeline_scanner) stream.filter(track=['dogebot']) #I want to listen in onto #dogebot first, then from there detect commands. If you want to just listen into all commands, do: