The joke command fetches a random joke from the Official Jokes API and hides the punchline using Discord’s spoiler tags.

Usage

!joke

Example response

What do you get when you cross a snowman with a vampire? ||Frostbite.||

The text between || is hidden until clicked.

Source code

def joke():
    raw = requests.get("https://official-joke-api.appspot.com/jokes/random")
    if raw.status_code != 200:
        return f"{error_messages['joke']} (HTTP {raw.status_code})"
    try:
        data = raw.json()
        response = (
            choice(output["general"]["joke"])
            .replace(r"{{SETUP}}", data["setup"])
            .replace(r"{{PUNCHLINE}}", data["punchline"])
        )
    except (requests.exceptions.JSONDecodeError, KeyError):
        response = error_messages["joke"]
    return response