File tree Expand file tree Collapse file tree 7 files changed +92
-29
lines changed Expand file tree Collapse file tree 7 files changed +92
-29
lines changed Original file line number Diff line number Diff line change @@ -16,16 +16,29 @@ module.exports = {
16
16
modOnly : true ,
17
17
ticketOnly : true ,
18
18
run : async ( interaction ) => {
19
- const user = interaction . options . getUser ( 'user' ) ;
20
- await interaction . channel . permissionOverwrites . edit ( user , {
21
- VIEW_CHANNEL : true ,
22
- SEND_MESSAGES : true
23
- } ) ;
24
- const embed = new MessageEmbed ( )
25
- . setDescription ( `**👌 Added ${ user } to the ticket.**` )
26
- . setColor ( settings . embedColor )
27
- interaction . reply ( {
28
- embeds : [ embed ]
29
- } )
19
+ const member = interaction . options . getMember ( 'user' ) ;
20
+ if ( interaction . channel . permissionsFor ( member ) . has ( 'VIEW_CHANNEL' ) ) {
21
+ return interaction . reply ( {
22
+ content : `:x: ${ member } already in ticket channel.` ,
23
+ ephemeral : true
24
+ } ) ;
25
+ }
26
+ try {
27
+ await interaction . channel . permissionOverwrites . edit ( member , {
28
+ VIEW_CHANNEL : true ,
29
+ SEND_MESSAGES : true
30
+ } ) ;
31
+ const embed = new MessageEmbed ( )
32
+ . setDescription ( `**👌 Added ${ member } to the ticket.**` )
33
+ . setColor ( settings . embedColor )
34
+ interaction . reply ( {
35
+ embeds : [ embed ]
36
+ } )
37
+ } catch ( e ) {
38
+ return interaction . reply ( {
39
+ content : e ,
40
+ ephemeral : true
41
+ } )
42
+ }
30
43
}
31
44
}
Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ module.exports = {
5
5
name : "new" ,
6
6
description : "Create a new ticket" ,
7
7
timeout : 10000 ,
8
- run : async ( interaction ) => {
8
+ run : async ( interaction , client ) => {
9
9
const ticketCatgory = interaction . guild . channels . cache . find ( r => r . type === 'GUILD_CATEGORY' && r . name === 'tickets' ) ;
10
10
if ( ! ticketCatgory ) {
11
11
const embed = new MessageEmbed ( )
@@ -59,5 +59,18 @@ module.exports = {
59
59
interaction . reply ( {
60
60
embeds : [ successEmbed ]
61
61
} ) ;
62
+ const logChannel = client . channels . cache . get ( config . logChannel ) ;
63
+ if ( ! logChannel ) return ;
64
+ const logEmbed = new MessageEmbed ( )
65
+ . setAuthor ( interaction . user . tag , interaction . user . displayAvatarURL ( { dynamic : true } ) )
66
+ . setThumbnail ( interaction . user . displayAvatarURL ( { dynamic : true } ) )
67
+ . setDescription ( `${ interaction . user } Created a new ticket ${ ticketChannel } ` )
68
+ . addField ( "Ticket ID:" , ticketChannel . id , true )
69
+ . addField ( "Ticket Created At:" , `<t:${ Math . floor ( ticketChannel . createdTimestamp / 1000 ) } :R>` , true )
70
+ . setColor ( config . embedColor )
71
+ . setTimestamp ( )
72
+ logChannel . send ( {
73
+ embeds : [ logEmbed ]
74
+ } )
62
75
}
63
76
}
Original file line number Diff line number Diff line change @@ -16,13 +16,26 @@ module.exports = {
16
16
ticketOnly : true ,
17
17
modOnly : true ,
18
18
run : async ( interaction ) => {
19
- const user = interaction . options . getUser ( 'user' ) ;
20
- await interaction . channel . permissionOverwrites . delete ( user , `By: ${ interaction . user . tag } , Removed user from ticket` ) ;
21
- const embed = new MessageEmbed ( )
22
- . setDescription ( `**👌 Removed ${ user } from the ticket.**` )
23
- . setColor ( settings . embedColor )
24
- interaction . reply ( {
25
- embeds : [ embed ]
26
- } )
19
+ const member = interaction . options . getMember ( 'user' ) ;
20
+ if ( ! interaction . channel . permissionsFor ( member ) . has ( 'VIEW_CHANNEL' ) ) {
21
+ return interaction . reply ( {
22
+ content : `:x: ${ member } is not in ticket channel.` ,
23
+ ephemeral : true
24
+ } ) ;
25
+ }
26
+ try {
27
+ await interaction . channel . permissionOverwrites . delete ( member , `By: ${ interaction . user . tag } , Removed user from ticket` ) ;
28
+ const embed = new MessageEmbed ( )
29
+ . setDescription ( `**👌 Removed ${ member } from the ticket.**` )
30
+ . setColor ( settings . embedColor )
31
+ interaction . reply ( {
32
+ embeds : [ embed ]
33
+ } )
34
+ } catch ( e ) {
35
+ return interaction . reply ( {
36
+ content : e ,
37
+ ephemeral : true
38
+ } )
39
+ }
27
40
}
28
41
}
Original file line number Diff line number Diff line change @@ -16,12 +16,19 @@ module.exports = {
16
16
ticketOnly : true ,
17
17
run : async ( interaction ) => {
18
18
const name = interaction . options . getString ( 'new_name' ) ;
19
- await interaction . channel . edit ( { name : name } ) ;
20
- const embed = new Discord . MessageEmbed ( )
21
- . setDescription ( `👌 Renamed ticket channel to **${ name } **` )
22
- . setColor ( settings . embedColor ) ;
23
- interaction . reply ( {
24
- embeds : [ embed ]
25
- } ) ;
19
+ try {
20
+ await interaction . channel . edit ( { name : name } ) ;
21
+ const embed = new Discord . MessageEmbed ( )
22
+ . setDescription ( `👌 Renamed ticket channel to **${ name } **` )
23
+ . setColor ( settings . embedColor ) ;
24
+ interaction . reply ( {
25
+ embeds : [ embed ]
26
+ } ) ;
27
+ } catch ( e ) {
28
+ return interaction . reply ( {
29
+ content : e ,
30
+ ephemeral : true
31
+ } )
32
+ }
26
33
}
27
34
}
Original file line number Diff line number Diff line change @@ -111,6 +111,20 @@ module.exports = async(client, interaction) => {
111
111
const text = settings . deletTicketMessage . replace ( '{time}' , humanizeDuration ( settings . deleteTicketTime , { round : true } ) ) ;
112
112
interaction . reply ( text ) ;
113
113
await wait ( settings . deleteTicketTime ) ;
114
+ const logChannel = client . channels . cache . get ( settings . logChannel ) ;
115
+ if ( ! logChannel ) return ;
116
+ const embed = new MessageEmbed ( )
117
+ . setAuthor ( interaction . user . tag , interaction . user . displayAvatarURL ( { dynamic : true } ) )
118
+ . setDescription ( `${ interaction . user } deleted a **#${ interaction . channel . name } ** ticket.` )
119
+ . addField ( "Ticket ID:" , interaction . channel . id , true )
120
+ . addField ( "Ticket Created At:" , `<t:${ Math . floor ( interaction . channel . createdTimestamp / 1000 ) } :R>` , true )
121
+ . addField ( "Ticket Deleted At:" , `<t:${ Math . floor ( Date . now ( ) / 1000 ) } :R>` , true )
122
+ . setColor ( settings . embedColor )
123
+ . setTimestamp ( )
124
+ . setThumbnail ( interaction . user . displayAvatarURL ( { dynamic : true } ) )
125
+ await logChannel . send ( {
126
+ embeds : [ embed ]
127
+ } )
114
128
interaction . channel . delete ( `By: ${ interaction . user . tag } , Delete ticket.` ) ;
115
129
}
116
130
}
Original file line number Diff line number Diff line change 4
4
"description" : " Basic commands handler & slash maker template" ,
5
5
"main" : " index.js" ,
6
6
"scripts" : {
7
- "test" : " echo \" Error: no test specified\" && exit 1"
7
+ "deploy" : " node slash.js" ,
8
+ "start" : " node ." ,
9
+ "build" : " npm i"
8
10
},
9
11
"repository" : {
10
12
"type" : " git" ,
Original file line number Diff line number Diff line change 6
6
"deleteTicketTime" : 5000 ,
7
7
"closeTicketTime" : 5000 ,
8
8
"closeTicketMessage" : " **:x: Closing ticket channel in {time}**" ,
9
- "deletTicketMessage" : " **:x: Deleting ticket channel in {time}**"
9
+ "deletTicketMessage" : " **:x: Deleting ticket channel in {time}**" ,
10
+ "logChannel" : " 901156978817122354"
10
11
}
You can’t perform that action at this time.
0 commit comments