11import { SlashCommandBuilder , PermissionsBitField } from 'discord.js' ;
22import { buildEmbed } from '../utils/embed' ;
33
4+ const EPHEMERAL_FLAG = 1 << 6 ;
5+
46const data = new SlashCommandBuilder ( )
57 . setName ( 'ticketclose' )
68 . setDescription ( 'Cierra el ticket actual (solo junta)' ) ;
79
810async function execute ( interaction : any ) {
911 // Require MANAGE_CHANNELS or equivalent (JUNTA). Adjust to your role check if needed.
1012 if ( ! interaction . memberPermissions ?. has ( PermissionsBitField . Flags . ManageChannels ) ) {
11- return interaction . reply ( { content : 'Solo JUNTA puede cerrar tickets.' , ephemeral : true } ) ;
13+ return interaction . reply ( {
14+ content : 'Solo JUNTA puede cerrar tickets.' ,
15+ flags : EPHEMERAL_FLAG ,
16+ } ) ;
1217 }
1318 const channel = interaction . channel ;
1419 const category = channel ?. parent ;
1520 try {
16- await interaction . reply ( {
21+ const respond =
22+ interaction . deferred || interaction . replied
23+ ? interaction . editReply . bind ( interaction )
24+ : interaction . reply . bind ( interaction ) ;
25+
26+ await respond ( {
1727 embeds : [ buildEmbed ( { title : 'Ticket' , description : 'Ticket cerrado' } ) ] ,
18- ephemeral : true ,
28+ flags : EPHEMERAL_FLAG ,
1929 } ) ;
30+
2031 if ( channel && channel . deletable ) await channel . delete ( 'Ticket cerrado' ) ;
2132 if ( category && category . children ) {
2233 for await ( const child of category . children . cache . values ( ) ) {
@@ -26,7 +37,7 @@ async function execute(interaction: any) {
2637 }
2738 } catch ( err ) {
2839 console . error ( 'Error closing ticket' , err ) ;
29- await interaction . followUp ?.( { content : 'Error al cerrar el ticket.' , ephemeral : true } ) ;
40+ await interaction . followUp ?.( { content : 'Error al cerrar el ticket.' , flags : EPHEMERAL_FLAG } ) ;
3041 }
3142}
3243
0 commit comments