@@ -59,31 +59,21 @@ class RoleController extends BaseController {
59
59
60
60
// User roles commands cannot change
61
61
this . disallowedRoles = [
62
- 'Admin' , 'Armada Officers' , 'Armada Officer' , 'Fleet Officer' ,
63
- 'Moderator' , 'Tester' , 'Team Captain' , 'Full Sail Staff' , 'Privateers' ,
64
- 'Team Liaison' , 'Armada Athlete' , '@everyone' , 'Crew' ,
65
- 'Overwatch_V' , 'Overwatch_JV' ,
66
- 'CS:GO_V' , 'CS:GO_JV' ,
67
- 'Smite_V' , 'Smite_JV' ,
68
- 'Fortnite_V' , 'Fortnite_JV' ,
69
- 'Madden_V' , 'Madden_JV' ,
70
- 'LoL_V' , 'LoL_JV' ,
71
- 'SuperSmashBros_V' , 'SuperSmashBros_JV' ,
72
- 'HeroesOfTheStorm_V' , 'HeroesOfTheStorm_JV' ,
73
- 'RocketLeague_V' , 'RocketLeague_JV' ,
74
- 'DragonBall_V' , 'DragonBall_JV' ,
75
- 'Hearthstone_V' , 'Hearthstone_JV' ,
62
+ 'Admin' , '@everyone' ,
76
63
] ;
77
64
}
78
65
79
66
// Lists all roles
80
67
rolesAction ( ) {
81
68
const { message, disallowedRoles } = this ;
82
69
const roles = [ ] ;
70
+
71
+
72
+ const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE' ;
73
+ const maxRole = message . guild . roles . find ( role => role . name === dividerRoleName ) ;
83
74
message . guild . roles . map ( ( role ) => {
84
- if ( ! disallowedRoles . includes ( role . name ) ) {
75
+ if ( role . position < maxRole . position && ! disallowedRoles . includes ( role . name ) )
85
76
return roles . push ( role . name ) ;
86
- }
87
77
return role . name ;
88
78
} ) ;
89
79
return 'List of all Armada Roles: \n\n' + roles . join ( '\n' ) ;
@@ -92,11 +82,14 @@ class RoleController extends BaseController {
92
82
// Adds a role to the user
93
83
addRoleAction ( ) {
94
84
const { message, disallowedRoles } = this ;
85
+
86
+ const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE' ;
87
+ const maxRole = message . guild . roles . find ( role => role . name === dividerRoleName ) ;
95
88
const targetRole = message . guild . roles . find ( 'name' , message . parsed [ 1 ] ) ;
96
89
if ( targetRole === null ) {
97
90
util . log ( 'No role matched' , message . parsed [ 1 ] , 2 ) ;
98
91
return '"' + message . parsed [ 1 ] + '" is not a known role. Try `!roles` to get a list of all Roles (They are case-sensitive)' ;
99
- } else if ( disallowedRoles . includes ( targetRole . name ) ) {
92
+ } else if ( disallowedRoles . includes ( targetRole . name ) || targetRole . position >= maxRole . position ) {
100
93
util . log ( 'User Tried to add a restricted/dissalowed role' , targetRole . name , 2 ) ;
101
94
return 'You are not worthy of the role ' + message . parsed [ 1 ] + '.' ;
102
95
} else {
@@ -109,15 +102,18 @@ class RoleController extends BaseController {
109
102
// Adds multiple roles to the user
110
103
addRolesAction ( ) {
111
104
const { message, disallowedRoles } = this ;
105
+
106
+ const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE' ;
107
+ const maxRole = message . guild . roles . find ( role => role . name === dividerRoleName ) ;
112
108
const roles = message . parsed [ 1 ] . split ( ',' ) ;
113
109
util . log ( 'Multiple Roles Parsing' , roles , 4 ) ;
114
110
115
111
roles . map ( ( role ) => {
116
112
if ( ! disallowedRoles . includes ( role ) ) {
117
113
const targetRole = message . guild . roles . find ( 'name' , role ) ;
118
114
util . log ( 'Asking API for Role' , targetRole , 4 ) ;
119
-
120
- if ( targetRole === null ) {
115
+
116
+ if ( targetRole === null || targetRole . position >= maxRole . position ) {
121
117
return '"' + role + '" is not a known role. Try `!roles` to get a list of all Roles (They are case-sensitive)' ;
122
118
}
123
119
return message . member . addRole ( targetRole ) . catch ( util . log ) ;
@@ -131,12 +127,14 @@ class RoleController extends BaseController {
131
127
// Removes role from user
132
128
removeRoleAction ( ) {
133
129
const { message, disallowedRoles } = this ;
130
+ const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE' ;
131
+ const maxRole = message . guild . roles . find ( role => role . name === dividerRoleName ) ;
134
132
const targetRole = message . guild . roles . find ( 'name' , message . parsed [ 1 ] ) ;
135
133
if ( targetRole === null ) {
136
134
util . log ( 'No role matched' , message . parsed [ 1 ] , 2 ) ;
137
135
return '"' + message . parsed [ 1 ] + '" is not a known role. Try `!roles` to get a list of all Roles (They are case-sensitive)' ;
138
136
}
139
- if ( disallowedRoles . includes ( targetRole . name ) ) {
137
+ if ( disallowedRoles . includes ( targetRole . name ) || targetRole . position >= maxRole . position ) {
140
138
util . log ( 'User Tried to add a restricted/dissalowed role' , targetRole . name , 2 ) ;
141
139
return 'You have not the power or the will to control this power.' ;
142
140
}
@@ -149,8 +147,11 @@ class RoleController extends BaseController {
149
147
// Adds all roles to user
150
148
addAllRolesAction ( ) {
151
149
const { message, disallowedRoles } = this ;
150
+ const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE' ;
151
+ const maxRole = message . guild . roles . find ( role => role . name === dividerRoleName ) ;
152
+
152
153
message . guild . roles . map ( ( role ) => {
153
- if ( ! disallowedRoles . includes ( role . name ) ) {
154
+ if ( ! disallowedRoles . includes ( role . name ) && role . position < maxRole . position ) {
154
155
return message . member . addRole ( role ) . catch ( util . log ) ;
155
156
}
156
157
return role . name ;
@@ -162,8 +163,10 @@ class RoleController extends BaseController {
162
163
// Removes all roles from user
163
164
removeAllRolesAction ( ) {
164
165
const { message, disallowedRoles } = this ;
166
+ const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE' ;
167
+ const maxRole = message . guild . roles . find ( role => role . name === dividerRoleName ) ;
165
168
message . guild . roles . map ( ( role ) => {
166
- if ( ! disallowedRoles . includes ( role . name ) ) {
169
+ if ( ! disallowedRoles . includes ( role . name ) && role . position < maxRole . position ) {
167
170
return message . member . removeRole ( role ) . catch ( util . log ) ;
168
171
}
169
172
return role . name ;
0 commit comments