Alienbot Project: Intents not working?

Hey friends!
I’m almost done the Alienbot project, but the answer_why_intent and the cubed_intent aren’t working. Weirdly, the describe_planet_intent works perfectly. I have no idea why one of my intents works and the other two don’t; can anyone spot the problem?

# importing regex and random libraries
import re
import random

class AlienBot:
  # potential negative responses
  negative_responses = ("no", "nope", "nah", "naw", "not a chance", "sorry")
  # keywords for exiting the conversation
  exit_commands = ("quit", "pause", "exit", "goodbye", "bye", "later")
  # random starter questions
  random_questions = (
        "Why are you here? ",
        "Are there many humans like you? ",
        "What do you consume for sustenance? ",
        "Is there intelligent life on this planet? ",
        "Does Earth have a leader? ",
        "What planets have you visited? ",
        "What technology do you have on this planet? "

  def __init__(self):
    self.alienbabble = {'describe_planet_intent': r'.*\s*your planet.*''',
                        'answer_why_intent': r'why\sare.*',
                        'cubed_intent': r'.*cube.*(\d+)'

  # Define .greet() below:
  def greet(self): = input("What is your name? ")
    will_help = input(f"Hi {}, I'm Etcetera. I'm not from this planet. Will you help me learn about your planet? ")
    if will_help in self.negative_responses:
      print("Ok, have a nice Earth day!")

  # Define .make_exit() here:
  def make_exit(self, reply):
    for exit_command in self.exit_commands:
      if exit_command in reply:
        print("Ok, have a nice Earth day!")
        return True

  # Define .chat() next:
  def chat(self):
    reply = input(random.choice(self.random_questions)).lower()
    while not self.make_exit(reply):
      reply = input(self.match_reply(reply))

  # Define .match_reply() below:
  def match_reply(self, reply):
    for key, value in self.alienbabble.items():
      intent = key
      regex_pattern = value
      found_match = re.match(regex_pattern, reply)
      if found_match and intent == 'describe_planet_intent':
        return self.describe_planet_intent()
      elif found_match and intent == 'answer_why_intent':
        return self.answer_why_intent()
        #STEP 24 STARTS HERE
      elif found_match and intent == 'cubed_intent':
        return self.cubed_intent(found_match.groups()[0])
        return self.no_match_intent()
  # Define .describe_planet_intent():
  def describe_planet_intent(self):
    responses = ("My planet is a utopia of diverse organisms and species. ", "I am from Opidipus, the capital of the Wayward Galaxies. ")
    return random.choice(responses)

  # Define .answer_why_intent():
  def answer_why_intent(self):
    responses = ("I come in peace. ", "I am here to collect data on your planet and its inhabitants. ", "I heard the coffee is good. ")
    return random.choice(responses)
  # Define .cubed_intent():
  def cubed_intent(self, number):
    number = int(number)
    cubed_number = number*number*number
    return f"The cube of {number} is {cubed_number}. Isn't that cool? "

  # Define .no_match_intent():
  def no_match_intent(self):
    responses = ("Please tell me more. ", "Tell me more! ", "Why do you say that? ", "I see. Can you elaborate? ", "Interesting. Can you tell me more? ", "I see. How do you think? ", "Why? ", "How do you think I feel when you say that? ")
    return random.choice(responses)

# Create an instance of AlienBot below:
my_bot = AlienBot()


What have you tried for debugging?

If you have no clues yet, you can test the function at the most basic level and then try invoking with added layers of complexity.

I’ve tied messing with the Regex in case that was the problem (eventually just copied & pasted it from the “need a hint?” section, so it should be good), and I’ve tried getting rid of my no_match_intent because weirdly the “why” intent worked until I added the no_match intent in, but I ended up putting it back because it didn’t change anything. So far that’s all I’ve been able to think of; maybe I’m not great at debugging yet lol. What would you recommend trying next?

Right now, your code executes the whole program.

I would try to just focus on it executing the one line of action you want and then incorporating it into the program.

So if cubed_intent() isn’t being triggered. Write it so that it’s the only thing that is triggered and work from there.

Ohh, ok! I’ll try that, thanks!