Skip to content

Commit 2ae16fb

Browse files
authored
Merge pull request #284 from Kathund/multiRole
Multi role
2 parents 1784de4 + d61b4c1 commit 2ae16fb

File tree

7 files changed

+33
-8
lines changed

7 files changed

+33
-8
lines changed

config.example.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
"ranks": [
113113
{
114114
"name": "IN_GAME_RANK_NAME",
115-
"role": "DISCORD_ROLE_ID"
115+
"roles": ["DISCORD_ROLE_ID"]
116116
}
117117
]
118118
},

src/discord/commands/forceUpdateCommand.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module.exports = {
55
description: "Update a user's roles",
66
moderatorOnly: true,
77
verificationCommand: true,
8+
requiresBot: true,
89
options: [
910
{
1011
name: "user",

src/discord/commands/forceUpdateEveryone.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module.exports = {
77
description: "Update a user's roles",
88
moderatorOnly: true,
99
verificationCommand: true,
10+
requiresBot: true,
1011

1112
execute: async (interaction, doNotRespond = false) => {
1213
try {

src/discord/commands/forceVerifyCommand.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module.exports = {
55
description: "Connect Discord account to a Minecraft",
66
moderatorOnly: true,
77
verificationCommand: true,
8+
requiresBot: true,
89
options: [
910
{
1011
name: "user",

src/discord/commands/unverifyCommand.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const { EmbedBuilder } = require("discord.js");
77
module.exports = {
88
name: "unverify",
99
description: "Remove your linked Minecraft account",
10+
requiresBot: true,
1011
verificationCommand: true,
1112

1213
execute: async (interaction) => {
@@ -36,6 +37,12 @@ module.exports = {
3637
{ text: `by @.kathund | /help [command] for more information`, iconURL: "https://i.imgur.com/uUuZx2E.png" },
3738
);
3839
await interaction.followUp({ embeds: [updateRole] });
40+
const updateRolesCommand = require("./updateCommand.js");
41+
if (updateRolesCommand === undefined) {
42+
throw new HypixelDiscordChatBridgeError("The update command does not exist. Please contact an administrator.");
43+
}
44+
45+
await updateRolesCommand.execute(interaction, undefined, true);
3946
} catch (error) {
4047
const errorEmbed = new EmbedBuilder()
4148
.setColor(15548997)

src/discord/commands/updateCommand.js

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ const { readFileSync } = require("fs");
99
module.exports = {
1010
name: "update",
1111
verificationCommand: true,
12+
requiresBot: true,
1213
description: "Update your current roles",
1314

14-
execute: async (interaction, user) => {
15+
execute: async (interaction, user = undefined, unverify = false) => {
1516
try {
1617
const linkedData = readFileSync("data/linked.json");
1718
if (!linkedData) {
@@ -39,22 +40,31 @@ module.exports = {
3940
const roles = [
4041
config.verification.verifiedRole,
4142
config.verification.guildMemberRole,
42-
...config.verification.ranks.map((r) => r.role),
43+
...config.verification.ranks.flatMap((r) => r.roles),
4344
];
4445

4546
for (const role of roles) {
4647
if (role === config.verification.verifiedRole && config.verification.removeVerificationRole === false) {
4748
continue;
4849
}
4950

51+
if (role === config.verification.unverifiedRole) {
52+
continue;
53+
}
54+
5055
if (interaction.member.roles.cache.has(role)) {
5156
await interaction.member.roles.remove(role, "Updated Roles");
5257
}
5358
}
5459

60+
if (!interaction.member.roles.cache.has(config.verification.unverifiedRole)) {
61+
await interaction.member.roles.add(config.verification.unverifiedRole, "Updated Roles");
62+
}
63+
5564
interaction.member.setNickname(null, "Updated Roles");
5665

57-
throw new HypixelDiscordChatBridgeError("You are not linked to a Minecraft account.");
66+
if (unverify === false) throw new HypixelDiscordChatBridgeError("You are not linked to a Minecraft account.");
67+
return;
5868
}
5969

6070
if (!interaction.member.roles.cache.has(config.verification.verifiedRole)) {
@@ -77,13 +87,17 @@ module.exports = {
7787
if (config.verification.ranks.length > 0 && guildMember.rank) {
7888
const rank = config.verification.ranks.find((r) => r.name.toLowerCase() == guildMember.rank.toLowerCase());
7989
if (rank) {
80-
for (const role of config.verification.ranks) {
81-
if (interaction.member.roles.cache.has(role.role)) {
82-
await interaction.member.roles.remove(role.role, "Updated Roles");
90+
for (const rankRole of config.verification.ranks) {
91+
for (const role of rankRole.roles) {
92+
if (interaction.member.roles.cache.has(role)) {
93+
await interaction.member.roles.remove(role, "Updated Roles");
94+
}
8395
}
8496
}
8597

86-
await interaction.member.roles.add(rank.role, "Updated Roles");
98+
for (const role of rank.roles) {
99+
await interaction.member.roles.add(role, "Updated Roles");
100+
}
87101
}
88102
}
89103
} else {

src/discord/commands/verifyCommand.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module.exports = {
88
name: "verify",
99
description: "Connect your Discord account to Minecraft",
1010
verificationCommand: true,
11+
requiresBot: true,
1112
options: [
1213
{
1314
name: "username",

0 commit comments

Comments
 (0)