@jubbio/core 1.3.2 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Client.js +50 -10
- package/dist/rest/REST.d.ts +1 -0
- package/dist/rest/REST.js +1 -1
- package/dist/structures/Channel.d.ts +1 -1
- package/dist/structures/Channel.js +11 -4
- package/dist/structures/Guild.d.ts +1 -1
- package/dist/structures/Guild.js +7 -3
- package/dist/structures/Message.d.ts +2 -0
- package/dist/structures/Message.js +13 -33
- package/package.json +4 -14
- package/dist/cjs/Client.d.ts +0 -157
- package/dist/cjs/Client.js +0 -640
- package/dist/cjs/builders/ActionRowBuilder.d.ts +0 -53
- package/dist/cjs/builders/ActionRowBuilder.js +0 -68
- package/dist/cjs/builders/ButtonBuilder.d.ts +0 -77
- package/dist/cjs/builders/ButtonBuilder.js +0 -96
- package/dist/cjs/builders/EmbedBuilder.d.ts +0 -157
- package/dist/cjs/builders/EmbedBuilder.js +0 -208
- package/dist/cjs/builders/ModalBuilder.d.ts +0 -122
- package/dist/cjs/builders/ModalBuilder.js +0 -162
- package/dist/cjs/builders/SelectMenuBuilder.d.ts +0 -123
- package/dist/cjs/builders/SelectMenuBuilder.js +0 -165
- package/dist/cjs/builders/SlashCommandBuilder.d.ts +0 -197
- package/dist/cjs/builders/SlashCommandBuilder.js +0 -324
- package/dist/cjs/builders/index.d.ts +0 -9
- package/dist/cjs/builders/index.js +0 -26
- package/dist/cjs/enums.d.ts +0 -191
- package/dist/cjs/enums.js +0 -211
- package/dist/cjs/index.d.ts +0 -25
- package/dist/cjs/index.js +0 -130
- package/dist/cjs/managers/BaseManager.d.ts +0 -69
- package/dist/cjs/managers/BaseManager.js +0 -106
- package/dist/cjs/managers/ChannelManager.d.ts +0 -95
- package/dist/cjs/managers/ChannelManager.js +0 -205
- package/dist/cjs/managers/GuildMemberManager.d.ts +0 -74
- package/dist/cjs/managers/GuildMemberManager.js +0 -157
- package/dist/cjs/managers/RoleManager.d.ts +0 -84
- package/dist/cjs/managers/RoleManager.js +0 -207
- package/dist/cjs/managers/index.d.ts +0 -7
- package/dist/cjs/managers/index.js +0 -24
- package/dist/cjs/rest/REST.d.ts +0 -527
- package/dist/cjs/rest/REST.js +0 -904
- package/dist/cjs/rest/index.d.ts +0 -1
- package/dist/cjs/rest/index.js +0 -18
- package/dist/cjs/sharding/ShardingManager.d.ts +0 -179
- package/dist/cjs/sharding/ShardingManager.js +0 -375
- package/dist/cjs/sharding/index.d.ts +0 -4
- package/dist/cjs/sharding/index.js +0 -21
- package/dist/cjs/structures/Channel.d.ts +0 -122
- package/dist/cjs/structures/Channel.js +0 -240
- package/dist/cjs/structures/Collection.d.ts +0 -53
- package/dist/cjs/structures/Collection.js +0 -115
- package/dist/cjs/structures/Guild.d.ts +0 -59
- package/dist/cjs/structures/Guild.js +0 -94
- package/dist/cjs/structures/GuildMember.d.ts +0 -174
- package/dist/cjs/structures/GuildMember.js +0 -311
- package/dist/cjs/structures/Interaction.d.ts +0 -245
- package/dist/cjs/structures/Interaction.js +0 -450
- package/dist/cjs/structures/Message.d.ts +0 -98
- package/dist/cjs/structures/Message.js +0 -195
- package/dist/cjs/structures/User.d.ts +0 -37
- package/dist/cjs/structures/User.js +0 -65
- package/dist/cjs/structures/index.d.ts +0 -7
- package/dist/cjs/structures/index.js +0 -25
- package/dist/cjs/structures.d.ts +0 -1
- package/dist/cjs/structures.js +0 -19
- package/dist/cjs/types.d.ts +0 -255
- package/dist/cjs/types.js +0 -3
- package/dist/cjs/utils/BitField.d.ts +0 -66
- package/dist/cjs/utils/BitField.js +0 -138
- package/dist/cjs/utils/Collection.d.ts +0 -116
- package/dist/cjs/utils/Collection.js +0 -265
- package/dist/cjs/utils/Collector.d.ts +0 -152
- package/dist/cjs/utils/Collector.js +0 -314
- package/dist/cjs/utils/DataResolver.d.ts +0 -61
- package/dist/cjs/utils/DataResolver.js +0 -146
- package/dist/cjs/utils/Formatters.d.ts +0 -145
- package/dist/cjs/utils/Formatters.js +0 -213
- package/dist/cjs/utils/IntentsBitField.d.ts +0 -85
- package/dist/cjs/utils/IntentsBitField.js +0 -99
- package/dist/cjs/utils/Partials.d.ts +0 -104
- package/dist/cjs/utils/Partials.js +0 -148
- package/dist/cjs/utils/PermissionsBitField.d.ts +0 -118
- package/dist/cjs/utils/PermissionsBitField.js +0 -145
- package/dist/cjs/utils/SnowflakeUtil.d.ts +0 -63
- package/dist/cjs/utils/SnowflakeUtil.js +0 -93
- package/dist/cjs/utils/Sweepers.d.ts +0 -119
- package/dist/cjs/utils/Sweepers.js +0 -249
- package/dist/cjs/utils/index.d.ts +0 -13
- package/dist/cjs/utils/index.js +0 -30
- package/dist/esm/Client.js +0 -634
- package/dist/esm/builders/ActionRowBuilder.js +0 -64
- package/dist/esm/builders/ButtonBuilder.js +0 -92
- package/dist/esm/builders/EmbedBuilder.js +0 -204
- package/dist/esm/builders/ModalBuilder.js +0 -157
- package/dist/esm/builders/SelectMenuBuilder.js +0 -161
- package/dist/esm/builders/SlashCommandBuilder.js +0 -311
- package/dist/esm/builders/index.js +0 -10
- package/dist/esm/enums.js +0 -208
- package/dist/esm/index.js +0 -34
- package/dist/esm/managers/BaseManager.js +0 -100
- package/dist/esm/managers/ChannelManager.js +0 -200
- package/dist/esm/managers/GuildMemberManager.js +0 -153
- package/dist/esm/managers/RoleManager.js +0 -203
- package/dist/esm/managers/index.js +0 -8
- package/dist/esm/rest/REST.js +0 -900
- package/dist/esm/rest/index.js +0 -2
- package/dist/esm/sharding/ShardingManager.js +0 -366
- package/dist/esm/sharding/index.js +0 -5
- package/dist/esm/structures/Channel.js +0 -232
- package/dist/esm/structures/Collection.js +0 -111
- package/dist/esm/structures/Guild.js +0 -90
- package/dist/esm/structures/GuildMember.js +0 -306
- package/dist/esm/structures/Interaction.js +0 -438
- package/dist/esm/structures/Message.js +0 -191
- package/dist/esm/structures/User.js +0 -61
- package/dist/esm/structures/index.js +0 -9
- package/dist/esm/structures.js +0 -3
- package/dist/esm/types.js +0 -2
- package/dist/esm/utils/BitField.js +0 -134
- package/dist/esm/utils/Collection.js +0 -261
- package/dist/esm/utils/Collector.js +0 -305
- package/dist/esm/utils/DataResolver.js +0 -142
- package/dist/esm/utils/Formatters.js +0 -191
- package/dist/esm/utils/IntentsBitField.js +0 -93
- package/dist/esm/utils/Partials.js +0 -137
- package/dist/esm/utils/PermissionsBitField.js +0 -141
- package/dist/esm/utils/SnowflakeUtil.js +0 -89
- package/dist/esm/utils/Sweepers.js +0 -245
- package/dist/esm/utils/index.js +0 -14
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Manager for guild members with caching and lazy loading
|
|
3
|
-
*/
|
|
4
|
-
import { CachedManager } from './BaseManager';
|
|
5
|
-
import { Collection } from '../utils/Collection';
|
|
6
|
-
import { Permissions } from '../structures/GuildMember';
|
|
7
|
-
/**
|
|
8
|
-
* Manages guild members
|
|
9
|
-
*/
|
|
10
|
-
export class GuildMemberManager extends CachedManager {
|
|
11
|
-
/** The guild this manager belongs to */
|
|
12
|
-
guild;
|
|
13
|
-
constructor(guild, iterable) {
|
|
14
|
-
// Use a simple object as placeholder since we don't have GuildMember class yet
|
|
15
|
-
super(guild.client, Object, iterable);
|
|
16
|
-
this.guild = guild;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Add a member to the cache
|
|
20
|
-
*/
|
|
21
|
-
_add(data, cache = true) {
|
|
22
|
-
const id = data.user?.id ?? data.id;
|
|
23
|
-
const existing = this.cache.get(id);
|
|
24
|
-
if (existing) {
|
|
25
|
-
if (cache) {
|
|
26
|
-
Object.assign(existing, data);
|
|
27
|
-
}
|
|
28
|
-
return existing;
|
|
29
|
-
}
|
|
30
|
-
const member = {
|
|
31
|
-
id,
|
|
32
|
-
guildId: this.guild.id,
|
|
33
|
-
user: data.user,
|
|
34
|
-
nick: data.nick,
|
|
35
|
-
roles: data.roles ?? [],
|
|
36
|
-
joinedAt: data.joined_at ? new Date(data.joined_at) : null,
|
|
37
|
-
premiumSince: data.premium_since ? new Date(data.premium_since) : null,
|
|
38
|
-
deaf: data.deaf ?? false,
|
|
39
|
-
mute: data.mute ?? false,
|
|
40
|
-
pending: data.pending ?? false,
|
|
41
|
-
permissions: new Permissions(data.permissions || '0', this.guild.ownerId === id),
|
|
42
|
-
communicationDisabledUntil: data.communication_disabled_until
|
|
43
|
-
? new Date(data.communication_disabled_until)
|
|
44
|
-
: null,
|
|
45
|
-
// Helper methods
|
|
46
|
-
get displayName() {
|
|
47
|
-
return this.nick ?? this.user?.display_name ?? this.user?.username ?? 'Unknown';
|
|
48
|
-
},
|
|
49
|
-
toString() {
|
|
50
|
-
return `<@${this.id}>`;
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
if (cache) {
|
|
54
|
-
this.cache.set(id, member);
|
|
55
|
-
}
|
|
56
|
-
return member;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Fetch a member from the API
|
|
60
|
-
*/
|
|
61
|
-
async fetch(id, options) {
|
|
62
|
-
if (!options?.force) {
|
|
63
|
-
const existing = this.cache.get(id);
|
|
64
|
-
if (existing)
|
|
65
|
-
return existing;
|
|
66
|
-
}
|
|
67
|
-
const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/members/${id}`);
|
|
68
|
-
return this._add(data, options?.cache ?? true);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Fetch multiple members
|
|
72
|
-
*/
|
|
73
|
-
async fetchMany(options) {
|
|
74
|
-
const params = new URLSearchParams();
|
|
75
|
-
if (options?.limit)
|
|
76
|
-
params.set('limit', String(options.limit));
|
|
77
|
-
if (options?.after)
|
|
78
|
-
params.set('after', options.after);
|
|
79
|
-
if (options?.query)
|
|
80
|
-
params.set('query', options.query);
|
|
81
|
-
const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/members?${params}`);
|
|
82
|
-
const members = new Collection();
|
|
83
|
-
for (const memberData of data) {
|
|
84
|
-
const member = this._add(memberData);
|
|
85
|
-
members.set(member.id, member);
|
|
86
|
-
}
|
|
87
|
-
return members;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Search for members by query
|
|
91
|
-
*/
|
|
92
|
-
async search(options) {
|
|
93
|
-
return this.fetchMany({ query: options.query, limit: options.limit ?? 10 });
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Kick a member
|
|
97
|
-
*/
|
|
98
|
-
async kick(id, reason) {
|
|
99
|
-
await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/members/${id}`, reason ? { reason } : undefined);
|
|
100
|
-
this.cache.delete(id);
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Ban a member
|
|
104
|
-
*/
|
|
105
|
-
async ban(id, options) {
|
|
106
|
-
await this.client.rest.request('PUT', `/guilds/${this.guild.id}/bans/${id}`, {
|
|
107
|
-
delete_message_days: options?.deleteMessageDays,
|
|
108
|
-
reason: options?.reason,
|
|
109
|
-
});
|
|
110
|
-
this.cache.delete(id);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Unban a user
|
|
114
|
-
*/
|
|
115
|
-
async unban(id, reason) {
|
|
116
|
-
await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/bans/${id}`, reason ? { reason } : undefined);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Edit a member
|
|
120
|
-
*/
|
|
121
|
-
async edit(id, data) {
|
|
122
|
-
const body = {};
|
|
123
|
-
if (data.nick !== undefined)
|
|
124
|
-
body.nick = data.nick;
|
|
125
|
-
if (data.roles !== undefined)
|
|
126
|
-
body.roles = data.roles;
|
|
127
|
-
if (data.mute !== undefined)
|
|
128
|
-
body.mute = data.mute;
|
|
129
|
-
if (data.deaf !== undefined)
|
|
130
|
-
body.deaf = data.deaf;
|
|
131
|
-
if (data.channel_id !== undefined)
|
|
132
|
-
body.channel_id = data.channel_id;
|
|
133
|
-
if (data.communication_disabled_until !== undefined) {
|
|
134
|
-
body.communication_disabled_until = data.communication_disabled_until?.toISOString() ?? null;
|
|
135
|
-
}
|
|
136
|
-
const result = await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/members/${id}`, body);
|
|
137
|
-
return this._add(result);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Add a role to a member
|
|
141
|
-
*/
|
|
142
|
-
async addRole(memberId, roleId, reason) {
|
|
143
|
-
await this.client.rest.request('PUT', `/guilds/${this.guild.id}/members/${memberId}/roles/${roleId}`, reason ? { reason } : undefined);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Remove a role from a member
|
|
147
|
-
*/
|
|
148
|
-
async removeRole(memberId, roleId, reason) {
|
|
149
|
-
await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/members/${memberId}/roles/${roleId}`, reason ? { reason } : undefined);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
export default GuildMemberManager;
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpbGRNZW1iZXJNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21hbmFnZXJzL0d1aWxkTWVtYmVyTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxhQUEwQjtJQUNoRSx3Q0FBd0M7SUFDeEIsS0FBSyxDQUFNO0lBRTNCLFlBQVksS0FBVSxFQUFFLFFBQXdCO1FBQzlDLCtFQUErRTtRQUMvRSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSTtRQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUc7WUFDYixFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFB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LENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hbmFnZXIgZm9yIGd1aWxkIG1lbWJlcnMgd2l0aCBjYWNoaW5nIGFuZCBsYXp5IGxvYWRpbmdcbiAqL1xuXG5pbXBvcnQgeyBDYWNoZWRNYW5hZ2VyIH0gZnJvbSAnLi9CYXNlTWFuYWdlcic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvQ29sbGVjdGlvbic7XG5pbXBvcnQgeyBQZXJtaXNzaW9ucyB9IGZyb20gJy4uL3N0cnVjdHVyZXMvR3VpbGRNZW1iZXInO1xuXG4vKipcbiAqIE1hbmFnZXMgZ3VpbGQgbWVtYmVyc1xuICovXG5leHBvcnQgY2xhc3MgR3VpbGRNZW1iZXJNYW5hZ2VyIGV4dGVuZHMgQ2FjaGVkTWFuYWdlcjxzdHJpbmcsIGFueT4ge1xuICAvKiogVGhlIGd1aWxkIHRoaXMgbWFuYWdlciBiZWxvbmdzIHRvICovXG4gIHB1YmxpYyByZWFkb25seSBndWlsZDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGd1aWxkOiBhbnksIGl0ZXJhYmxlPzogSXRlcmFibGU8YW55Pikge1xuICAgIC8vIFVzZSBhIHNpbXBsZSBvYmplY3QgYXMgcGxhY2Vob2xkZXIgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBHdWlsZE1lbWJlciBjbGFzcyB5ZXRcbiAgICBzdXBlcihndWlsZC5jbGllbnQsIE9iamVjdCBhcyBhbnksIGl0ZXJhYmxlKTtcbiAgICB0aGlzLmd1aWxkID0gZ3VpbGQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbWVtYmVyIHRvIHRoZSBjYWNoZVxuICAgKi9cbiAgX2FkZChkYXRhOiBhbnksIGNhY2hlID0gdHJ1ZSk6IGFueSB7XG4gICAgY29uc3QgaWQgPSBkYXRhLnVzZXI/LmlkID8/IGRhdGEuaWQ7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XG4gICAgXG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihleGlzdGluZywgZGF0YSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1lbWJlciA9IHtcbiAgICAgIGlkLFxuICAgICAgZ3VpbGRJZDogdGhpcy5ndWlsZC5pZCxcbiAgICAgIHVzZXI6IGRhdGEudXNlcixcbiAgICAgIG5pY2s6IGRhdGEubmljayxcbiAgICAgIHJvbGVzOiBkYXRhLnJvbGVzID8/IFtdLFxuICAgICAgam9pbmVkQXQ6IGRhdGEuam9pbmVkX2F0ID8gbmV3IERhdGUoZGF0YS5qb2luZWRfYXQpIDogbnVsbCxcbiAgICAgIHByZW1pdW1TaW5jZTogZGF0YS5wcmVtaXVtX3NpbmNlID8gbmV3IERhdGUoZGF0YS5wcmVtaXVtX3NpbmNlKSA6IG51bGwsXG4gICAgICBkZWFmOiBkYXRhLmRlYWYgPz8gZmFsc2UsXG4gICAgICBtdXRlOiBkYXRhLm11dGUgPz8gZmFsc2UsXG4gICAgICBwZW5kaW5nOiBkYXRhLnBlbmRpbmcgPz8gZmFsc2UsXG4gICAgICBwZXJtaXNzaW9uczogbmV3IFBlcm1pc3Npb25zKGRhdGEucGVybWlzc2lvbnMgfHwgJzAnLCB0aGlzLmd1aWxkLm93bmVySWQgPT09IGlkKSxcbiAgICAgIGNvbW11bmljYXRpb25EaXNhYmxlZFVudGlsOiBkYXRhLmNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWwgXG4gICAgICAgID8gbmV3IERhdGUoZGF0YS5jb21tdW5pY2F0aW9uX2Rpc2FibGVkX3VudGlsKSBcbiAgICAgICAgOiBudWxsLFxuICAgICAgXG4gICAgICAvLyBIZWxwZXIgbWV0aG9kc1xuICAgICAgZ2V0IGRpc3BsYXlOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uaWNrID8/IHRoaXMudXNlcj8uZGlzcGxheV9uYW1lID8/IHRoaXMudXNlcj8udXNlcm5hbWUgPz8gJ1Vua25vd24nO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgPEAke3RoaXMuaWR9PmA7XG4gICAgICB9LFxuICAgIH07XG4gICAgXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICB0aGlzLmNhY2hlLnNldChpZCwgbWVtYmVyKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG1lbWJlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhIG1lbWJlciBmcm9tIHRoZSBBUElcbiAgICovXG4gIGFzeW5jIGZldGNoKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGNhY2hlPzogYm9vbGVhbjsgZm9yY2U/OiBib29sZWFuIH0pOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghb3B0aW9ucz8uZm9yY2UpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jYWNoZS5nZXQoaWQpO1xuICAgICAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnR0VUJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycy8ke2lkfWBcbiAgICApO1xuICAgIFxuICAgIHJldHVybiB0aGlzLl9hZGQoZGF0YSwgb3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggbXVsdGlwbGUgbWVtYmVyc1xuICAgKi9cbiAgYXN5bmMgZmV0Y2hNYW55KG9wdGlvbnM/OiB7IFxuICAgIGxpbWl0PzogbnVtYmVyOyBcbiAgICBhZnRlcj86IHN0cmluZztcbiAgICBxdWVyeT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8Q29sbGVjdGlvbjxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnM/LmxpbWl0KSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRpb25zLmxpbWl0KSk7XG4gICAgaWYgKG9wdGlvbnM/LmFmdGVyKSBwYXJhbXMuc2V0KCdhZnRlcicsIG9wdGlvbnMuYWZ0ZXIpO1xuICAgIGlmIChvcHRpb25zPy5xdWVyeSkgcGFyYW1zLnNldCgncXVlcnknLCBvcHRpb25zLnF1ZXJ5KTtcbiAgICBcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ0dFVCcsXG4gICAgICBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L21lbWJlcnM/JHtwYXJhbXN9YFxuICAgICk7XG4gICAgXG4gICAgY29uc3QgbWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uPHN0cmluZywgYW55PigpO1xuICAgIGZvciAoY29uc3QgbWVtYmVyRGF0YSBvZiBkYXRhKSB7XG4gICAgICBjb25zdCBtZW1iZXIgPSB0aGlzLl9hZGQobWVtYmVyRGF0YSk7XG4gICAgICBtZW1iZXJzLnNldChtZW1iZXIuaWQsIG1lbWJlcik7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBtZW1iZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBmb3IgbWVtYmVycyBieSBxdWVyeVxuICAgKi9cbiAgYXN5bmMgc2VhcmNoKG9wdGlvbnM6IHsgcXVlcnk6IHN0cmluZzsgbGltaXQ/OiBudW1iZXIgfSk6IFByb21pc2U8Q29sbGVjdGlvbjxzdHJpbmcsIGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5mZXRjaE1hbnkoeyBxdWVyeTogb3B0aW9ucy5xdWVyeSwgbGltaXQ6IG9wdGlvbnMubGltaXQgPz8gMTAgfSk7XG4gIH1cblxuICAvKipcbiAgICogS2ljayBhIG1lbWJlclxuICAgKi9cbiAgYXN5bmMga2ljayhpZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnREVMRVRFJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycy8ke2lkfWAsXG4gICAgICByZWFzb24gPyB7IHJlYXNvbiB9IDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShpZCk7XG4gIH1cblxuICAvKipcbiAgICogQmFuIGEgbWVtYmVyXG4gICAqL1xuICBhc3luYyBiYW4oaWQ6IHN0cmluZywgb3B0aW9ucz86IHsgZGVsZXRlTWVzc2FnZURheXM/OiBudW1iZXI7IHJlYXNvbj86IHN0cmluZyB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ1BVVCcsXG4gICAgICBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L2JhbnMvJHtpZH1gLFxuICAgICAge1xuICAgICAgICBkZWxldGVfbWVzc2FnZV9kYXlzOiBvcHRpb25zPy5kZWxldGVNZXNzYWdlRGF5cyxcbiAgICAgICAgcmVhc29uOiBvcHRpb25zPy5yZWFzb24sXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShpZCk7XG4gIH1cblxuICAvKipcbiAgICogVW5iYW4gYSB1c2VyXG4gICAqL1xuICBhc3luYyB1bmJhbihpZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnREVMRVRFJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vYmFucy8ke2lkfWAsXG4gICAgICByZWFzb24gPyB7IHJlYXNvbiB9IDogdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0IGEgbWVtYmVyXG4gICAqL1xuICBhc3luYyBlZGl0KGlkOiBzdHJpbmcsIGRhdGE6IHtcbiAgICBuaWNrPzogc3RyaW5nIHwgbnVsbDtcbiAgICByb2xlcz86IHN0cmluZ1tdO1xuICAgIG11dGU/OiBib29sZWFuO1xuICAgIGRlYWY/OiBib29sZWFuO1xuICAgIGNoYW5uZWxfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIGNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWw/OiBEYXRlIHwgbnVsbDtcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgYm9keTogYW55ID0ge307XG4gICAgaWYgKGRhdGEubmljayAhPT0gdW5kZWZpbmVkKSBib2R5Lm5pY2sgPSBkYXRhLm5pY2s7XG4gICAgaWYgKGRhdGEucm9sZXMgIT09IHVuZGVmaW5lZCkgYm9keS5yb2xlcyA9IGRhdGEucm9sZXM7XG4gICAgaWYgKGRhdGEubXV0ZSAhPT0gdW5kZWZpbmVkKSBib2R5Lm11dGUgPSBkYXRhLm11dGU7XG4gICAgaWYgKGRhdGEuZGVhZiAhPT0gdW5kZWZpbmVkKSBib2R5LmRlYWYgPSBkYXRhLmRlYWY7XG4gICAgaWYgKGRhdGEuY2hhbm5lbF9pZCAhPT0gdW5kZWZpbmVkKSBib2R5LmNoYW5uZWxfaWQgPSBkYXRhLmNoYW5uZWxfaWQ7XG4gICAgaWYgKGRhdGEuY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBib2R5LmNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWwgPSBkYXRhLmNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWw/LnRvSVNPU3RyaW5nKCkgPz8gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ1BBVENIJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycy8ke2lkfWAsXG4gICAgICBib2R5XG4gICAgKTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy5fYWRkKHJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcm9sZSB0byBhIG1lbWJlclxuICAgKi9cbiAgYXN5bmMgYWRkUm9sZShtZW1iZXJJZDogc3RyaW5nLCByb2xlSWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ1BVVCcsXG4gICAgICBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L21lbWJlcnMvJHttZW1iZXJJZH0vcm9sZXMvJHtyb2xlSWR9YCxcbiAgICAgIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHJvbGUgZnJvbSBhIG1lbWJlclxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlUm9sZShtZW1iZXJJZDogc3RyaW5nLCByb2xlSWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ0RFTEVURScsXG4gICAgICBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L21lbWJlcnMvJHttZW1iZXJJZH0vcm9sZXMvJHtyb2xlSWR9YCxcbiAgICAgIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWRcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEd1aWxkTWVtYmVyTWFuYWdlcjtcbiJdfQ==
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Manager for roles with caching and lazy loading
|
|
3
|
-
*/
|
|
4
|
-
import { CachedManager } from './BaseManager';
|
|
5
|
-
import { Collection } from '../utils/Collection';
|
|
6
|
-
/**
|
|
7
|
-
* Manages roles for a guild
|
|
8
|
-
*/
|
|
9
|
-
export class RoleManager extends CachedManager {
|
|
10
|
-
/** The guild this manager belongs to */
|
|
11
|
-
guild;
|
|
12
|
-
constructor(guild, iterable) {
|
|
13
|
-
super(guild.client, Object, iterable);
|
|
14
|
-
this.guild = guild;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Get the @everyone role
|
|
18
|
-
*/
|
|
19
|
-
get everyone() {
|
|
20
|
-
return this.cache.get(this.guild.id) ?? null;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Get the highest role
|
|
24
|
-
*/
|
|
25
|
-
get highest() {
|
|
26
|
-
return this.cache.reduce((prev, role) => (role.position > (prev?.position ?? -1)) ? role : prev, null);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Get the bot's highest role
|
|
30
|
-
*/
|
|
31
|
-
get botRoleFor() {
|
|
32
|
-
return (userId) => {
|
|
33
|
-
const member = this.guild.members?.cache.get(userId);
|
|
34
|
-
if (!member)
|
|
35
|
-
return null;
|
|
36
|
-
return this.cache
|
|
37
|
-
.filter((role) => member.roles?.includes(role.id))
|
|
38
|
-
.sort((a, b) => b.position - a.position)
|
|
39
|
-
.first() ?? null;
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Add a role to the cache
|
|
44
|
-
*/
|
|
45
|
-
_add(data, cache = true) {
|
|
46
|
-
const id = data.id;
|
|
47
|
-
const existing = this.cache.get(id);
|
|
48
|
-
if (existing) {
|
|
49
|
-
if (cache)
|
|
50
|
-
Object.assign(existing, data);
|
|
51
|
-
return existing;
|
|
52
|
-
}
|
|
53
|
-
const role = {
|
|
54
|
-
id,
|
|
55
|
-
guildId: this.guild.id,
|
|
56
|
-
name: data.name,
|
|
57
|
-
color: data.color ?? 0,
|
|
58
|
-
hoist: data.hoist ?? false,
|
|
59
|
-
position: data.position ?? 0,
|
|
60
|
-
permissions: data.permissions ?? '0',
|
|
61
|
-
managed: data.managed ?? false,
|
|
62
|
-
mentionable: data.mentionable ?? false,
|
|
63
|
-
icon: data.icon ?? null,
|
|
64
|
-
unicodeEmoji: data.unicode_emoji ?? null,
|
|
65
|
-
tags: data.tags ?? null,
|
|
66
|
-
get hexColor() {
|
|
67
|
-
return `#${this.color.toString(16).padStart(6, '0')}`;
|
|
68
|
-
},
|
|
69
|
-
get createdAt() {
|
|
70
|
-
const timestamp = BigInt(this.id) >> 22n;
|
|
71
|
-
return new Date(Number(timestamp) + 1640995200000); // Jubbio epoch
|
|
72
|
-
},
|
|
73
|
-
toString() {
|
|
74
|
-
return this.id === this.guildId ? '@everyone' : `<@&${this.id}>`;
|
|
75
|
-
},
|
|
76
|
-
comparePositionTo(role) {
|
|
77
|
-
return this.position - (role?.position ?? 0);
|
|
78
|
-
},
|
|
79
|
-
async edit(data) {
|
|
80
|
-
return this.guild.roles.edit(this.id, data);
|
|
81
|
-
},
|
|
82
|
-
async delete(reason) {
|
|
83
|
-
return this.guild.roles.delete(this.id, reason);
|
|
84
|
-
},
|
|
85
|
-
async setPosition(position) {
|
|
86
|
-
return this.guild.roles.setPositions([{ role: this.id, position }]);
|
|
87
|
-
},
|
|
88
|
-
};
|
|
89
|
-
if (cache)
|
|
90
|
-
this.cache.set(id, role);
|
|
91
|
-
return role;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Fetch a role from the API
|
|
95
|
-
*/
|
|
96
|
-
async fetch(id, options) {
|
|
97
|
-
if (!options?.force) {
|
|
98
|
-
const existing = this.cache.get(id);
|
|
99
|
-
if (existing)
|
|
100
|
-
return existing;
|
|
101
|
-
}
|
|
102
|
-
// Roles are fetched as part of guild, so fetch all
|
|
103
|
-
const roles = await this.fetchAll();
|
|
104
|
-
return roles.get(id) ?? null;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Fetch all roles for the guild
|
|
108
|
-
*/
|
|
109
|
-
async fetchAll() {
|
|
110
|
-
const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/roles`);
|
|
111
|
-
const roles = new Collection();
|
|
112
|
-
for (const roleData of data) {
|
|
113
|
-
const role = this._add(roleData);
|
|
114
|
-
roles.set(role.id, role);
|
|
115
|
-
}
|
|
116
|
-
return roles;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Create a new role
|
|
120
|
-
*/
|
|
121
|
-
async create(options) {
|
|
122
|
-
const body = {};
|
|
123
|
-
if (options?.name)
|
|
124
|
-
body.name = options.name;
|
|
125
|
-
if (options?.color !== undefined) {
|
|
126
|
-
body.color = typeof options.color === 'string'
|
|
127
|
-
? parseInt(options.color.replace('#', ''), 16)
|
|
128
|
-
: options.color;
|
|
129
|
-
}
|
|
130
|
-
if (options?.hoist !== undefined)
|
|
131
|
-
body.hoist = options.hoist;
|
|
132
|
-
if (options?.permissions !== undefined)
|
|
133
|
-
body.permissions = String(options.permissions);
|
|
134
|
-
if (options?.mentionable !== undefined)
|
|
135
|
-
body.mentionable = options.mentionable;
|
|
136
|
-
if (options?.icon)
|
|
137
|
-
body.icon = options.icon;
|
|
138
|
-
if (options?.unicodeEmoji)
|
|
139
|
-
body.unicode_emoji = options.unicodeEmoji;
|
|
140
|
-
const data = await this.client.rest.request('POST', `/guilds/${this.guild.id}/roles`, body);
|
|
141
|
-
const role = this._add(data);
|
|
142
|
-
// Set position if specified
|
|
143
|
-
if (options?.position !== undefined) {
|
|
144
|
-
await this.setPositions([{ role: role.id, position: options.position }]);
|
|
145
|
-
}
|
|
146
|
-
return role;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Delete a role
|
|
150
|
-
*/
|
|
151
|
-
async delete(id, reason) {
|
|
152
|
-
await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/roles/${id}`, reason ? { reason } : undefined);
|
|
153
|
-
this.cache.delete(id);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Edit a role
|
|
157
|
-
*/
|
|
158
|
-
async edit(id, data) {
|
|
159
|
-
const body = {};
|
|
160
|
-
if (data.name !== undefined)
|
|
161
|
-
body.name = data.name;
|
|
162
|
-
if (data.color !== undefined) {
|
|
163
|
-
body.color = typeof data.color === 'string'
|
|
164
|
-
? parseInt(data.color.replace('#', ''), 16)
|
|
165
|
-
: data.color;
|
|
166
|
-
}
|
|
167
|
-
if (data.hoist !== undefined)
|
|
168
|
-
body.hoist = data.hoist;
|
|
169
|
-
if (data.permissions !== undefined)
|
|
170
|
-
body.permissions = String(data.permissions);
|
|
171
|
-
if (data.mentionable !== undefined)
|
|
172
|
-
body.mentionable = data.mentionable;
|
|
173
|
-
if (data.icon !== undefined)
|
|
174
|
-
body.icon = data.icon;
|
|
175
|
-
if (data.unicodeEmoji !== undefined)
|
|
176
|
-
body.unicode_emoji = data.unicodeEmoji;
|
|
177
|
-
const result = await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/roles/${id}`, body);
|
|
178
|
-
return this._add(result);
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Set role positions
|
|
182
|
-
*/
|
|
183
|
-
async setPositions(positions) {
|
|
184
|
-
const body = positions.map(p => ({ id: p.role, position: p.position }));
|
|
185
|
-
const data = await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/roles`, body);
|
|
186
|
-
const roles = new Collection();
|
|
187
|
-
for (const roleData of data) {
|
|
188
|
-
const role = this._add(roleData);
|
|
189
|
-
roles.set(role.id, role);
|
|
190
|
-
}
|
|
191
|
-
return roles;
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Compare two roles by position
|
|
195
|
-
*/
|
|
196
|
-
comparePositions(role1, role2) {
|
|
197
|
-
const r1 = typeof role1 === 'string' ? this.cache.get(role1) : role1;
|
|
198
|
-
const r2 = typeof role2 === 'string' ? this.cache.get(role2) : role2;
|
|
199
|
-
return (r1?.position ?? 0) - (r2?.position ?? 0);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
export default RoleManager;
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm9sZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFuYWdlcnMvUm9sZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsYUFBMEI7SUFDekQsd0NBQXdDO0lBQ3hCLEtBQUssQ0FBTTtJQUUzQixZQUFZLEtBQVUsRUFBRSxRQUF3QjtRQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQ3RDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDdEQsSUFBVyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFF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QUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFFRCxlQUFlLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWFuYWdlciBmb3Igcm9sZXMgd2l0aCBjYWNoaW5nIGFuZCBsYXp5IGxvYWRpbmdcbiAqL1xuXG5pbXBvcnQgeyBDYWNoZWRNYW5hZ2VyIH0gZnJvbSAnLi9CYXNlTWFuYWdlcic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvQ29sbGVjdGlvbic7XG5cbi8qKlxuICogTWFuYWdlcyByb2xlcyBmb3IgYSBndWlsZFxuICovXG5leHBvcnQgY2xhc3MgUm9sZU1hbmFnZXIgZXh0ZW5kcyBDYWNoZWRNYW5hZ2VyPHN0cmluZywgYW55PiB7XG4gIC8qKiBUaGUgZ3VpbGQgdGhpcyBtYW5hZ2VyIGJlbG9uZ3MgdG8gKi9cbiAgcHVibGljIHJlYWRvbmx5IGd1aWxkOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZ3VpbGQ6IGFueSwgaXRlcmFibGU/OiBJdGVyYWJsZTxhbnk+KSB7XG4gICAgc3VwZXIoZ3VpbGQuY2xpZW50LCBPYmplY3QgYXMgYW55LCBpdGVyYWJsZSk7XG4gICAgdGhpcy5ndWlsZCA9IGd1aWxkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgQGV2ZXJ5b25lIHJvbGVcbiAgICovXG4gIGdldCBldmVyeW9uZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNhY2hlLmdldCh0aGlzLmd1aWxkLmlkKSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaGlnaGVzdCByb2xlXG4gICAqL1xuICBnZXQgaGlnaGVzdCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNhY2hlLnJlZHVjZSgocHJldiwgcm9sZSkgPT4gXG4gICAgICAocm9sZS5wb3NpdGlvbiA+IChwcmV2Py5wb3NpdGlvbiA/PyAtMSkpID8gcm9sZSA6IHByZXZcbiAgICAsIG51bGwgYXMgYW55KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJvdCdzIGhpZ2hlc3Qgcm9sZVxuICAgKi9cbiAgZ2V0IGJvdFJvbGVGb3IoKTogKHVzZXJJZDogc3RyaW5nKSA9PiBhbnkgfCBudWxsIHtcbiAgICByZXR1cm4gKHVzZXJJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBtZW1iZXIgPSB0aGlzLmd1aWxkLm1lbWJlcnM/LmNhY2hlLmdldCh1c2VySWQpO1xuICAgICAgaWYgKCFtZW1iZXIpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgICAgICAgLmZpbHRlcigocm9sZTogYW55KSA9PiBtZW1iZXIucm9sZXM/LmluY2x1ZGVzKHJvbGUuaWQpKVxuICAgICAgICAuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGIucG9zaXRpb24gLSBhLnBvc2l0aW9uKVxuICAgICAgICAuZmlyc3QoKSA/PyBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcm9sZSB0byB0aGUgY2FjaGVcbiAgICovXG4gIF9hZGQoZGF0YTogYW55LCBjYWNoZSA9IHRydWUpOiBhbnkge1xuICAgIGNvbnN0IGlkID0gZGF0YS5pZDtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2FjaGUuZ2V0KGlkKTtcbiAgICBcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIGlmIChjYWNoZSkgT2JqZWN0LmFzc2lnbihleGlzdGluZywgZGF0YSk7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHJvbGUgPSB7XG4gICAgICBpZCxcbiAgICAgIGd1aWxkSWQ6IHRoaXMuZ3VpbGQuaWQsXG4gICAgICBuYW1lOiBkYXRhLm5hbWUsXG4gICAgICBjb2xvcjogZGF0YS5jb2xvciA/PyAwLFxuICAgICAgaG9pc3Q6IGRhdGEuaG9pc3QgPz8gZmFsc2UsXG4gICAgICBwb3NpdGlvbjogZGF0YS5wb3NpdGlvbiA/PyAwLFxuICAgICAgcGVybWlzc2lvbnM6IGRhdGEucGVybWlzc2lvbnMgPz8gJzAnLFxuICAgICAgbWFuYWdlZDogZGF0YS5tYW5hZ2VkID8/IGZhbHNlLFxuICAgICAgbWVudGlvbmFibGU6IGRhdGEubWVudGlvbmFibGUgPz8gZmFsc2UsXG4gICAgICBpY29uOiBkYXRhLmljb24gPz8gbnVsbCxcbiAgICAgIHVuaWNvZGVFbW9qaTogZGF0YS51bmljb2RlX2Vtb2ppID8/IG51bGwsXG4gICAgICB0YWdzOiBkYXRhLnRhZ3MgPz8gbnVsbCxcbiAgICAgIFxuICAgICAgZ2V0IGhleENvbG9yKCkge1xuICAgICAgICByZXR1cm4gYCMke3RoaXMuY29sb3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDYsICcwJyl9YDtcbiAgICAgIH0sXG4gICAgICBcbiAgICAgIGdldCBjcmVhdGVkQXQoKSB7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IEJpZ0ludCh0aGlzLmlkKSA+PiAyMm47XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShOdW1iZXIodGltZXN0YW1wKSArIDE2NDA5OTUyMDAwMDApOyAvLyBKdWJiaW8gZXBvY2hcbiAgICAgIH0sXG4gICAgICBcbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCA9PT0gdGhpcy5ndWlsZElkID8gJ0BldmVyeW9uZScgOiBgPEAmJHt0aGlzLmlkfT5gO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgY29tcGFyZVBvc2l0aW9uVG8ocm9sZTogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uIC0gKHJvbGU/LnBvc2l0aW9uID8/IDApO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgYXN5bmMgZWRpdChkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3VpbGQucm9sZXMuZWRpdCh0aGlzLmlkLCBkYXRhKTtcbiAgICAgIH0sXG4gICAgICBcbiAgICAgIGFzeW5jIGRlbGV0ZShyZWFzb24/OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3VpbGQucm9sZXMuZGVsZXRlKHRoaXMuaWQsIHJlYXNvbik7XG4gICAgICB9LFxuICAgICAgXG4gICAgICBhc3luYyBzZXRQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1aWxkLnJvbGVzLnNldFBvc2l0aW9ucyhbeyByb2xlOiB0aGlzLmlkLCBwb3NpdGlvbiB9XSk7XG4gICAgICB9LFxuICAgIH07XG4gICAgXG4gICAgaWYgKGNhY2hlKSB0aGlzLmNhY2hlLnNldChpZCwgcm9sZSk7XG4gICAgcmV0dXJuIHJvbGU7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSByb2xlIGZyb20gdGhlIEFQSVxuICAgKi9cbiAgYXN5bmMgZmV0Y2goaWQ6IHN0cmluZywgb3B0aW9ucz86IHsgY2FjaGU/OiBib29sZWFuOyBmb3JjZT86IGJvb2xlYW4gfSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCFvcHRpb25zPy5mb3JjZSkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcbiAgICB9XG4gICAgXG4gICAgLy8gUm9sZXMgYXJlIGZldGNoZWQgYXMgcGFydCBvZiBndWlsZCwgc28gZmV0Y2ggYWxsXG4gICAgY29uc3Qgcm9sZXMgPSBhd2FpdCB0aGlzLmZldGNoQWxsKCk7XG4gICAgcmV0dXJuIHJvbGVzLmdldChpZCkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbGwgcm9sZXMgZm9yIHRoZSBndWlsZFxuICAgKi9cbiAgYXN5bmMgZmV0Y2hBbGwoKTogUHJvbWlzZTxDb2xsZWN0aW9uPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ0dFVCcsIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vcm9sZXNgKTtcbiAgICBjb25zdCByb2xlcyA9IG5ldyBDb2xsZWN0aW9uPHN0cmluZywgYW55PigpO1xuICAgIGZvciAoY29uc3Qgcm9sZURhdGEgb2YgZGF0YSkge1xuICAgICAgY29uc3Qgcm9sZSA9IHRoaXMuX2FkZChyb2xlRGF0YSk7XG4gICAgICByb2xlcy5zZXQocm9sZS5pZCwgcm9sZSk7XG4gICAgfVxuICAgIHJldHVybiByb2xlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcm9sZVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKG9wdGlvbnM/OiB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBjb2xvcj86IG51bWJlciB8IHN0cmluZztcbiAgICBob2lzdD86IGJvb2xlYW47XG4gICAgcG9zaXRpb24/OiBudW1iZXI7XG4gICAgcGVybWlzc2lvbnM/OiBzdHJpbmcgfCBiaWdpbnQ7XG4gICAgbWVudGlvbmFibGU/OiBib29sZWFuO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdW5pY29kZUVtb2ppPzogc3RyaW5nO1xuICAgIHJlYXNvbj86IHN0cmluZztcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgYm9keTogYW55ID0ge307XG4gICAgaWYgKG9wdGlvbnM/Lm5hbWUpIGJvZHkubmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICBpZiAob3B0aW9ucz8uY29sb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5jb2xvciA9IHR5cGVvZiBvcHRpb25zLmNvbG9yID09PSAnc3RyaW5nJyBcbiAgICAgICAgPyBwYXJzZUludChvcHRpb25zLmNvbG9yLnJlcGxhY2UoJyMnLCAnJyksIDE2KSBcbiAgICAgICAgOiBvcHRpb25zLmNvbG9yO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8uaG9pc3QgIT09IHVuZGVmaW5lZCkgYm9keS5ob2lzdCA9IG9wdGlvbnMuaG9pc3Q7XG4gICAgaWYgKG9wdGlvbnM/LnBlcm1pc3Npb25zICE9PSB1bmRlZmluZWQpIGJvZHkucGVybWlzc2lvbnMgPSBTdHJpbmcob3B0aW9ucy5wZXJtaXNzaW9ucyk7XG4gICAgaWYgKG9wdGlvbnM/Lm1lbnRpb25hYmxlICE9PSB1bmRlZmluZWQpIGJvZHkubWVudGlvbmFibGUgPSBvcHRpb25zLm1lbnRpb25hYmxlO1xuICAgIGlmIChvcHRpb25zPy5pY29uKSBib2R5Lmljb24gPSBvcHRpb25zLmljb247XG4gICAgaWYgKG9wdGlvbnM/LnVuaWNvZGVFbW9qaSkgYm9keS51bmljb2RlX2Vtb2ppID0gb3B0aW9ucy51bmljb2RlRW1vamk7XG4gICAgXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnUE9TVCcsIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vcm9sZXNgLCBib2R5KTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5fYWRkKGRhdGEpO1xuICAgIFxuICAgIC8vIFNldCBwb3NpdGlvbiBpZiBzcGVjaWZpZWRcbiAgICBpZiAob3B0aW9ucz8ucG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5zZXRQb3NpdGlvbnMoW3sgcm9sZTogcm9sZS5pZCwgcG9zaXRpb246IG9wdGlvbnMucG9zaXRpb24gfV0pO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gcm9sZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSByb2xlXG4gICAqL1xuICBhc3luYyBkZWxldGUoaWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdERUxFVEUnLCBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L3JvbGVzLyR7aWR9YCwgXG4gICAgICByZWFzb24gPyB7IHJlYXNvbiB9IDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShpZCk7XG4gIH1cblxuICAvKipcbiAgICogRWRpdCBhIHJvbGVcbiAgICovXG4gIGFzeW5jIGVkaXQoaWQ6IHN0cmluZywgZGF0YToge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgaG9pc3Q/OiBib29sZWFuO1xuICAgIHBvc2l0aW9uPzogbnVtYmVyO1xuICAgIHBlcm1pc3Npb25zPzogc3RyaW5nIHwgYmlnaW50O1xuICAgIG1lbnRpb25hYmxlPzogYm9vbGVhbjtcbiAgICBpY29uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB1bmljb2RlRW1vamk/OiBzdHJpbmcgfCBudWxsO1xuICAgIHJlYXNvbj86IHN0cmluZztcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgYm9keTogYW55ID0ge307XG4gICAgaWYgKGRhdGEubmFtZSAhPT0gdW5kZWZpbmVkKSBib2R5Lm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgaWYgKGRhdGEuY29sb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5jb2xvciA9IHR5cGVvZiBkYXRhLmNvbG9yID09PSAnc3RyaW5nJyBcbiAgICAgICAgPyBwYXJzZUludChkYXRhLmNvbG9yLnJlcGxhY2UoJyMnLCAnJyksIDE2KSBcbiAgICAgICAgOiBkYXRhLmNvbG9yO1xuICAgIH1cbiAgICBpZiAoZGF0YS5ob2lzdCAhPT0gdW5kZWZpbmVkKSBib2R5LmhvaXN0ID0gZGF0YS5ob2lzdDtcbiAgICBpZiAoZGF0YS5wZXJtaXNzaW9ucyAhPT0gdW5kZWZpbmVkKSBib2R5LnBlcm1pc3Npb25zID0gU3RyaW5nKGRhdGEucGVybWlzc2lvbnMpO1xuICAgIGlmIChkYXRhLm1lbnRpb25hYmxlICE9PSB1bmRlZmluZWQpIGJvZHkubWVudGlvbmFibGUgPSBkYXRhLm1lbnRpb25hYmxlO1xuICAgIGlmIChkYXRhLmljb24gIT09IHVuZGVmaW5lZCkgYm9keS5pY29uID0gZGF0YS5pY29uO1xuICAgIGlmIChkYXRhLnVuaWNvZGVFbW9qaSAhPT0gdW5kZWZpbmVkKSBib2R5LnVuaWNvZGVfZW1vamkgPSBkYXRhLnVuaWNvZGVFbW9qaTtcbiAgICBcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ1BBVENIJywgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9yb2xlcy8ke2lkfWAsIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLl9hZGQocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgcm9sZSBwb3NpdGlvbnNcbiAgICovXG4gIGFzeW5jIHNldFBvc2l0aW9ucyhwb3NpdGlvbnM6IEFycmF5PHsgcm9sZTogc3RyaW5nOyBwb3NpdGlvbjogbnVtYmVyIH0+KTogUHJvbWlzZTxDb2xsZWN0aW9uPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IGJvZHkgPSBwb3NpdGlvbnMubWFwKHAgPT4gKHsgaWQ6IHAucm9sZSwgcG9zaXRpb246IHAucG9zaXRpb24gfSkpO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ1BBVENIJywgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9yb2xlc2AsIGJvZHkpO1xuICAgIFxuICAgIGNvbnN0IHJvbGVzID0gbmV3IENvbGxlY3Rpb248c3RyaW5nLCBhbnk+KCk7XG4gICAgZm9yIChjb25zdCByb2xlRGF0YSBvZiBkYXRhKSB7XG4gICAgICBjb25zdCByb2xlID0gdGhpcy5fYWRkKHJvbGVEYXRhKTtcbiAgICAgIHJvbGVzLnNldChyb2xlLmlkLCByb2xlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvbGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIHJvbGVzIGJ5IHBvc2l0aW9uXG4gICAqL1xuICBjb21wYXJlUG9zaXRpb25zKHJvbGUxOiBzdHJpbmcgfCBhbnksIHJvbGUyOiBzdHJpbmcgfCBhbnkpOiBudW1iZXIge1xuICAgIGNvbnN0IHIxID0gdHlwZW9mIHJvbGUxID09PSAnc3RyaW5nJyA/IHRoaXMuY2FjaGUuZ2V0KHJvbGUxKSA6IHJvbGUxO1xuICAgIGNvbnN0IHIyID0gdHlwZW9mIHJvbGUyID09PSAnc3RyaW5nJyA/IHRoaXMuY2FjaGUuZ2V0KHJvbGUyKSA6IHJvbGUyO1xuICAgIHJldHVybiAocjE/LnBvc2l0aW9uID8/IDApIC0gKHIyPy5wb3NpdGlvbiA/PyAwKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSb2xlTWFuYWdlcjtcbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Manager exports
|
|
3
|
-
*/
|
|
4
|
-
export * from './BaseManager';
|
|
5
|
-
export * from './GuildMemberManager';
|
|
6
|
-
export * from './ChannelManager';
|
|
7
|
-
export * from './RoleManager';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFuYWdlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hbmFnZXIgZXhwb3J0c1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vQmFzZU1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9HdWlsZE1lbWJlck1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9DaGFubmVsTWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL1JvbGVNYW5hZ2VyJztcbiJdfQ==
|