11use std:: {
2- collections:: HashMap ,
3- sync:: { Arc , OnceLock } ,
2+ collections:: HashMap , sync:: { Arc , OnceLock }
43} ;
54
65use serenity:: {
7- all:: { ChannelId , Context , CreateMessage , Event , EventHandler , GatewayIntents , Message , Nonce , RawEventHandler } ,
8- async_trait,
6+ all:: { Cache , ChannelId , Context , CreateMessage , Event , EventHandler , GatewayIntents , Http , Message , Nonce , RawEventHandler } , async_trait
97} ;
108use tokio:: sync:: { broadcast, RwLock } ;
119
1210use crate :: {
1311 message:: {
14- author:: { DiscordMessageAuthor , DisplayName } ,
15- content:: DiscordMessageContent ,
16- DiscordMessage ,
17- } ,
18- snowflake:: Snowflake ,
12+ author:: { DiscordMessageAuthor , DisplayName } , content:: DiscordMessageContent , DiscordMessage
13+ } , snowflake:: Snowflake
1914} ;
2015
16+ #[ allow( dead_code) ]
17+ struct SerenityClient {
18+ // enable this when we enable the serenity[voice] feature
19+ // voice_manager: Option<Arc<dyn VoiceGatewayManager>>
20+ http : Arc < Http > ,
21+ cache : Arc < Cache > ,
22+ }
23+
2124#[ derive( Default ) ]
2225pub struct DiscordClient {
2326 channel_message_event_handlers : RwLock < HashMap < Snowflake , Vec < broadcast:: Sender < DiscordMessage > > > > ,
24- client : OnceLock < serenity :: Client > ,
27+ client : OnceLock < SerenityClient > ,
2528 user : OnceLock < DiscordMessageAuthor > ,
2629}
2730
@@ -35,16 +38,22 @@ impl DiscordClient {
3538 . await
3639 . expect ( "Error creating client" ) ;
3740
38- if let Err ( why) = discord. start ( ) . await {
39- panic ! ( "Client error: {why:?}" ) ;
40- }
41+ let _ = client. client . set ( SerenityClient {
42+ // voice_manager: discord.voice_manager.clone(),
43+ cache : discord. cache . clone ( ) ,
44+ http : discord. http . clone ( ) ,
45+ } ) ;
4146
42- let _ = client. client . set ( discord) ;
47+ tokio:: spawn ( async move {
48+ if let Err ( why) = discord. start ( ) . await {
49+ panic ! ( "Client error: {why:?}" ) ;
50+ }
51+ } ) ;
4352
4453 client
4554 }
4655
47- fn discord ( & self ) -> & serenity :: Client {
56+ fn discord ( & self ) -> & SerenityClient {
4857 self . client . get ( ) . unwrap ( )
4958 }
5059
0 commit comments