Skip to content

Commit 4fc2090

Browse files
Merge pull request #196 from reactivepixel/staging
Release 1.7.0
2 parents 29cd24e + 6932d13 commit 4fc2090

File tree

13 files changed

+53
-392
lines changed

13 files changed

+53
-392
lines changed

.circleci/config.yml

Lines changed: 0 additions & 37 deletions
This file was deleted.

.dockerignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

Dockerfile

Lines changed: 0 additions & 16 deletions
This file was deleted.

bot/client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ client.on('message', (message) => {
3434
util.log('Command message received', message.content, 0);
3535

3636
// Build basic help string
37-
let helpString = 'v1.6.0 Discovered Commands:\n\n\t**<> - Required Item\t\t[] - Optional Item**';
37+
let helpString = 'v1.7.0 Discovered Commands:\n\n\t**<> - Required Item\t\t[] - Optional Item**';
3838

3939
// Process message against every controller
4040
Object.keys(controllers).forEach((key) => {

bot/controllers/roles.js

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,31 +59,21 @@ class RoleController extends BaseController {
5959

6060
// User roles commands cannot change
6161
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',
7663
];
7764
}
7865

7966
// Lists all roles
8067
rolesAction() {
8168
const { message, disallowedRoles } = this;
8269
const roles = [];
70+
71+
72+
const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE';
73+
const maxRole = message.guild.roles.find(role => role.name === dividerRoleName);
8374
message.guild.roles.map((role) => {
84-
if (!disallowedRoles.includes(role.name)) {
75+
if(role.position < maxRole.position && !disallowedRoles.includes(role.name))
8576
return roles.push(role.name);
86-
}
8777
return role.name;
8878
});
8979
return 'List of all Armada Roles: \n\n' + roles.join('\n');
@@ -92,11 +82,14 @@ class RoleController extends BaseController {
9282
// Adds a role to the user
9383
addRoleAction() {
9484
const { message, disallowedRoles } = this;
85+
86+
const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE';
87+
const maxRole = message.guild.roles.find(role => role.name === dividerRoleName);
9588
const targetRole = message.guild.roles.find('name', message.parsed[1]);
9689
if (targetRole === null) {
9790
util.log('No role matched', message.parsed[1], 2);
9891
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) {
10093
util.log('User Tried to add a restricted/dissalowed role', targetRole.name, 2);
10194
return 'You are not worthy of the role ' + message.parsed[1] + '.';
10295
} else {
@@ -109,15 +102,18 @@ class RoleController extends BaseController {
109102
// Adds multiple roles to the user
110103
addRolesAction() {
111104
const { message, disallowedRoles } = this;
105+
106+
const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE';
107+
const maxRole = message.guild.roles.find(role => role.name === dividerRoleName);
112108
const roles = message.parsed[1].split(',');
113109
util.log('Multiple Roles Parsing', roles, 4);
114110

115111
roles.map((role) => {
116112
if (!disallowedRoles.includes(role)) {
117113
const targetRole = message.guild.roles.find('name', role);
118114
util.log('Asking API for Role', targetRole, 4);
119-
120-
if (targetRole === null) {
115+
116+
if (targetRole === null || targetRole.position >= maxRole.position) {
121117
return '"' + role + '" is not a known role. Try `!roles` to get a list of all Roles (They are case-sensitive)';
122118
}
123119
return message.member.addRole(targetRole).catch(util.log);
@@ -131,12 +127,14 @@ class RoleController extends BaseController {
131127
// Removes role from user
132128
removeRoleAction() {
133129
const { message, disallowedRoles } = this;
130+
const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE';
131+
const maxRole = message.guild.roles.find(role => role.name === dividerRoleName);
134132
const targetRole = message.guild.roles.find('name', message.parsed[1]);
135133
if (targetRole === null) {
136134
util.log('No role matched', message.parsed[1], 2);
137135
return '"' + message.parsed[1] + '" is not a known role. Try `!roles` to get a list of all Roles (They are case-sensitive)';
138136
}
139-
if (disallowedRoles.includes(targetRole.name)) {
137+
if (disallowedRoles.includes(targetRole.name) || targetRole.position >= maxRole.position) {
140138
util.log('User Tried to add a restricted/dissalowed role', targetRole.name, 2);
141139
return 'You have not the power or the will to control this power.';
142140
}
@@ -149,8 +147,11 @@ class RoleController extends BaseController {
149147
// Adds all roles to user
150148
addAllRolesAction() {
151149
const { message, disallowedRoles } = this;
150+
const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE';
151+
const maxRole = message.guild.roles.find(role => role.name === dividerRoleName);
152+
152153
message.guild.roles.map((role) => {
153-
if (!disallowedRoles.includes(role.name)) {
154+
if (!disallowedRoles.includes(role.name) && role.position < maxRole.position) {
154155
return message.member.addRole(role).catch(util.log);
155156
}
156157
return role.name;
@@ -162,8 +163,10 @@ class RoleController extends BaseController {
162163
// Removes all roles from user
163164
removeAllRolesAction() {
164165
const { message, disallowedRoles } = this;
166+
const dividerRoleName = 'MAX_SELF_ASSIGN_ROLE';
167+
const maxRole = message.guild.roles.find(role => role.name === dividerRoleName);
165168
message.guild.roles.map((role) => {
166-
if (!disallowedRoles.includes(role.name)) {
169+
if (!disallowedRoles.includes(role.name) && role.position < maxRole.position) {
167170
return message.member.removeRole(role).catch(util.log);
168171
}
169172
return role.name;

changelog.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## [v1.7.0](https://github.com/reactivepixel/Max-Bot/releases/tag/v1.7.0)
2+
3+
* Roles are now dynamically blocked by the role `MAX_SELF_ASSIGN_ROLE`. Only roles below this are valid for self assignment.
4+
5+
## [v1.6.0](https://github.com/reactivepixel/Max-Bot/releases/tag/v1.6.0)
6+
7+
Max has been moved from a VPS on Digital Ocean running on Docker and a Docker Maria DB Container onto Heroku using a JawsMariaDB resource. Additional enhancements have been made to the fs.armada.bot@gmail.com gmail account to enable 2-factor Auth and a bypass key for Max has been generated.
8+
19
## [v1.2.2](https://github.com/reactivepixel/Max-Bot/releases/tag/v1.2.2)
210

311
Initial feedback from Crewmates prompted some quality of life features to be released early.

db/first_run.sh

Lines changed: 0 additions & 14 deletions
This file was deleted.

db/test_data.js

Lines changed: 0 additions & 9 deletions
This file was deleted.

docker-compose.yml

Lines changed: 0 additions & 26 deletions
This file was deleted.

gulpfile.js

Lines changed: 0 additions & 34 deletions
This file was deleted.

package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
{
22
"name": "max",
3-
"version": "1.6.0",
3+
"version": "1.7.0",
44
"description": "",
55
"main": "bot/client.js",
66
"engines": {
77
"node": "v10.16.3",
88
"npm": "6.9.0"
99
},
1010
"scripts": {
11-
"start": "node bot/client.js",
12-
"test": "mocha"
11+
"start": "node bot/client.js"
1312
},
1413
"keywords": [],
1514
"author": "Chapman - Chapman@Apextion.com",
@@ -18,7 +17,7 @@
1817
"discord.js": "^11.5.1",
1918
"mysql2": "^1.6.5",
2019
"nodemailer": "^6.3.1",
21-
"sequelize": "^5.15.2",
20+
"sequelize": "^5.21.2",
2221
"uuid": "^3.3.3"
2322
}
2423
}

0 commit comments

Comments
 (0)