use serenity::async_trait; use serenity::model::{gateway::Ready, guild::Member}; use serenity::prelude::*; use serenity::Client; struct Handler; #[async_trait] impl EventHandler for Handler { async fn guild_member_addition(&self, ctx: Context, new_member: Member) { if let Ok(partial_guild) = new_member.guild_id.to_partial_guild(&ctx.http).await { if let Some(system_channel) = partial_guild.system_channel_id { match system_channel.say(ctx.http, "Bonjour").await { Ok(ok) => { println!("Greeted {:?}", ok); } Err(err) => { eprintln!("Failed {:?}", err); } } } } } async fn ready(&self, ctx: Context, ready: Ready) { ctx.invisible().await; println!( "{}#{} is connected.", ready.user.name, ready.user.discriminator ); } } #[tokio::main] async fn main() { let mut client = Client::builder( "ODU5NTIzMDA4MTc4ODE1MDE2.G8hAh4.IzWYvNpu0dtvQJBkrG-WuQuS548oi9mTNCcgA8", GatewayIntents::GUILD_MEMBERS, ) .event_handler(Handler) .await .expect("Error creating client"); if let Err(why) = client.start().await { eprintln!("Error with client: {:?}", why); } }