use async_trait::async_trait; use xtra::{Context, Handler, Message}; use crate::bot::MasterBot; use crate::web_server::BotData; pub struct BotNameListRequest; impl Message for BotNameListRequest { type Result = Vec; } #[async_trait] impl Handler for MasterBot { async fn handle(&mut self, _: BotNameListRequest, _: &mut Context) -> Vec { self.bot_names() } } pub struct BotDataListRequest; impl Message for BotDataListRequest { type Result = Vec; } #[async_trait] impl Handler for MasterBot { async fn handle(&mut self, _: BotDataListRequest, _: &mut Context) -> Vec { self.bot_datas().await } } pub struct BotDataRequest(pub String); impl Message for BotDataRequest { type Result = Option; } #[async_trait] impl Handler for MasterBot { async fn handle(&mut self, r: BotDataRequest, _: &mut Context) -> Option { let name = r.0; self.bot_data(name).await } }