File tree Expand file tree Collapse file tree 1 file changed +21
-10
lines changed
Expand file tree Collapse file tree 1 file changed +21
-10
lines changed Original file line number Diff line number Diff line change @@ -78,16 +78,27 @@ impl RawEventHandler for RawClient {
7878 async fn raw_event ( & self , ctx : Context , ev : serenity:: model:: prelude:: Event ) {
7979 if let Event :: Unknown ( unk) = ev {
8080 if unk. kind == "READY" {
81- let user = unk. value . as_object ( ) . unwrap ( ) . get ( "user" ) . unwrap ( ) . as_object ( ) . unwrap ( ) ;
82-
83- self . 0 . user . get_or_init ( || DiscordMessageAuthor {
84- display_name : DisplayName ( user. get ( "username" ) . unwrap ( ) . as_str ( ) . unwrap ( ) . to_owned ( ) ) ,
85- icon : format ! (
86- "https://cdn.discordapp.com/avatars/{}/{}" ,
87- user. get( "id" ) . unwrap( ) . as_str( ) . unwrap( ) ,
88- user. get( "avatar" ) . unwrap( ) . as_str( ) . unwrap( )
89- ) ,
90- } ) ;
81+ if let Some ( user) = unk. value . as_object ( ) . and_then ( |obj| obj. get ( "user" ) ) . and_then ( |u| u. as_object ( ) ) {
82+ let username = user. get ( "username" ) . and_then ( |u| u. as_str ( ) ) . unwrap_or ( "Unknown User" ) . to_owned ( ) ;
83+
84+ let user_id = user. get ( "id" ) . and_then ( |id| id. as_str ( ) ) . unwrap_or_default ( ) ;
85+
86+ let icon = user
87+ . get ( "avatar" )
88+ . and_then ( |avatar| avatar. as_str ( ) )
89+ . map ( |avatar| format ! ( "https://cdn.discordapp.com/avatars/{}/{}" , user_id, avatar) )
90+ . unwrap_or_else ( || {
91+ format ! (
92+ "https://cdn.discordapp.com/embed/avatars/{}.png" ,
93+ ( user_id. parse:: <u64 >( ) . unwrap_or( 0 ) % 5 )
94+ )
95+ } ) ;
96+
97+ self . 0 . user . get_or_init ( || DiscordMessageAuthor {
98+ display_name : DisplayName ( username) ,
99+ icon,
100+ } ) ;
101+ }
91102 }
92103 }
93104 }
You can’t perform that action at this time.
0 commit comments