forked from Galactic/galactic-bot
wrappers
This commit is contained in:
parent
f1ebfbaa46
commit
b85a255e2e
@ -1,5 +1,6 @@
|
||||
const { default: Collection } = require("@discordjs/collection");
|
||||
const { Guild } = require("discord.js");
|
||||
const MemberWrapper = require("./MemberWrapper.js");
|
||||
|
||||
class GuildWrapper {
|
||||
|
||||
@ -11,6 +12,7 @@ class GuildWrapper {
|
||||
this.client = client;
|
||||
this.guild = guild;
|
||||
this.webhooks = new Collection();
|
||||
this.memberWrappers = new Collection();
|
||||
|
||||
this._settings = null;
|
||||
this._permissions = null;
|
||||
@ -141,6 +143,23 @@ class GuildWrapper {
|
||||
|
||||
}
|
||||
|
||||
async userWrapper() {
|
||||
if (this._userWrapper) return this._userWrapper;
|
||||
|
||||
this._userWrapper = await this.client.getUserWrapper(this.author.id);
|
||||
return this._userWrapper;
|
||||
}
|
||||
|
||||
async memberWrapper(user) {
|
||||
const member = await this.resolveMember(user);
|
||||
if (!member) return Promise.reject(new Error('No member found'));
|
||||
if (this.memberWrappers.has(member.id)) return this.memberWrappers.get(member.id);
|
||||
|
||||
const wrapper = new MemberWrapper(this.client, member);
|
||||
this.memberWrappers.set(wrapper.id, wrapper);
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
resolveMembers(resolveables, strict) {
|
||||
return this.client.resolver.resolveMembers(resolveables, strict, this);
|
||||
}
|
||||
|
@ -158,6 +158,11 @@ class InteractionWrapper {
|
||||
return this.interaction.member;
|
||||
}
|
||||
|
||||
async memberWrapper() {
|
||||
if (!this.guild) return null;
|
||||
return this.guild.memberWrapper(this.author);
|
||||
}
|
||||
|
||||
get message() {
|
||||
return this.interaction.message;
|
||||
}
|
||||
|
@ -1,5 +1,61 @@
|
||||
class MemberWrapper {
|
||||
|
||||
constructor(client, member) {
|
||||
this.client = client;
|
||||
this.member = member;
|
||||
|
||||
this._user = null;
|
||||
}
|
||||
|
||||
async userWrapper() {
|
||||
if (this._user) return this._user;
|
||||
|
||||
this._user = await this.client.getUserWrapper(this.id);
|
||||
return this._user;
|
||||
}
|
||||
|
||||
async isAdmin() {
|
||||
return (await this.userWrapper()).developer || this.permissions.missing(['ADMINISTRATOR', 'MANAGE_GUILD']).length === 2;
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this.member.id;
|
||||
}
|
||||
|
||||
get permissions() {
|
||||
return this.member.permissions;
|
||||
}
|
||||
|
||||
get roles() {
|
||||
return this.member.roles;
|
||||
}
|
||||
|
||||
get highestRoleColor() {
|
||||
const role = this.roles.cache.filter((role) => role.color !== 0).sort((a, b) => b.rawPosition - a.rawPosition).first();
|
||||
if (role) return role.color;
|
||||
return 0;
|
||||
}
|
||||
|
||||
get presence() {
|
||||
return this.member.presence;
|
||||
}
|
||||
|
||||
get nickname() {
|
||||
return this.member.nickname;
|
||||
}
|
||||
|
||||
get joinedAt() {
|
||||
return this.member.joinedAt;
|
||||
}
|
||||
|
||||
get joinedTimestamp() {
|
||||
return this.member.joinedTimestamp;
|
||||
}
|
||||
|
||||
get lastMessage() {
|
||||
return this.member.lastMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = MemberWrapper;
|
Loading…
Reference in New Issue
Block a user