46 lines
1.3 KiB
JavaScript
46 lines
1.3 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 timeSinceCached() {
|
|
return Date.now()-this._cached;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
return ExtendedGuildMember;
|
|
|
|
});
|
|
|
|
module.exports = GuildMember; |