@@ -21,62 +21,50 @@ pub(crate) struct ExactMessageLengthData {
2121#[ async_trait]
2222impl AprilFoolsChannel for ExactMessageLength {
2323 async fn get_error ( & self , context : & AprilFoolsMessageContext < ' _ > ) -> Option < String > {
24- let mut storage = GuildStorage :: get_mut ( context. guild_id ) . await ;
25- let Some ( expected_length_data) = & mut storage. april_fools_channels . exact_message_length
26- else {
27- storage. discard ( ) ;
24+ let storage = GuildStorage :: get ( context. guild_id ) . await ;
25+ let Some ( expected_length_data) = & storage. april_fools_channels . exact_message_length else {
2826 return None ;
2927 } ;
3028
3129 if expected_length_data. last_inform_message == Some ( context. message_id ) {
32- storage. discard ( ) ;
3330 return None ;
3431 }
3532
3633 let message_length = context. content . chars ( ) . count ( ) ;
37- let mut just_had_67 = false ;
3834
3935 if let Some ( expected_length) = expected_length_data. expected_length {
4036 if expected_length as usize != message_length {
41- storage. discard ( ) ;
4237 return Some ( format ! ( "Your message was the wrong length! Expected length {expected_length} but it was {message_length}." ) ) ;
4338 }
44-
45- just_had_67 = expected_length == 67 ;
4639 }
4740
48- let new_length = reroll_message_length ( just_had_67) ;
49- expected_length_data. expected_length = Some ( new_length) ;
50- storage. save ( ) . await ;
5141 None
5242 }
5343
5444 async fn on_success ( & self , context : & AprilFoolsMessageContext < ' _ > ) -> crate :: Result < ( ) > {
55- let mut storage = GuildStorage :: get_mut ( context. guild_id ) . await ;
56- let Some ( expected_length_data) = & mut storage. april_fools_channels . exact_message_length
57- else {
58- storage. discard ( ) ;
59- return Ok ( ( ) ) ;
60- } ;
61- let Some ( expected_length) = expected_length_data. expected_length else {
62- storage. discard ( ) ;
63- return Ok ( ( ) ) ;
64- } ;
65- let message = match context
45+ let just_had_67 = GuildStorage :: get ( context. guild_id )
46+ . await
47+ . april_fools_channels
48+ . exact_message_length
49+ . as_ref ( )
50+ . and_then ( |exact_message_length| exact_message_length. expected_length )
51+ == Some ( 67 ) ;
52+ let new_length = reroll_message_length ( just_had_67) ;
53+ let message = context
6654 . channel_id
6755 . send_message (
6856 & context. context ,
6957 CreateMessage :: new ( )
70- . content ( format ! ( "Now expecting message length of {expected_length }" ) ) ,
58+ . content ( format ! ( "Now expecting message length of {new_length }" ) ) ,
7159 )
72- . await
73- {
74- Ok ( message) => message,
75- Err ( err) => {
76- storage. discard ( ) ;
77- return Err ( err. into ( ) ) ;
78- }
60+ . await ?;
61+ let mut storage = GuildStorage :: get_mut ( context. guild_id ) . await ;
62+ let Some ( expected_length_data) = & mut storage. april_fools_channels . exact_message_length
63+ else {
64+ storage. discard ( ) ;
65+ return Ok ( ( ) ) ;
7966 } ;
67+ expected_length_data. expected_length = Some ( new_length) ;
8068 expected_length_data. last_inform_message = Some ( message. id ) ;
8169 storage. save ( ) . await ;
8270 Ok ( ( ) )
0 commit comments