11use std:: time:: Duration ;
22
3- use crate :: { structures:: Embeddable , Data } ;
3+ use crate :: { structures:: Embeddable , Data , commands :: interaction_err } ;
44use :: serenity:: builder:: CreateEmbedAuthor ;
55use octocrab:: models:: issues:: Issue ;
66use octocrab:: models:: pulls:: PullRequest ;
77use poise:: serenity_prelude:: {
8- self as serenity, Colour , Context , CreateEmbed , Message , Permissions ,
8+ self as serenity, ButtonStyle , Colour , Context , CreateActionRow , CreateButton , CreateEmbed ,
9+ CreateInteractionResponse , Message , Permissions ,
910} ;
1011use regex:: Regex ;
1112
@@ -23,11 +24,15 @@ pub async fn message(data: &Data, ctx: &Context, message: &Message) {
2324 let ctx_id = message. id . get ( ) ; // poise context isn't available here.
2425 let remove_id = format ! ( "{}remove" , ctx_id) ;
2526 let hide_body_id = format ! ( "{}hide_body" , ctx_id) ;
27+ let remove = CreateActionRow :: Buttons ( vec ! [ CreateButton :: new( & remove_id)
28+ . label( "delete" )
29+ . style( ButtonStyle :: Danger ) ] ) ;
30+
2631 let components = serenity:: CreateActionRow :: Buttons ( vec ! [
27- serenity :: CreateButton :: new( & remove_id)
32+ CreateButton :: new( & remove_id)
2833 . label( "delete" )
29- . style( serenity :: ButtonStyle :: Danger ) ,
30- serenity :: CreateButton :: new( & hide_body_id) . label( "hide body" ) ,
34+ . style( ButtonStyle :: Danger ) ,
35+ CreateButton :: new( & hide_body_id) . label( "hide body" ) ,
3136 ] ) ;
3237
3338 let content: serenity:: CreateMessage = serenity:: CreateMessage :: default ( )
@@ -56,12 +61,14 @@ pub async fn message(data: &Data, ctx: &Context, message: &Message) {
5661 && ( press. user . id == message. author . id || has_perms)
5762 {
5863 let _ = press
59- . create_response ( ctx, serenity :: CreateInteractionResponse :: Acknowledge )
64+ . create_response ( ctx, CreateInteractionResponse :: Acknowledge )
6065 . await ;
6166 if let Ok ( ref msg) = msg_result {
6267 let _ = msg. delete ( ctx) . await ;
6368 }
6469 msg_deleted = true ;
70+ } else {
71+ interaction_err ( ctx, & press, "Unable to use interaction because you are missing `MANAGE_MESSAGES`." ) . await ;
6572 }
6673
6774 if press. data . custom_id == hide_body_id
@@ -82,12 +89,15 @@ pub async fn message(data: &Data, ctx: &Context, message: &Message) {
8289 ctx,
8390 serenity:: CreateInteractionResponse :: UpdateMessage (
8491 serenity:: CreateInteractionResponseMessage :: new ( )
85- . embeds ( hid_body_embeds) ,
92+ . embeds ( hid_body_embeds)
93+ . components ( vec ! [ remove. clone( ) ] ) ,
8694 ) ,
8795 )
8896 . await ;
8997 }
9098 body_hid = true ;
99+ } else {
100+ interaction_err ( ctx, & press, "Unable to use interaction because you are missing `MANAGE_MESSAGES`." ) . await ;
91101 }
92102 }
93103 // Triggers on timeout.
@@ -98,7 +108,6 @@ pub async fn message(data: &Data, ctx: &Context, message: &Message) {
98108 . await ;
99109 }
100110 }
101- //
102111 }
103112}
104113
0 commit comments