@@ -26,6 +26,7 @@ use crate::{
2626pub struct DiscordClient {
2727 channel_message_event_handlers : RwLock < HashMap < Snowflake , Vec < broadcast:: Sender < DiscordMessage > > > > ,
2828 client : OnceLock < serenity:: Client > ,
29+ user : OnceLock < DiscordMessageAuthor > ,
2930}
3031
3132impl DiscordClient {
@@ -51,6 +52,10 @@ impl DiscordClient {
5152 self . client . get ( ) . unwrap ( )
5253 }
5354
55+ pub fn user ( & self ) -> & DiscordMessageAuthor {
56+ self . user . get ( ) . unwrap ( )
57+ }
58+
5459 pub async fn add_channel_message_sender ( & self , channel : Snowflake , sender : broadcast:: Sender < DiscordMessage > ) {
5560 self . channel_message_event_handlers . write ( ) . await . entry ( channel) . or_default ( ) . push ( sender) ;
5661 }
@@ -72,7 +77,18 @@ struct RawClient(Arc<DiscordClient>);
7277impl RawEventHandler for RawClient {
7378 async fn raw_event ( & self , ctx : Context , ev : serenity:: model:: prelude:: Event ) {
7479 if let Event :: Unknown ( unk) = ev {
75- // writeln!(&mut File::create(unk.kind).unwrap(), "{:#?}", unk.value);
80+ 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+ } ) ;
91+ }
7692 }
7793 }
7894}
0 commit comments