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,
	}
}