galactic-bot/structure/extensions/GuildMember.js
2020-06-20 00:02:59 +03:00

50 lines
1.4 KiB
JavaScript

const { Structures } = require('discord.js');
const GuildMember = Structures.extend('GuildMember', (GuildMember) => {
class ExtendedGuildMember extends GuildMember {
constructor(...args) {
super(...args);
this._cached = Date.now();
}
async _getMute() {
const { expirations } = this.client.moderationManager;
const filtered = expirations.filter((e) => e.infraction.type === 'MUTE'
&& e.infraction.target === this.id);
if(filtered.length > 0) return filtered.first();
const result = await this.client.transactionHandler.send({ //Checking for permanent mutes, won't show up in expirations.
provider: 'mongodb',
request: {
collection: 'infractions',
type: 'findOne',
query: { duration: 0, type: 'MUTE', target: this.id },
sort: { $natural: -1 } //latest mute
}
}).catch((e) => {}); //eslint-disable-line
if(result) return result;
return null;
}
get admin() {
return this.user.developer || this.hasPermission('ADMINISTRATOR') || this.hasPermission('MANAGE_GUILD');
}
get timeSinceCached() {
return Date.now()-this._cached;
}
}
return ExtendedGuildMember;
});
module.exports = GuildMember;