bots: Minor changes to yoda.py to make it run smoothly.

Modifications done so that the bot runs using 'zulip-run-bot'
command.
This commit is contained in:
Abhijeet Kaur 2017-07-31 19:28:30 +05:30 committed by Tim Abbott
parent 09060afcab
commit a58fae5cab

View file

@ -33,7 +33,6 @@ class YodaSpeakHandler(object):
This bot will allow users to translate a sentence into 'Yoda speak'. This bot will allow users to translate a sentence into 'Yoda speak'.
It looks for messages starting with '@mention-bot'. It looks for messages starting with '@mention-bot'.
''' '''
def initialize(self, bot_handler): def initialize(self, bot_handler):
self.api_key = bot_handler.get_config_info('yoda')['api_key'] self.api_key = bot_handler.get_config_info('yoda')['api_key']
@ -52,17 +51,14 @@ class YodaSpeakHandler(object):
''' '''
def handle_message(self, message, bot_handler, state_handler): def handle_message(self, message, bot_handler, state_handler):
handle_input(message, bot_handler) self.handle_input(message, bot_handler)
handler_class = YodaSpeakHandler def send_to_yoda_api(self, sentence):
def send_to_yoda_api(sentence, api_key):
# function for sending sentence to api # function for sending sentence to api
response = requests.get("https://yoda.p.mashape.com/yoda?sentence=" + sentence, response = requests.get("https://yoda.p.mashape.com/yoda?sentence=" + sentence,
headers={ headers={
"X-Mashape-Key": api_key, "X-Mashape-Key": self.api_key,
"Accept": "text/plain" "Accept": "text/plain"
} }
) )
@ -80,7 +76,7 @@ def send_to_yoda_api(sentence, api_key):
return error_message return error_message
def format_input(original_content): def format_input(self, original_content):
# gets rid of whitespace around the edges, so that they aren't a problem in the future # gets rid of whitespace around the edges, so that they aren't a problem in the future
message_content = original_content.strip() message_content = original_content.strip()
# replaces all spaces with '+' to be in the format the api requires # replaces all spaces with '+' to be in the format the api requires
@ -88,16 +84,16 @@ def format_input(original_content):
return sentence return sentence
def handle_input(message, bot_handler): def handle_input(self, message, bot_handler):
original_content = message['content'] original_content = message['content']
if is_help(original_content): if self.is_help(original_content):
bot_handler.send_reply(message, HELP_MESSAGE) bot_handler.send_reply(message, HELP_MESSAGE)
else: else:
sentence = format_input(original_content) sentence = self.format_input(original_content)
try: try:
reply_message = send_to_yoda_api(sentence, handler_class.api_key) reply_message = self.send_to_yoda_api(sentence)
except ssl.SSLError or TypeError: except ssl.SSLError or TypeError:
reply_message = 'The service is temporarily unavailable, please try again.' reply_message = 'The service is temporarily unavailable, please try again.'
@ -110,7 +106,7 @@ def handle_input(message, bot_handler):
bot_handler.send_reply(message, reply_message) bot_handler.send_reply(message, reply_message)
def send_message(bot_handler, message, stream, subject): def send_message(self, bot_handler, message, stream, subject):
# function for sending a message # function for sending a message
bot_handler.send_message(dict( bot_handler.send_message(dict(
type='stream', type='stream',
@ -120,10 +116,12 @@ def send_message(bot_handler, message, stream, subject):
)) ))
def is_help(original_content): def is_help(self, original_content):
# gets rid of whitespace around the edges, so that they aren't a problem in the future # gets rid of whitespace around the edges, so that they aren't a problem in the future
message_content = original_content.strip() message_content = original_content.strip()
if message_content == 'help': if message_content == 'help':
return True return True
else: else:
return False return False
handler_class = YodaSpeakHandler