use fluxer_rs::{ api::channels::messages::SendMessage, context::FluxerClientContext, error::FluxerRsError, gateway::dispatch::DispatchHandlerTrait, serde::types::{ guild::GuildCreateData, message::{Embed, EmbedAuthor, EmbedField, EmbedFooter, EmbedMedia, MessageData}, }, }; use log::debug; pub struct ColorbotDispatchHandler; impl DispatchHandlerTrait for ColorbotDispatchHandler { async fn handle_message_create_dispatch( &self, data: MessageData, context: &FluxerClientContext, original_text: String, ) -> Result<(), FluxerRsError> { debug!("[DATA] [DISPATCH::MESSAGE_CREATE] {original_text}"); if let Some(context) = context.as_bot_context() { context.cmd_handler.handle(&data, &context.api).await? } Ok(()) } async fn handle_guild_create_dispatch( &self, data: GuildCreateData, context: &FluxerClientContext, original_text: String, ) -> Result<(), FluxerRsError> { debug!("[DATA] [DISPATCH::GUILD_CREATE] {original_text}"); if data.id == "1473686979970875591" { context.api .execute_call( SendMessage::builder() .content("Mhyello i am online") .channel_id("1474424011696861241") .embeds(vec![ Embed::builder() .title("Added to Queue") .color(0x4d6fb7) .fields(vec![ EmbedField::builder().name("Tracka").value("Sussy bakka").inline(true).build(), EmbedField::builder().name("Artist").value("Sussy bakka").inline(true).build(), EmbedField::builder().name("Durationa").value("Sussy bakka").inline(true).build(), EmbedField::builder().name("Position in Queue").value("Sussy bakka").inline(true).build() ]) .footer(EmbedFooter::builder().text("Requested by the goober").build()) .author(EmbedAuthor::builder().name("GOOB").icon_url("https://fluxerusercontent.com/avatars/1472242534880579616/4c64d1e4.webp").build()) .image(EmbedMedia::builder().url("https://s3.animalia.bio/animals/photos/full/1.25x1/sahra11jpg.webp").build()) .build(), ] ) .maybe_message_reference(None) .build()).await?; } Ok(()) } }