use crate::handlers::LineHandler;
use crate::joker::tell_joke;
use serenity::async_trait;
use serenity::model::channel::Message;
use serenity::prelude::*;

pub struct JokeHandler;

#[async_trait]
impl LineHandler for JokeHandler {
	async fn line(&self, ctx: &Context, msg: &Message, line: &str) {
		if line == "!JOKE" {
			match tell_joke().await {
				Some(s) => msg.channel_id.say(&ctx, s).await.unwrap(),
				None => msg
					.channel_id
					.say(&ctx, "There was an error while fetching a joke.")
					.await
					.unwrap(),
			};
		}
	}
}

impl Default for JokeHandler {
	fn default() -> Self {
		Self
	}
}