@@ -4,7 +4,7 @@ use std::{
44} ;
55
66use serenity:: {
7- all:: { Cache , ChannelId , Context , CreateMessage , Event , EventHandler , GatewayIntents , GetMessages , Http , Message , MessageId , RawEventHandler } ,
7+ all:: { Cache , ChannelId , Context , CreateMessage , EventHandler , GatewayIntents , GetMessages , Http , Message , MessageId , Ready } ,
88 async_trait,
99} ;
1010use tokio:: sync:: { broadcast, RwLock } ;
@@ -40,7 +40,6 @@ impl DiscordClient {
4040
4141 let mut discord = serenity:: Client :: builder ( token, GatewayIntents :: all ( ) )
4242 . event_handler_arc ( client. clone ( ) )
43- . raw_event_handler ( RawClient ( client. clone ( ) ) )
4443 . await
4544 . expect ( "Error creating client" ) ;
4645
@@ -110,42 +109,16 @@ impl DiscordClient {
110109 }
111110}
112111
113- struct RawClient ( Arc < DiscordClient > ) ;
114-
115- #[ async_trait]
116- impl RawEventHandler for RawClient {
117- async fn raw_event ( & self , _: Context , ev : serenity:: model:: prelude:: Event ) {
118- if let Event :: Unknown ( unk) = ev {
119- if unk. kind == "READY" {
120- if let Some ( user) = unk. value . as_object ( ) . and_then ( |obj| obj. get ( "user" ) ) . and_then ( |u| u. as_object ( ) ) {
121- let username = user. get ( "username" ) . and_then ( |u| u. as_str ( ) ) . unwrap_or ( "Unknown User" ) . to_owned ( ) ;
122-
123- let user_id = user. get ( "id" ) . and_then ( |id| id. as_str ( ) ) . unwrap_or_default ( ) ;
124-
125- let icon = user
126- . get ( "avatar" )
127- . and_then ( |avatar| avatar. as_str ( ) )
128- . map ( |avatar| format ! ( "https://cdn.discordapp.com/avatars/{}/{}" , user_id, avatar) )
129- . unwrap_or_else ( || {
130- format ! (
131- "https://cdn.discordapp.com/embed/avatars/{}.png" ,
132- ( user_id. parse:: <u64 >( ) . unwrap_or( 0 ) % 5 )
133- )
134- } ) ;
135-
136- self . 0 . user . get_or_init ( || DiscordMessageAuthor {
137- display_name : DisplayName ( username) ,
138- icon,
139- id : user_id. to_owned ( ) ,
140- } ) ;
141- }
142- }
143- }
144- }
145- }
146112
147113#[ async_trait]
148114impl EventHandler for DiscordClient {
115+ async fn ready ( & self , _: Context , ready : Ready ) {
116+ self . user . get_or_init ( || DiscordMessageAuthor {
117+ display_name : DisplayName ( ready. user . name . clone ( ) ) ,
118+ icon : ready. user . face ( ) ,
119+ id : ready. user . id . to_string ( ) ,
120+ } ) ;
121+ }
149122 async fn message ( & self , _: Context , msg : Message ) {
150123 let snowflake = Snowflake {
151124 content : msg. channel_id . get ( ) ,
0 commit comments