Skip to content

Commit 80cc0d4

Browse files
committed
Also check for booster status or skill role above beginner
1 parent 8a43d12 commit 80cc0d4

File tree

1 file changed

+15
-1
lines changed
  • src/modules/wheatley/components/moderation

1 file changed

+15
-1
lines changed

src/modules/wheatley/components/moderation/voice.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { TextBasedCommand } from "../../../../command-abstractions/text-based-co
1414
import { SelfClearingSet } from "../../../../utils/containers.js";
1515
import { build_description } from "../../../../utils/strings.js";
1616
import { unwrap } from "../../../../utils/misc.js";
17+
import SkillRoles, { SkillLevel } from "../../../tccpp/components/skill-roles.js";
1718

1819
type voice_first_join_notice_entry = {
1920
guild: string;
@@ -117,6 +118,17 @@ export default class VoiceModeration extends BotComponent {
117118
);
118119
}
119120

121+
private has_skill_role_above_beginner(member: Discord.GuildMember) {
122+
const skill_roles_component = this.wheatley.components.get("SkillRoles");
123+
if (skill_roles_component && skill_roles_component instanceof SkillRoles) {
124+
return skill_roles_component.find_highest_skill_level(member) > SkillLevel.beginner;
125+
}
126+
127+
// If the SkillRoles component isn't loaded, check by role name.
128+
const higher_skill_role_names = new Set(["intermediate", "proficient", "advanced", "expert"]);
129+
return member.roles.cache.some(role => higher_skill_role_names.has(role.name.toLowerCase()));
130+
}
131+
120132
private wrap_command_handler<Args extends unknown[] = []>(
121133
handler: (command: TextBasedCommand, target: Discord.GuildMember, ...args: Args) => Promise<void>,
122134
) {
@@ -296,6 +308,8 @@ export default class VoiceModeration extends BotComponent {
296308
res.upsertedCount > 0 &&
297309
!member.roles.cache.has(this.wheatley.roles.voice.id) &&
298310
!member.roles.cache.has(this.wheatley.roles.no_voice.id) &&
311+
!member.roles.cache.has(this.wheatley.roles.server_booster.id) &&
312+
!this.has_skill_role_above_beginner(member) &&
299313
new_state.channel?.isVoiceBased()
300314
) {
301315
await new_state.channel.send({
@@ -304,7 +318,7 @@ export default class VoiceModeration extends BotComponent {
304318
"new users are suppressed by default to protect our voice channels. " +
305319
"You will be able to speak when joining a channel with a voice moderator present. " +
306320
"Stick around and you will eventually be granted permanent voice access. " +
307-
"Please do not ping voice moderators to be unsupressed.",
321+
"Please do not ping voice moderators to be unsupressed or for the voice role.",
308322
allowedMentions: { users: [member.id] },
309323
});
310324
}

0 commit comments

Comments
 (0)