def METHOD_NAME(self, attributes, story_type):
    """
    Choose a story.
    """
    already_told_stories = attributes.get("already_told_stories", [])
    try:  # Try to get a story that haven't been told already
        story = random.choice(list(set(self.stories[story_type].keys()) - set(already_told_stories)))
    except IndexError:  # We run out of stories
        phrase = "Oh, I am sorry, but I've run out of stories. Maybe you have any to share with me?"
        status = self.status_constants["cannot"]
    else:  # Tell a story setup
        already_told_stories += [story]
        phrase = self.stories[story_type][story]["setup"] + "..." + random.choice(self.phrases["what_happend_next"])
        status = self.status_constants["must"]
        attributes["state"] = "setup"
        attributes["story"] = story
        attributes["already_told_stories"] = already_told_stories
    return phrase, status, attributes