use std::time::Instant;
use refluxer::model::message::Message;
use refluxer::model::user::User;
use refluxer::{Client, Context, EventHandler};
struct Handler;
#[async_trait::async_trait]
impl EventHandler for Handler {
async fn ready(&self, _ctx: Context, user: User) {
println!("Connected as {}#{}", user.username, user.discriminator);
}
async fn resumed(&self, _ctx: Context) {
println!("Session resumed!");
}
async fn message_create(&self, ctx: Context, msg: Message) {
if msg.author.bot.unwrap_or(false) {
return;
}
if msg.content == "!ping" {
let start = Instant::now();
let result = ctx
.send(msg.channel_id)
.content("Pong!")
.reply(msg.id)
.embed(|e| {
e.title("Pong!")
.description("Bot is alive and responding.")
.color(0x00CC88)
.field(
"Latency",
format!("{}ms", start.elapsed().as_millis()),
true,
)
.timestamp_now()
.footer("refluxer")
})
.await;
if let Err(e) = result {
eprintln!("Failed to send message: {e}");
}
}
}
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt::init();
let token = std::env::var("FLUXER_TOKEN").expect("FLUXER_TOKEN env var required");
let client = Client::builder()
.token(&token)
.event_handler(Handler)
.build()
.expect("failed to build client");
if let Err(e) = client.start().await {
eprintln!("Client error: {e}");
}
}