@@ -9,15 +9,15 @@ pub struct MenuPaginator<'a> {
99 index : usize ,
1010 mode : TTSMode ,
1111 ctx : Context < ' a > ,
12- pages : Vec < String > ,
12+ pages : Box < [ String ] > ,
1313 footer : Cow < ' a , str > ,
1414 current_voice : String ,
1515}
1616
1717impl < ' a > MenuPaginator < ' a > {
1818 pub fn new (
1919 ctx : Context < ' a > ,
20- pages : Vec < String > ,
20+ pages : Box < [ String ] > ,
2121 current_voice : String ,
2222 mode : TTSMode ,
2323 footer : Cow < ' a , str > ,
@@ -76,22 +76,20 @@ impl<'a> MenuPaginator<'a> {
7676
7777 async fn edit_message (
7878 & self ,
79- message : serenity:: MessageId ,
79+ interaction : serenity:: ComponentInteraction ,
8080 disable : bool ,
81- ) -> serenity:: Result < serenity:: MessageId > {
82- let http = self . ctx . http ( ) ;
83- let channel_id = self . ctx . channel_id ( ) ;
84-
81+ ) -> serenity:: Result < ( ) > {
8582 let components = [ self . create_action_row ( disable) ] ;
86- let builder = EditMessage :: default ( )
83+ let builder = CreateInteractionResponseMessage :: default ( )
8784 . embed ( self . create_page ( & self . pages [ self . index ] ) )
8885 . components ( & components) ;
8986
90- Ok ( channel_id. edit_message ( http, message, builder) . await ?. id )
87+ let response = CreateInteractionResponse :: UpdateMessage ( builder) ;
88+ interaction. create_response ( self . ctx . http ( ) , response) . await
9189 }
9290
9391 pub async fn start ( mut self ) -> serenity:: Result < ( ) > {
94- let mut message_id = self . create_message ( ) . await ?;
92+ let message_id = self . create_message ( ) . await ?;
9593 let serenity_context = self . ctx . serenity_context ( ) ;
9694
9795 loop {
@@ -104,30 +102,28 @@ impl<'a> MenuPaginator<'a> {
104102 break Ok ( ( ) ) ;
105103 } ;
106104
107- message_id = match interaction. data . custom_id . as_str ( ) {
105+ match interaction. data . custom_id . as_str ( ) {
108106 "⏮️" => {
109107 self . index = 0 ;
110- self . edit_message ( message_id , false ) . await ?
108+ self . edit_message ( interaction , false ) . await ?;
111109 }
112110 "◀" => {
113- self . index -= 1 ;
114- self . edit_message ( message_id , false ) . await ?
111+ self . index = self . index . saturating_sub ( 1 ) ;
112+ self . edit_message ( interaction , false ) . await ?;
115113 }
116114 "⏹️" => {
117- self . edit_message ( message_id, true ) . await ?;
118- return interaction. defer ( & serenity_context. http ) . await ;
115+ return self . edit_message ( interaction, true ) . await ;
119116 }
120117 "▶️" => {
121- self . index += 1 ;
122- self . edit_message ( message_id , false ) . await ?
118+ self . index = self . index . saturating_add ( 1 ) . max ( self . pages . len ( ) - 1 ) ;
119+ self . edit_message ( interaction , false ) . await ?;
123120 }
124121 "⏭️" => {
125122 self . index = self . pages . len ( ) - 1 ;
126- self . edit_message ( message_id , false ) . await ?
123+ self . edit_message ( interaction , false ) . await ?;
127124 }
128125 _ => unreachable ! ( ) ,
129- } ;
130- interaction. defer ( & serenity_context. http ) . await ?;
126+ }
131127 }
132128 }
133129}
0 commit comments