add protection role verification

This commit is contained in:
nolan 2021-05-10 13:25:35 -07:00
parent d83697f8d8
commit 6e289fe326
2 changed files with 17 additions and 7 deletions

View File

@ -265,9 +265,12 @@ You can increase the amount of targets by upgrading to premium.
[INFRACTION_ERROR]
an error occured
[INFRACTION_PROTECTIONERROR]
[INFRACTION_PROTECTIONPOSITIONERROR]
they have hierarchy over you
[INFRACTION_PROTECTIONROLEERROR]
their roles are protected
[INFRACTION_AUTOMODESCALATION]
This action was automatically escalated by auto-moderation.

View File

@ -267,16 +267,23 @@ class Infraction {
}
async _verify() {
const { protection } = await this.guild.settings();
if (this.executor.id === this.guild.ownerID) return this._succeed();
if (this.guild && this.guild._settings.protection.enabled && this.targetType === 'USER') {
//Idk what the thought process here has been, but the user object does not have roles, and the executor is a user object
if (this.guild && protection.enabled && this.targetType === 'USER') {
const executor = await this.guild.members.fetch(this.executor.id).catch();
const target = await this.guild.members.fetch(this.target.id).catch();
if (!target) return this._succeed();
const executorHighest = executor.roles.highest; //this.executor.roles.highest;
const targetHighest = target.roles.highest; //this.member.roles.highest;
if (executorHighest.comparePositionTo(targetHighest) < 0) {
return this._fail('INFRACTION_PROTECTIONERROR');
if(protection.type === 'position') {
const executorHighest = executor.roles.highest;
const targetHighest = target.roles.highest;
if (executorHighest.comparePositionTo(targetHighest) < 0) {
return this._fail('INFRACTION_PROTECTIONPOSITIONERROR');
}
} else if(protection.type === 'role') {
const contains = target.roles.cache.some((r) => protection.roles.includes(r.id));
if(contains) {
return this._fail('INFRACTION_PROTECTIONROLEERROR');
}
}
}
return this._succeed();