1
+ const { SlashCommandBuilder } = require ( "@discordjs/builders" ) ;
2
+ const { Permissions } = require ( "discord.js" ) ;
3
+
4
+
5
+
6
+ // map of course aliases to their actual names
7
+ const course_aliases = {
8
+ comp6841 : "comp6441" ,
9
+ comp9044 : "comp2041" ,
10
+ comp3891 : "comp3231" ,
11
+ comp9201 : "comp3231" ,
12
+ comp9101 : "comp3121" ,
13
+ comp9331 : "comp3331" ,
14
+ comp9415 : "comp3421" ,
15
+ comp9801 : "comp3821" ,
16
+ comp9102 : "comp3131" ,
17
+ comp9154 : "comp3151" ,
18
+ comp9164 : "comp3161" ,
19
+ comp9211 : "comp3211" ,
20
+ comp9222 : "comp3221" ,
21
+ comp9814 : "comp3411" ,
22
+ comp9511 : "comp3511" ,
23
+ comp9900 : "comp3900" ,
24
+ seng4920 : "comp4920" ,
25
+ comp9337 : "comp4337" ,
26
+ math1141 : "math1131" ,
27
+ math1241 : "math1231" ,
28
+ } ;
29
+
30
+ const get_real_course_name = ( course ) => {
31
+ if ( course_aliases [ course . toLowerCase ( ) ] ) {
32
+ return course_aliases [ course . toLowerCase ( ) ] ;
33
+ }
34
+ return course . toLowerCase ( ) ;
35
+ } ;
36
+
37
+
38
+
39
+
40
+ const is_valid_course = ( course ) => {
41
+ const reg_comp_course = / ^ c o m p \d { 4 } $ / ;
42
+ const reg_math_course = / ^ m a t h \d { 4 } $ / ;
43
+ const reg_binf_course = / ^ b i n f \d { 4 } $ / ;
44
+ const reg_engg_course = / ^ e n g g \d { 4 } $ / ;
45
+ const reg_seng_course = / ^ s e n g \d { 4 } $ / ;
46
+ const reg_desn_course = / ^ d e s n \d { 4 } $ / ;
47
+
48
+ return (
49
+ reg_comp_course . test ( course . toLowerCase ( ) ) ||
50
+ reg_math_course . test ( course . toLowerCase ( ) ) ||
51
+ reg_binf_course . test ( course . toLowerCase ( ) ) ||
52
+ reg_engg_course . test ( course . toLowerCase ( ) ) ||
53
+ reg_seng_course . test ( course . toLowerCase ( ) ) ||
54
+ reg_desn_course . test ( course . toLowerCase ( ) )
55
+ ) ;
56
+ } ;
57
+
58
+ module . exports = {
59
+ data : new SlashCommandBuilder ( )
60
+ . setName ( "rolespermoverride" )
61
+ . setDescription ( "Looks for matches between roles and course chats and attaches permissions." ) ,
62
+ async execute ( interaction ) {
63
+ try {
64
+ // for all roles with name == chat name involving 4 letter prefix comp, seng, engg or binf,
65
+ // give the role the permission override to participate in the matching channel.
66
+ message . guild . roles . forEach ( role => {
67
+ if ( is_valid_course ( role ) ) {
68
+ console . log ( "hi" ) ;
69
+ message . guild . channels . forEach ( channel => {
70
+ if ( channel . type === "GUILD_TEXT" && channel . name . toLowerCase ( ) === role . toLowerCase ( ) ) {
71
+ // Remove all permissions from a role
72
+ role . setPermissions ( 0n )
73
+ . then ( updated => console . log ( `Updated permissions to ${ updated . permissions . bitfield } ` ) )
74
+ . catch ( console . error ) ;
75
+ // Set the permissions of the role
76
+ // Add the member to the channel's permission overwrites
77
+ channel . permissionOverwrites . create ( role , {
78
+ VIEW_CHANNEL : true ,
79
+ SEND_MESSAGES : true ,
80
+ } ) ;
81
+ interaction . reply ( {
82
+ content : `✅ | removed all permissions and set new permission overwrites for
83
+ ${ interaction . channel . name } and ${ role . name } .` ,
84
+ ephemeral : true ,
85
+ } ) ;
86
+ }
87
+ } ) ;
88
+ }
89
+ } ) ;
90
+
91
+
92
+ } catch ( error ) {
93
+ await interaction . reply ( "Error: " + error ) ;
94
+ }
95
+ } ,
96
+ } ;
0 commit comments