diff --git a/src/bot.rs b/src/bot.rs index 3061d17..7b99cb3 100644 --- a/src/bot.rs +++ b/src/bot.rs @@ -1,7 +1,7 @@ use serenity::{ - async_trait, - model::{channel::Message, gateway::Ready}, - prelude::*, + async_trait, + model::{channel::Message, gateway::Ready}, + prelude::*, }; mod token; @@ -13,27 +13,27 @@ struct Handler; #[async_trait] impl EventHandler for Handler { - async fn message(&self, ctx: Context, msg: Message) { - if msg.content == HELP_COMMAND { - if let Err(why) = msg.channel_id.say(&ctx.http, HELP_MESSAGE).await { - println!("Error sending message: {:?}", why); - } - } - } + async fn message(&self, ctx: Context, msg: Message) { + if msg.content == HELP_COMMAND { + if let Err(why) = msg.channel_id.say(&ctx.http, HELP_MESSAGE).await { + println!("Error sending message: {:?}", why); + } + } + } - async fn ready(&self, _: Context, ready: Ready) { - println!("{} is connected!", ready.user.name); - } + async fn ready(&self, _: Context, ready: Ready) { + println!("{} is connected!", ready.user.name); + } } -async fn start_discord_bot() -> Result { - let mut client = Client::new(token::TOKEN) - .event_handler(Handler) - .await - .map_err(|why| format!("Client error: {:?}", why))?; +pub async fn start_discord_bot() -> Result { + let mut client = Client::builder(token::TOKEN) + .event_handler(Handler) + .await + .map_err(|why| format!("Client error: {:?}", why))?; - if let Err(why) = client.start().await { - return Err(format!("Client error: {:?}", why)); - } - Ok(client) + if let Err(why) = client.start().await { + return Err(format!("Client error: {:?}", why)); + } + Ok(client) } diff --git a/src/main.rs b/src/main.rs index 55b34fa..c9251bb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,78 +1,77 @@ use eframe::egui; use image::GenericImageView; use serenity::prelude::*; -use std::{error::Error, sync::Arc, thread, time}; +use std::{error::Error, sync::Arc, thread, time, future::Future}; mod bot; const MAX_FPS: f32 = 30.0; fn main() -> Result<(), eframe::Error> { - let icon_data = load_icon().unwrap_or_default(); + let icon_data = load_icon().unwrap_or_default(); - let options = eframe::NativeOptions { - viewport: egui::ViewportBuilder::default() - .with_inner_size([1200.0, 800.0]) - .with_icon(Arc::new(icon_data)), - ..Default::default() - }; + let options = eframe::NativeOptions { + viewport: egui::ViewportBuilder::default() + .with_inner_size([1200.0, 800.0]) + .with_icon(Arc::new(icon_data)), + ..Default::default() + }; - eframe::run_native( - "Jiji", - options, - Box::new(move |_cc| Box::from(Jiji::default())), - ) + eframe::run_native( + "Jiji", + options, + Box::new(move |_cc| Box::from(Jiji::default())), + ) } struct Jiji { - next_frame: time::Instant, - bot: Option, + next_frame: time::Instant, + bot: Option, + bot_future: Option>>>, } impl Default for Jiji { - fn default() -> Self { - // should start the bot - Self { - next_frame: time::Instant::now(), - bot: None, - //bot_process_reference - } - } + fn default() -> Self { + Self { + next_frame: time::Instant::now(), + bot: None, + bot_future: Some(Box::new(bot::start_discord_bot())), + } + } } impl eframe::App for Jiji { - fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { - thread::sleep(time::Duration::from_secs_f32( - ((1.0 / MAX_FPS) - self.next_frame.elapsed().as_secs_f32()).max(0.0), - )); - self.next_frame = time::Instant::now(); + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + thread::sleep(time::Duration::from_secs_f32( + ((1.0 / MAX_FPS) - self.next_frame.elapsed().as_secs_f32()).max(0.0), + )); + self.next_frame = time::Instant::now(); - //here if bot started put its reference in self.bot - - self.draw_feed(ctx); - } + self.draw_feed(ctx); + } } impl Jiji { - pub fn draw_feed(&mut self, ctx: &egui::Context) { - egui::CentralPanel::default().show(ctx, |ui| { - ui.label("Hello there"); - }); - } + pub fn draw_feed(&mut self, ctx: &egui::Context) { + egui::CentralPanel::default().show(ctx, |ui| { + ui.label("Hello there"); + }); + } + } pub fn load_icon() -> Result> { - let (icon_rgba, icon_width, icon_height) = { - let icon = include_bytes!("../assets/icon.png"); - let image = image::load_from_memory(icon)?; - let rgba = image.clone().into_rgba8().to_vec(); - let (width, height) = image.dimensions(); - (rgba, width, height) - }; + let (icon_rgba, icon_width, icon_height) = { + let icon = include_bytes!("../assets/icon.png"); + let image = image::load_from_memory(icon)?; + let rgba = image.clone().into_rgba8().to_vec(); + let (width, height) = image.dimensions(); + (rgba, width, height) + }; - Ok(egui::IconData { - rgba: icon_rgba, - width: icon_width, - height: icon_height, - }) + Ok(egui::IconData { + rgba: icon_rgba, + width: icon_width, + height: icon_height, + }) }