use serde_json::Value; pub async fn tell_joke() -> Option<String> { let joke: Value = reqwest::get("https://v2.jokeapi.dev/joke/Programming") .await .ok()? .json() .await .ok()?; match joke["type"].as_str()? { "single" => Some(joke["joke"].as_str()?.to_owned()), "twopart" => Some(format!( "{}\r\n\r\n{}", joke["setup"].as_str()?, joke["delivery"].as_str()? )), _ => None, } }