@@ -2,64 +2,64 @@ import plan from '../src/reset/plan.mjs';
22import execute from '../src/reset/execute.mjs' ;
33import createDefaults from '../src/reset/createDefaults.mjs' ;
44
5- export default async function ( { log, msg } , interaction ) {
5+ export default async function ( { log, msg } , interaction ) {
66 log . debug ( 'reset Request' , { interaction } ) ;
77
88 // permission guard
9- const isAdmin = ( ( ) => { try { if ( interaction . member ?. permissions ) return interaction . member . permissions . has ( 'ADMINISTRATOR' ) ; if ( interaction . memberPermissions ) return interaction . memberPermissions . has ( 'ADMINISTRATOR' ) ; } catch ( e ) { } return false ; } ) ( ) ;
10- if ( ! isAdmin ) { return interaction . reply ( { content : msg ( 'reset.permissionRequired' , 'You must have Administrator permission to run /reset.' ) , flags : 1 << 6 } ) ; }
9+ const isAdmin = ( ( ) => { try { if ( interaction . member ?. permissions ) return interaction . member . permissions . has ( 'ADMINISTRATOR' ) ; if ( interaction . memberPermissions ) return interaction . memberPermissions . has ( 'ADMINISTRATOR' ) ; } catch ( e ) { } return false ; } ) ( ) ;
10+ if ( ! isAdmin ) { return interaction . reply ( { content : msg ( 'reset.permissionRequired' , 'You must have Administrator permission to run /reset.' ) , flags : 1 << 6 } ) ; }
1111
12- const dryRun = ( interaction . options && interaction . options . getBoolean && typeof interaction . options . getBoolean ( 'dry_run' ) === 'boolean' ) ? interaction . options . getBoolean ( 'dry_run' ) : ( ( interaction . data && interaction . data . options && interaction . data . options . find ( o => o . name === 'dry_run' ) ) ? ! ! interaction . data . options . find ( o => o . name === 'dry_run' ) . value : true ) ;
12+ const dryRun = ( interaction . options && interaction . options . getBoolean && typeof interaction . options . getBoolean ( 'dry_run' ) === 'boolean' ) ? interaction . options . getBoolean ( 'dry_run' ) : ( ( interaction . data && interaction . data . options && interaction . data . options . find ( o => o . name === 'dry_run' ) ) ? ! ! interaction . data . options . find ( o => o . name === 'dry_run' ) . value : true ) ;
1313
1414 const steps = [
15- msg ( 'reset.step.plan' , 'Plan' ) ,
16- msg ( 'reset.step.delete' , 'Delete content' ) ,
17- msg ( 'reset.step.applyDefaults' , 'Apply guild defaults' ) ,
18- msg ( 'reset.step.createDefaults' , 'Create defaults' ) ,
19- msg ( 'reset.step.finalize' , 'Finalize' )
15+ msg ( 'reset.step.plan' , 'Plan' ) ,
16+ msg ( 'reset.step.delete' , 'Delete content' ) ,
17+ msg ( 'reset.step.applyDefaults' , 'Apply guild defaults' ) ,
18+ msg ( 'reset.step.createDefaults' , 'Create defaults' ) ,
19+ msg ( 'reset.step.finalize' , 'Finalize' )
2020 ] ;
21- let content = steps . map ( s => `- \u23f3 ${ s } ` ) . join ( '\n' ) ;
21+ let content = steps . map ( s => `- \u23f3 ${ s } ` ) . join ( '\n' ) ;
2222 await interaction . reply ( { content } ) ;
23- async function markNext ( ) { content = content . replace ( '\u23f3' , '\u2705' ) ; try { await interaction . editReply ( { content } ) ; } catch ( e ) { log ?. warn && log . warn ( 'editReply failed' , { err :String ( e ) } ) } }
23+ async function markNext ( ) { content = content . replace ( '\u23f3' , '\u2705' ) ; try { await interaction . editReply ( { content } ) ; } catch ( e ) { log ?. warn && log . warn ( 'editReply failed' , { err : String ( e ) } ) } }
2424
2525 const guild = interaction . guild || ( interaction . client && interaction . client . guilds && interaction . client . guilds . cache && interaction . client . guilds . cache . get ( interaction . guildId ) ) ;
26- if ( ! guild ) { await interaction . editReply ( { content : msg ( 'reset.notInGuild' , 'This command must be used in a guild.' ) } ) ; return null ; }
26+ if ( ! guild ) { await interaction . editReply ( { content : msg ( 'reset.notInGuild' , 'This command must be used in a guild.' ) } ) ; return null ; }
2727
2828 // Step 1: Plan
2929 const p = await plan ( guild , log ) ;
3030 await markNext ( ) ;
3131
3232 // show plan summary
33- try { await interaction . editReply ( { content : content + `\n\n${ msg ( 'reset.plannedDeletions' , `Planned deletions: roles=${ p . roles . length } , channels=${ p . channels . length } , emojis=${ p . emojis . length } , stickers=${ p . stickers . length } \nDry run: ${ dryRun } ` ) } ` } ) ; } catch ( e ) { }
33+ try { await interaction . editReply ( { content : content + `\n\n${ msg ( 'reset.plannedDeletions' , `Planned deletions: roles=${ p . roles . length } , channels=${ p . channels . length } , emojis=${ p . emojis . length } , stickers=${ p . stickers . length } \nDry run: ${ dryRun } ` ) } ` } ) ; } catch ( e ) { }
3434
3535 // Step 2: Execute deletions
3636 const results = await execute ( p , guild , dryRun , log ) ;
3737 await markNext ( ) ;
3838
3939 // Step 3: Apply guild defaults (name/icon)
4040 const guildDefaultsResult = { nameChanged : false , iconRemoved : false , error : null } ;
41- try {
42- if ( dryRun ) { log ?. info && log . info ( 'DRY RUN: would set guild name to "default server" and remove icon' ) ; }
43- else {
44- try {
41+ try {
42+ if ( dryRun ) { log ?. info && log . info ( 'DRY RUN: would set guild name to "default server" and remove icon' ) ; }
43+ else {
44+ try {
4545 await guild . setName ( 'default server' , 'reset: reset name' ) ;
4646 guildDefaultsResult . nameChanged = true ;
47- } catch ( err ) { guildDefaultsResult . error = guildDefaultsResult . error || [ ] ; guildDefaultsResult . error . push ( { action : 'setName' , err : String ( err ) } ) ; log ?. warn && log . warn ( 'Failed to set guild name' , { err :String ( err ) } ) ; }
48- try {
47+ } catch ( err ) { guildDefaultsResult . error = guildDefaultsResult . error || [ ] ; guildDefaultsResult . error . push ( { action : 'setName' , err : String ( err ) } ) ; log ?. warn && log . warn ( 'Failed to set guild name' , { err : String ( err ) } ) ; }
48+ try {
4949 // remove icon
5050 await guild . setIcon ( null , 'reset: remove icon' ) ;
5151 guildDefaultsResult . iconRemoved = true ;
52- } catch ( err ) { guildDefaultsResult . error = guildDefaultsResult . error || [ ] ; guildDefaultsResult . error . push ( { action : 'removeIcon' , err : String ( err ) } ) ; log ?. warn && log . warn ( 'Failed to remove guild icon' , { err :String ( err ) } ) ; }
52+ } catch ( err ) { guildDefaultsResult . error = guildDefaultsResult . error || [ ] ; guildDefaultsResult . error . push ( { action : 'removeIcon' , err : String ( err ) } ) ; log ?. warn && log . warn ( 'Failed to remove guild icon' , { err : String ( err ) } ) ; }
5353 }
54- } catch ( err ) { guildDefaultsResult . error = guildDefaultsResult . error || [ ] ; guildDefaultsResult . error . push ( { action : 'applyGuildDefaults' , err : String ( err ) } ) ; log ?. warn && log . warn ( 'Apply guild defaults failed' , { err :String ( err ) } ) ; }
54+ } catch ( err ) { guildDefaultsResult . error = guildDefaultsResult . error || [ ] ; guildDefaultsResult . error . push ( { action : 'applyGuildDefaults' , err : String ( err ) } ) ; log ?. warn && log . warn ( 'Apply guild defaults failed' , { err : String ( err ) } ) ; }
5555 await markNext ( ) ;
5656
5757 // Step 4: Create defaults
5858 const created = await createDefaults ( guild , { } , dryRun , log ) ;
5959 await markNext ( ) ;
6060
6161 // Step 5: Finalize
62- try { await interaction . followUp ( { content : msg ( 'reset.finalResult' , `reset ${ dryRun ? 'dry-run completed' : 'completed' } . Results: ${ JSON . stringify ( results ) } . Guild defaults: ${ JSON . stringify ( guildDefaultsResult ) } . Defaults created: ${ JSON . stringify ( created ) } ` ) , ephemeral : false } ) ; } catch ( e ) { }
62+ try { await interaction . followUp ( { content : msg ( 'reset.finalResult' , `reset ${ dryRun ? 'dry-run completed' : 'completed' } . Results: ${ JSON . stringify ( results ) } . Guild defaults: ${ JSON . stringify ( guildDefaultsResult ) } . Defaults created: ${ JSON . stringify ( created ) } ` ) , ephemeral : false } ) ; } catch ( e ) { }
6363
6464 return { plan : p , results, guildDefaultsResult, created } ;
6565}
0 commit comments