Skip to content
Snippets Groups Projects
joker.rs 409 B
Newer Older
Stephen D's avatar
Stephen D committed
use serde_json::Value;

pub async fn tell_joke() -> Option<String> {
Stephen D's avatar
Stephen D committed
	let joke: Value = reqwest::get("https://v2.jokeapi.dev/joke/Programming")
		.await
		.ok()?
		.json()
		.await
		.ok()?;
Stephen D's avatar
Stephen D committed

	match joke["type"].as_str()? {
Stephen D's avatar
Stephen D committed
		"single" => Some(joke["joke"].as_str()?.to_owned()),
		"twopart" => Some(format!(
			"{}\r\n\r\n{}",
			joke["setup"].as_str()?,
			joke["delivery"].as_str()?
		)),
		_ => None,
Stephen D's avatar
Stephen D committed
	}
}