@@ -3,6 +3,7 @@ import ticketState from '../../states/TicketState.js';
33import Logger from '../../utils/logger.js' ;
44import { apiFetch } from '../../utils/apiFetch.js' ;
55import { replyError } from '../../utils/replyError.js' ;
6+ import { addRole , removeRole } from '../../utils/roles.js' ;
67
78export const data = new SlashCommandBuilder ( )
89 . setName ( 'ticket-add' )
@@ -12,10 +13,16 @@ export const data = new SlashCommandBuilder()
1213 . setName ( 'user' )
1314 . setDescription ( 'The user to add to the ticket.' )
1415 . setRequired ( true )
16+ )
17+ . addBooleanOption ( ( option ) =>
18+ option
19+ . setName ( 'restrict' )
20+ . setDescription ( 'Restrict the User' )
1521 ) ;
1622
1723export const execute = async ( interaction ) => {
1824 const user = interaction . options . getUser ( 'user' ) ;
25+ const shouldRestrict = interaction . options . getBoolean ( 'restrict' ) ?? false ;
1926 if (
2027 ! Object . keys ( ticketState . getChannelIds ( ) ) . includes ( interaction . channelId )
2128 ) {
@@ -66,6 +73,28 @@ export const execute = async (interaction) => {
6673 . setDescription ( `${ user } has been added to ${ interaction . channel } ` ) ,
6774 ] ,
6875 } ) ;
76+
77+ if ( shouldRestrict ) {
78+ let member
79+ try {
80+ member = await interaction . guild . members . fetch ( user . id ) ;
81+ } catch ( error ) {
82+ Logger . error ( `Could not get member for restricting: ${ error } ` ) ;
83+ return ;
84+ }
85+
86+ const addedRole = addRole ( member , process . env . RESTRICTED_ROLE_ID ) ;
87+ const removedRole = removeRole ( member , process . env . MEMBER_ROLE_ID ) ;
88+
89+ let restictMessage = `Could not restrict ${ user } .` ;
90+ if ( addedRole && removedRole ) {
91+ restictMessage = `${ user } was restricted.` ;
92+ }
93+ await interaction . followUp ( {
94+ content : restictMessage ,
95+ ephemeral : true ,
96+ } ) ;
97+ }
6998 } catch ( error ) {
7099 Logger . error ( `Could not add user to ticket: ${ error } ` ) ;
71100 await replyError (
0 commit comments