# -*- coding: utf-8-*- import random import re from client import jasperpath WORDS = [_("JOKE"), _("KNOCK KNOCK")] def getRandomJoke(filename=jasperpath.data('text', 'JOKES.txt')): jokeFile = open(filename, "r") jokes = [] start = "" end = "" for line in jokeFile.readlines(): line = line.replace("\n", "") if start == "": start = line continue if end == "": end = line continue jokes.append((start, end)) start = "" end = "" jokes.append((start, end)) joke = random.choice(jokes) return joke def handle(text, mic, profile): """ Responds to user-input, typically speech text, by telling a joke. Arguments: text -- user-input, typically transcribed speech mic -- used to interact with the user (for both input and output) profile -- contains information related to the user (e.g., phone number) """ joke = getRandomJoke() mic.say(_("Knock knock")) def firstLine(text): mic.say(joke[0]) def punchLine(text): mic.say(joke[1]) punchLine(mic.activeListen()) firstLine(mic.activeListen()) def isValid(text): """ Returns True if the input is related to jokes/humor. Arguments: text -- user-input, typically transcribed speech """ return bool(re.search(r"\b" + _("joke") + r"\b", text, re.IGNORECASE))