use panda::{events::GuildMemberAdd, HandlerResult, Session};
use std::{collections::HashMap, error::Error};
use futures::lock::Mutex;
#[derive(Default)]
struct State {
guild_members: Mutex<HashMap<String, u64>>,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let mut client = panda::new_with_state("your token here", State::default()).await?;
client.on_guild_member_add(member_add_handler);
client.start().await?;
Ok(())
}
async fn member_add_handler(session: Session<State>, member: GuildMemberAdd) -> HandlerResult {
let guild_id = member.guild_id.as_ref().unwrap();
let mut counter = session.state.guild_members.lock().await;
let guild_count = counter.entry(guild_id.to_owned()).or_insert(0);
println!(
"A new member joined server {}, current count: {}",
guild_id, guild_count
);
Ok(())
}