@jubbio/core 1.3.3 → 1.3.5

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.
Files changed (131) hide show
  1. package/dist/Client.js +50 -10
  2. package/dist/rest/REST.d.ts +1 -0
  3. package/dist/rest/REST.js +1 -1
  4. package/dist/structures/Channel.d.ts +1 -1
  5. package/dist/structures/Channel.js +11 -4
  6. package/dist/structures/Guild.d.ts +1 -1
  7. package/dist/structures/Guild.js +7 -3
  8. package/dist/structures/Interaction.js +11 -3
  9. package/dist/structures/Message.d.ts +2 -0
  10. package/dist/structures/Message.js +13 -33
  11. package/package.json +4 -14
  12. package/dist/cjs/Client.d.ts +0 -157
  13. package/dist/cjs/Client.js +0 -640
  14. package/dist/cjs/builders/ActionRowBuilder.d.ts +0 -53
  15. package/dist/cjs/builders/ActionRowBuilder.js +0 -68
  16. package/dist/cjs/builders/ButtonBuilder.d.ts +0 -77
  17. package/dist/cjs/builders/ButtonBuilder.js +0 -96
  18. package/dist/cjs/builders/EmbedBuilder.d.ts +0 -157
  19. package/dist/cjs/builders/EmbedBuilder.js +0 -208
  20. package/dist/cjs/builders/ModalBuilder.d.ts +0 -122
  21. package/dist/cjs/builders/ModalBuilder.js +0 -162
  22. package/dist/cjs/builders/SelectMenuBuilder.d.ts +0 -123
  23. package/dist/cjs/builders/SelectMenuBuilder.js +0 -165
  24. package/dist/cjs/builders/SlashCommandBuilder.d.ts +0 -197
  25. package/dist/cjs/builders/SlashCommandBuilder.js +0 -324
  26. package/dist/cjs/builders/index.d.ts +0 -9
  27. package/dist/cjs/builders/index.js +0 -26
  28. package/dist/cjs/enums.d.ts +0 -191
  29. package/dist/cjs/enums.js +0 -211
  30. package/dist/cjs/index.d.ts +0 -25
  31. package/dist/cjs/index.js +0 -130
  32. package/dist/cjs/managers/BaseManager.d.ts +0 -69
  33. package/dist/cjs/managers/BaseManager.js +0 -106
  34. package/dist/cjs/managers/ChannelManager.d.ts +0 -95
  35. package/dist/cjs/managers/ChannelManager.js +0 -205
  36. package/dist/cjs/managers/GuildMemberManager.d.ts +0 -74
  37. package/dist/cjs/managers/GuildMemberManager.js +0 -157
  38. package/dist/cjs/managers/RoleManager.d.ts +0 -84
  39. package/dist/cjs/managers/RoleManager.js +0 -207
  40. package/dist/cjs/managers/index.d.ts +0 -7
  41. package/dist/cjs/managers/index.js +0 -24
  42. package/dist/cjs/rest/REST.d.ts +0 -527
  43. package/dist/cjs/rest/REST.js +0 -904
  44. package/dist/cjs/rest/index.d.ts +0 -1
  45. package/dist/cjs/rest/index.js +0 -18
  46. package/dist/cjs/sharding/ShardingManager.d.ts +0 -179
  47. package/dist/cjs/sharding/ShardingManager.js +0 -375
  48. package/dist/cjs/sharding/index.d.ts +0 -4
  49. package/dist/cjs/sharding/index.js +0 -21
  50. package/dist/cjs/structures/Channel.d.ts +0 -122
  51. package/dist/cjs/structures/Channel.js +0 -240
  52. package/dist/cjs/structures/Collection.d.ts +0 -53
  53. package/dist/cjs/structures/Collection.js +0 -115
  54. package/dist/cjs/structures/Guild.d.ts +0 -59
  55. package/dist/cjs/structures/Guild.js +0 -94
  56. package/dist/cjs/structures/GuildMember.d.ts +0 -174
  57. package/dist/cjs/structures/GuildMember.js +0 -311
  58. package/dist/cjs/structures/Interaction.d.ts +0 -245
  59. package/dist/cjs/structures/Interaction.js +0 -450
  60. package/dist/cjs/structures/Message.d.ts +0 -98
  61. package/dist/cjs/structures/Message.js +0 -195
  62. package/dist/cjs/structures/User.d.ts +0 -37
  63. package/dist/cjs/structures/User.js +0 -65
  64. package/dist/cjs/structures/index.d.ts +0 -7
  65. package/dist/cjs/structures/index.js +0 -25
  66. package/dist/cjs/structures.d.ts +0 -1
  67. package/dist/cjs/structures.js +0 -19
  68. package/dist/cjs/types.d.ts +0 -255
  69. package/dist/cjs/types.js +0 -3
  70. package/dist/cjs/utils/BitField.d.ts +0 -66
  71. package/dist/cjs/utils/BitField.js +0 -138
  72. package/dist/cjs/utils/Collection.d.ts +0 -116
  73. package/dist/cjs/utils/Collection.js +0 -265
  74. package/dist/cjs/utils/Collector.d.ts +0 -152
  75. package/dist/cjs/utils/Collector.js +0 -314
  76. package/dist/cjs/utils/DataResolver.d.ts +0 -61
  77. package/dist/cjs/utils/DataResolver.js +0 -146
  78. package/dist/cjs/utils/Formatters.d.ts +0 -145
  79. package/dist/cjs/utils/Formatters.js +0 -213
  80. package/dist/cjs/utils/IntentsBitField.d.ts +0 -85
  81. package/dist/cjs/utils/IntentsBitField.js +0 -99
  82. package/dist/cjs/utils/Partials.d.ts +0 -104
  83. package/dist/cjs/utils/Partials.js +0 -148
  84. package/dist/cjs/utils/PermissionsBitField.d.ts +0 -118
  85. package/dist/cjs/utils/PermissionsBitField.js +0 -145
  86. package/dist/cjs/utils/SnowflakeUtil.d.ts +0 -63
  87. package/dist/cjs/utils/SnowflakeUtil.js +0 -93
  88. package/dist/cjs/utils/Sweepers.d.ts +0 -119
  89. package/dist/cjs/utils/Sweepers.js +0 -249
  90. package/dist/cjs/utils/index.d.ts +0 -13
  91. package/dist/cjs/utils/index.js +0 -30
  92. package/dist/esm/Client.js +0 -634
  93. package/dist/esm/builders/ActionRowBuilder.js +0 -64
  94. package/dist/esm/builders/ButtonBuilder.js +0 -92
  95. package/dist/esm/builders/EmbedBuilder.js +0 -204
  96. package/dist/esm/builders/ModalBuilder.js +0 -157
  97. package/dist/esm/builders/SelectMenuBuilder.js +0 -161
  98. package/dist/esm/builders/SlashCommandBuilder.js +0 -311
  99. package/dist/esm/builders/index.js +0 -10
  100. package/dist/esm/enums.js +0 -208
  101. package/dist/esm/index.js +0 -34
  102. package/dist/esm/managers/BaseManager.js +0 -100
  103. package/dist/esm/managers/ChannelManager.js +0 -200
  104. package/dist/esm/managers/GuildMemberManager.js +0 -153
  105. package/dist/esm/managers/RoleManager.js +0 -203
  106. package/dist/esm/managers/index.js +0 -8
  107. package/dist/esm/rest/REST.js +0 -900
  108. package/dist/esm/rest/index.js +0 -2
  109. package/dist/esm/sharding/ShardingManager.js +0 -366
  110. package/dist/esm/sharding/index.js +0 -5
  111. package/dist/esm/structures/Channel.js +0 -232
  112. package/dist/esm/structures/Collection.js +0 -111
  113. package/dist/esm/structures/Guild.js +0 -90
  114. package/dist/esm/structures/GuildMember.js +0 -306
  115. package/dist/esm/structures/Interaction.js +0 -438
  116. package/dist/esm/structures/Message.js +0 -191
  117. package/dist/esm/structures/User.js +0 -61
  118. package/dist/esm/structures/index.js +0 -9
  119. package/dist/esm/structures.js +0 -3
  120. package/dist/esm/types.js +0 -2
  121. package/dist/esm/utils/BitField.js +0 -134
  122. package/dist/esm/utils/Collection.js +0 -261
  123. package/dist/esm/utils/Collector.js +0 -305
  124. package/dist/esm/utils/DataResolver.js +0 -142
  125. package/dist/esm/utils/Formatters.js +0 -191
  126. package/dist/esm/utils/IntentsBitField.js +0 -93
  127. package/dist/esm/utils/Partials.js +0 -137
  128. package/dist/esm/utils/PermissionsBitField.js +0 -141
  129. package/dist/esm/utils/SnowflakeUtil.js +0 -89
  130. package/dist/esm/utils/Sweepers.js +0 -245
  131. package/dist/esm/utils/index.js +0 -14
@@ -1,95 +0,0 @@
1
- /**
2
- * Manager for channels with caching and lazy loading
3
- */
4
- import { CachedManager } from './BaseManager';
5
- import { Collection } from '../utils/Collection';
6
- /** Channel types */
7
- export declare enum ChannelType {
8
- GuildText = 0,
9
- DM = 1,
10
- GuildVoice = 2,
11
- GroupDM = 3,
12
- GuildCategory = 4,
13
- GuildAnnouncement = 5,
14
- GuildStageVoice = 13,
15
- GuildDirectory = 14,
16
- GuildForum = 15
17
- }
18
- /**
19
- * Manages channels for a guild
20
- */
21
- export declare class GuildChannelManager extends CachedManager<string, any> {
22
- /** The guild this manager belongs to */
23
- readonly guild: any;
24
- constructor(guild: any, iterable?: Iterable<any>);
25
- /**
26
- * Add a channel to the cache
27
- */
28
- _add(data: any, cache?: boolean): any;
29
- /**
30
- * Fetch a channel from the API
31
- */
32
- fetch(id: string, options?: {
33
- cache?: boolean;
34
- force?: boolean;
35
- }): Promise<any>;
36
- /**
37
- * Fetch all channels for the guild
38
- */
39
- fetchAll(): Promise<Collection<string, any>>;
40
- /**
41
- * Create a new channel
42
- */
43
- create(options: {
44
- name: string;
45
- type?: ChannelType;
46
- topic?: string;
47
- bitrate?: number;
48
- userLimit?: number;
49
- rateLimitPerUser?: number;
50
- position?: number;
51
- permissionOverwrites?: any[];
52
- parent?: string;
53
- nsfw?: boolean;
54
- reason?: string;
55
- }): Promise<any>;
56
- /**
57
- * Delete a channel
58
- */
59
- delete(id: string, reason?: string): Promise<void>;
60
- /**
61
- * Edit a channel
62
- */
63
- edit(id: string, data: {
64
- name?: string;
65
- type?: ChannelType;
66
- position?: number;
67
- topic?: string;
68
- nsfw?: boolean;
69
- rateLimitPerUser?: number;
70
- bitrate?: number;
71
- userLimit?: number;
72
- permissionOverwrites?: any[];
73
- parent?: string | null;
74
- }): Promise<any>;
75
- /**
76
- * Set channel positions
77
- */
78
- setPositions(positions: Array<{
79
- channel: string;
80
- position: number;
81
- parent?: string | null;
82
- }>): Promise<void>;
83
- }
84
- /**
85
- * Global channel manager for the client
86
- */
87
- export declare class ChannelManager extends CachedManager<string, any> {
88
- constructor(client: any, iterable?: Iterable<any>);
89
- _add(data: any, cache?: boolean): any;
90
- fetch(id: string, options?: {
91
- cache?: boolean;
92
- force?: boolean;
93
- }): Promise<any>;
94
- }
95
- export default GuildChannelManager;
@@ -1,205 +0,0 @@
1
- "use strict";
2
- /**
3
- * Manager for channels with caching and lazy loading
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ChannelManager = exports.GuildChannelManager = exports.ChannelType = void 0;
7
- const BaseManager_1 = require("./BaseManager");
8
- const Collection_1 = require("../utils/Collection");
9
- /** Channel types */
10
- var ChannelType;
11
- (function (ChannelType) {
12
- ChannelType[ChannelType["GuildText"] = 0] = "GuildText";
13
- ChannelType[ChannelType["DM"] = 1] = "DM";
14
- ChannelType[ChannelType["GuildVoice"] = 2] = "GuildVoice";
15
- ChannelType[ChannelType["GroupDM"] = 3] = "GroupDM";
16
- ChannelType[ChannelType["GuildCategory"] = 4] = "GuildCategory";
17
- ChannelType[ChannelType["GuildAnnouncement"] = 5] = "GuildAnnouncement";
18
- ChannelType[ChannelType["GuildStageVoice"] = 13] = "GuildStageVoice";
19
- ChannelType[ChannelType["GuildDirectory"] = 14] = "GuildDirectory";
20
- ChannelType[ChannelType["GuildForum"] = 15] = "GuildForum";
21
- })(ChannelType || (exports.ChannelType = ChannelType = {}));
22
- /**
23
- * Manages channels for a guild
24
- */
25
- class GuildChannelManager extends BaseManager_1.CachedManager {
26
- /** The guild this manager belongs to */
27
- guild;
28
- constructor(guild, iterable) {
29
- super(guild.client, Object, iterable);
30
- this.guild = guild;
31
- }
32
- /**
33
- * Add a channel to the cache
34
- */
35
- _add(data, cache = true) {
36
- const id = data.id;
37
- const existing = this.cache.get(id);
38
- if (existing) {
39
- if (cache)
40
- Object.assign(existing, data);
41
- return existing;
42
- }
43
- const channel = {
44
- id,
45
- guildId: this.guild.id,
46
- name: data.name,
47
- type: data.type,
48
- position: data.position ?? 0,
49
- parentId: data.parent_id ?? null,
50
- permissionOverwrites: data.permission_overwrites ?? [],
51
- topic: data.topic ?? null,
52
- nsfw: data.nsfw ?? false,
53
- rateLimitPerUser: data.rate_limit_per_user ?? 0,
54
- bitrate: data.bitrate,
55
- userLimit: data.user_limit,
56
- get isText() { return [ChannelType.GuildText, ChannelType.GuildAnnouncement].includes(this.type); },
57
- get isVoice() { return [ChannelType.GuildVoice, ChannelType.GuildStageVoice].includes(this.type); },
58
- get isCategory() { return this.type === ChannelType.GuildCategory; },
59
- toString() { return `<#${this.id}>`; },
60
- async send(content) {
61
- return this.guild.client.rest.request('POST', `/channels/${this.id}/messages`, typeof content === 'string' ? { content } : content);
62
- },
63
- async delete(reason) {
64
- return this.guild.client.rest.request('DELETE', `/channels/${this.id}`, reason ? { reason } : undefined);
65
- },
66
- async edit(data) {
67
- return this.guild.client.rest.request('PATCH', `/channels/${this.id}`, data);
68
- },
69
- };
70
- if (cache)
71
- this.cache.set(id, channel);
72
- return channel;
73
- }
74
- /**
75
- * Fetch a channel from the API
76
- */
77
- async fetch(id, options) {
78
- if (!options?.force) {
79
- const existing = this.cache.get(id);
80
- if (existing)
81
- return existing;
82
- }
83
- const data = await this.client.rest.request('GET', `/channels/${id}`);
84
- return this._add(data, options?.cache ?? true);
85
- }
86
- /**
87
- * Fetch all channels for the guild
88
- */
89
- async fetchAll() {
90
- const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/channels`);
91
- const channels = new Collection_1.Collection();
92
- for (const channelData of data) {
93
- const channel = this._add(channelData);
94
- channels.set(channel.id, channel);
95
- }
96
- return channels;
97
- }
98
- /**
99
- * Create a new channel
100
- */
101
- async create(options) {
102
- const body = {
103
- name: options.name,
104
- type: options.type ?? ChannelType.GuildText,
105
- };
106
- if (options.topic)
107
- body.topic = options.topic;
108
- if (options.bitrate)
109
- body.bitrate = options.bitrate;
110
- if (options.userLimit)
111
- body.user_limit = options.userLimit;
112
- if (options.rateLimitPerUser)
113
- body.rate_limit_per_user = options.rateLimitPerUser;
114
- if (options.position !== undefined)
115
- body.position = options.position;
116
- if (options.permissionOverwrites)
117
- body.permission_overwrites = options.permissionOverwrites;
118
- if (options.parent)
119
- body.parent_id = options.parent;
120
- if (options.nsfw !== undefined)
121
- body.nsfw = options.nsfw;
122
- const data = await this.client.rest.request('POST', `/guilds/${this.guild.id}/channels`, body);
123
- return this._add(data);
124
- }
125
- /**
126
- * Delete a channel
127
- */
128
- async delete(id, reason) {
129
- await this.client.rest.request('DELETE', `/channels/${id}`, reason ? { reason } : undefined);
130
- this.cache.delete(id);
131
- }
132
- /**
133
- * Edit a channel
134
- */
135
- async edit(id, data) {
136
- const body = {};
137
- if (data.name)
138
- body.name = data.name;
139
- if (data.type !== undefined)
140
- body.type = data.type;
141
- if (data.position !== undefined)
142
- body.position = data.position;
143
- if (data.topic !== undefined)
144
- body.topic = data.topic;
145
- if (data.nsfw !== undefined)
146
- body.nsfw = data.nsfw;
147
- if (data.rateLimitPerUser !== undefined)
148
- body.rate_limit_per_user = data.rateLimitPerUser;
149
- if (data.bitrate !== undefined)
150
- body.bitrate = data.bitrate;
151
- if (data.userLimit !== undefined)
152
- body.user_limit = data.userLimit;
153
- if (data.permissionOverwrites)
154
- body.permission_overwrites = data.permissionOverwrites;
155
- if (data.parent !== undefined)
156
- body.parent_id = data.parent;
157
- const result = await this.client.rest.request('PATCH', `/channels/${id}`, body);
158
- return this._add(result);
159
- }
160
- /**
161
- * Set channel positions
162
- */
163
- async setPositions(positions) {
164
- const body = positions.map(p => ({
165
- id: p.channel,
166
- position: p.position,
167
- parent_id: p.parent,
168
- }));
169
- await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/channels`, body);
170
- }
171
- }
172
- exports.GuildChannelManager = GuildChannelManager;
173
- /**
174
- * Global channel manager for the client
175
- */
176
- class ChannelManager extends BaseManager_1.CachedManager {
177
- constructor(client, iterable) {
178
- super(client, Object, iterable);
179
- }
180
- _add(data, cache = true) {
181
- const id = data.id;
182
- const existing = this.cache.get(id);
183
- if (existing) {
184
- if (cache)
185
- Object.assign(existing, data);
186
- return existing;
187
- }
188
- const channel = { ...data, id };
189
- if (cache)
190
- this.cache.set(id, channel);
191
- return channel;
192
- }
193
- async fetch(id, options) {
194
- if (!options?.force) {
195
- const existing = this.cache.get(id);
196
- if (existing)
197
- return existing;
198
- }
199
- const data = await this.client.rest.request('GET', `/channels/${id}`);
200
- return this._add(data, options?.cache ?? true);
201
- }
202
- }
203
- exports.ChannelManager = ChannelManager;
204
- exports.default = GuildChannelManager;
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbm5lbE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFuYWdlcnMvQ2hhbm5lbE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCwrQ0FBOEM7QUFDOUMsb0RBQWlEO0FBRWpELG9CQUFvQjtBQUNwQixJQUFZLFdBVVg7QUFWRCxXQUFZLFdBQVc7SUFDckIsdURBQWEsQ0FBQTtJQUNiLHlDQUFNLENBQUE7SUFDTix5REFBYyxDQUFBO0lBQ2QsbURBQVcsQ0FBQTtJQUNYLCtEQUFpQixDQUFBO0lBQ2pCLHVFQUFxQixDQUFBO0lBQ3JCLG9FQUFvQixDQUFBO0lBQ3BCLGtFQUFtQixDQUFBO0lBQ25CLDBEQUFlLENBQUE7QUFDakIsQ0FBQyxFQVZXLFdBQVcsMkJBQVgsV0FBVyxRQVV0QjtBQUVEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSwyQkFBMEI7SUFDakUsd0NBQXdDO0lBQ3hCLEtBQUssQ0FBTTtJQUUzQixZQUFZLEtBQVUsRUFBRSxRQUF3QjtRQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSTtRQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLEtBQUs7Z0JBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1B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O1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQVUsRUFBRSxPQUE4QztRQUNwRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3BCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksUUFBUTtnQkFBRSxPQUFPLFFBQVEsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBMUJELHdDQTBCQztBQUVELGtCQUFlLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYW5hZ2VyIGZvciBjaGFubmVscyB3aXRoIGNhY2hpbmcgYW5kIGxhenkgbG9hZGluZ1xuICovXG5cbmltcG9ydCB7IENhY2hlZE1hbmFnZXIgfSBmcm9tICcuL0Jhc2VNYW5hZ2VyJztcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuLi91dGlscy9Db2xsZWN0aW9uJztcblxuLyoqIENoYW5uZWwgdHlwZXMgKi9cbmV4cG9ydCBlbnVtIENoYW5uZWxUeXBlIHtcbiAgR3VpbGRUZXh0ID0gMCxcbiAgRE0gPSAxLFxuICBHdWlsZFZvaWNlID0gMixcbiAgR3JvdXBETSA9IDMsXG4gIEd1aWxkQ2F0ZWdvcnkgPSA0LFxuICBHdWlsZEFubm91bmNlbWVudCA9IDUsXG4gIEd1aWxkU3RhZ2VWb2ljZSA9IDEzLFxuICBHdWlsZERpcmVjdG9yeSA9IDE0LFxuICBHdWlsZEZvcnVtID0gMTUsXG59XG5cbi8qKlxuICogTWFuYWdlcyBjaGFubmVscyBmb3IgYSBndWlsZFxuICovXG5leHBvcnQgY2xhc3MgR3VpbGRDaGFubmVsTWFuYWdlciBleHRlbmRzIENhY2hlZE1hbmFnZXI8c3RyaW5nLCBhbnk+IHtcbiAgLyoqIFRoZSBndWlsZCB0aGlzIG1hbmFnZXIgYmVsb25ncyB0byAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3VpbGQ6IGFueTtcblxuICBjb25zdHJ1Y3RvcihndWlsZDogYW55LCBpdGVyYWJsZT86IEl0ZXJhYmxlPGFueT4pIHtcbiAgICBzdXBlcihndWlsZC5jbGllbnQsIE9iamVjdCBhcyBhbnksIGl0ZXJhYmxlKTtcbiAgICB0aGlzLmd1aWxkID0gZ3VpbGQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY2hhbm5lbCB0byB0aGUgY2FjaGVcbiAgICovXG4gIF9hZGQoZGF0YTogYW55LCBjYWNoZSA9IHRydWUpOiBhbnkge1xuICAgIGNvbnN0IGlkID0gZGF0YS5pZDtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2FjaGUuZ2V0KGlkKTtcbiAgICBcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIGlmIChjYWNoZSkgT2JqZWN0LmFzc2lnbihleGlzdGluZywgZGF0YSk7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGNoYW5uZWwgPSB7XG4gICAgICBpZCxcbiAgICAgIGd1aWxkSWQ6IHRoaXMuZ3VpbGQuaWQsXG4gICAgICBuYW1lOiBkYXRhLm5hbWUsXG4gICAgICB0eXBlOiBkYXRhLnR5cGUsXG4gICAgICBwb3NpdGlvbjogZGF0YS5wb3NpdGlvbiA/PyAwLFxuICAgICAgcGFyZW50SWQ6IGRhdGEucGFyZW50X2lkID8/IG51bGwsXG4gICAgICBwZXJtaXNzaW9uT3ZlcndyaXRlczogZGF0YS5wZXJtaXNzaW9uX292ZXJ3cml0ZXMgPz8gW10sXG4gICAgICB0b3BpYzogZGF0YS50b3BpYyA/PyBudWxsLFxuICAgICAgbnNmdzogZGF0YS5uc2Z3ID8/IGZhbHNlLFxuICAgICAgcmF0ZUxpbWl0UGVyVXNlcjogZGF0YS5yYXRlX2xpbWl0X3Blcl91c2VyID8/IDAsXG4gICAgICBiaXRyYXRlOiBkYXRhLmJpdHJhdGUsXG4gICAgICB1c2VyTGltaXQ6IGRhdGEudXNlcl9saW1pdCxcbiAgICAgIFxuICAgICAgZ2V0IGlzVGV4dCgpIHsgcmV0dXJuIFtDaGFubmVsVHlwZS5HdWlsZFRleHQsIENoYW5uZWxUeXBlLkd1aWxkQW5ub3VuY2VtZW50XS5pbmNsdWRlcyh0aGlzLnR5cGUpOyB9LFxuICAgICAgZ2V0IGlzVm9pY2UoKSB7IHJldHVybiBbQ2hhbm5lbFR5cGUuR3VpbGRWb2ljZSwgQ2hhbm5lbFR5cGUuR3VpbGRTdGFnZVZvaWNlXS5pbmNsdWRlcyh0aGlzLnR5cGUpOyB9LFxuICAgICAgZ2V0IGlzQ2F0ZWdvcnkoKSB7IHJldHVybiB0aGlzLnR5cGUgPT09IENoYW5uZWxUeXBlLkd1aWxkQ2F0ZWdvcnk7IH0sXG4gICAgICBcbiAgICAgIHRvU3RyaW5nKCkgeyByZXR1cm4gYDwjJHt0aGlzLmlkfT5gOyB9LFxuICAgICAgXG4gICAgICBhc3luYyBzZW5kKGNvbnRlbnQ6IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWlsZC5jbGllbnQucmVzdC5yZXF1ZXN0KCdQT1NUJywgYC9jaGFubmVscy8ke3RoaXMuaWR9L21lc3NhZ2VzYCwgXG4gICAgICAgICAgdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnID8geyBjb250ZW50IH0gOiBjb250ZW50XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgXG4gICAgICBhc3luYyBkZWxldGUocmVhc29uPzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1aWxkLmNsaWVudC5yZXN0LnJlcXVlc3QoJ0RFTEVURScsIGAvY2hhbm5lbHMvJHt0aGlzLmlkfWAsIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWQpO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgYXN5bmMgZWRpdChkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3VpbGQuY2xpZW50LnJlc3QucmVxdWVzdCgnUEFUQ0gnLCBgL2NoYW5uZWxzLyR7dGhpcy5pZH1gLCBkYXRhKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICBcbiAgICBpZiAoY2FjaGUpIHRoaXMuY2FjaGUuc2V0KGlkLCBjaGFubmVsKTtcbiAgICByZXR1cm4gY2hhbm5lbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhIGNoYW5uZWwgZnJvbSB0aGUgQVBJXG4gICAqL1xuICBhc3luYyBmZXRjaChpZDogc3RyaW5nLCBvcHRpb25zPzogeyBjYWNoZT86IGJvb2xlYW47IGZvcmNlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIW9wdGlvbnM/LmZvcmNlKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2FjaGUuZ2V0KGlkKTtcbiAgICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdHRVQnLCBgL2NoYW5uZWxzLyR7aWR9YCk7XG4gICAgcmV0dXJuIHRoaXMuX2FkZChkYXRhLCBvcHRpb25zPy5jYWNoZSA/PyB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbGwgY2hhbm5lbHMgZm9yIHRoZSBndWlsZFxuICAgKi9cbiAgYXN5bmMgZmV0Y2hBbGwoKTogUHJvbWlzZTxDb2xsZWN0aW9uPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ0dFVCcsIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vY2hhbm5lbHNgKTtcbiAgICBjb25zdCBjaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uPHN0cmluZywgYW55PigpO1xuICAgIGZvciAoY29uc3QgY2hhbm5lbERhdGEgb2YgZGF0YSkge1xuICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuX2FkZChjaGFubmVsRGF0YSk7XG4gICAgICBjaGFubmVscy5zZXQoY2hhbm5lbC5pZCwgY2hhbm5lbCk7XG4gICAgfVxuICAgIHJldHVybiBjaGFubmVscztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY2hhbm5lbFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKG9wdGlvbnM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZT86IENoYW5uZWxUeXBlO1xuICAgIHRvcGljPzogc3RyaW5nO1xuICAgIGJpdHJhdGU/OiBudW1iZXI7XG4gICAgdXNlckxpbWl0PzogbnVtYmVyO1xuICAgIHJhdGVMaW1pdFBlclVzZXI/OiBudW1iZXI7XG4gICAgcG9zaXRpb24/OiBudW1iZXI7XG4gICAgcGVybWlzc2lvbk92ZXJ3cml0ZXM/OiBhbnlbXTtcbiAgICBwYXJlbnQ/OiBzdHJpbmc7XG4gICAgbnNmdz86IGJvb2xlYW47XG4gICAgcmVhc29uPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBib2R5OiBhbnkgPSB7XG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICB0eXBlOiBvcHRpb25zLnR5cGUgPz8gQ2hhbm5lbFR5cGUuR3VpbGRUZXh0LFxuICAgIH07XG4gICAgaWYgKG9wdGlvbnMudG9waWMpIGJvZHkudG9waWMgPSBvcHRpb25zLnRvcGljO1xuICAgIGlmIChvcHRpb25zLmJpdHJhdGUpIGJvZHkuYml0cmF0ZSA9IG9wdGlvbnMuYml0cmF0ZTtcbiAgICBpZiAob3B0aW9ucy51c2VyTGltaXQpIGJvZHkudXNlcl9saW1pdCA9IG9wdGlvbnMudXNlckxpbWl0O1xuICAgIGlmIChvcHRpb25zLnJhdGVMaW1pdFBlclVzZXIpIGJvZHkucmF0ZV9saW1pdF9wZXJfdXNlciA9IG9wdGlvbnMucmF0ZUxpbWl0UGVyVXNlcjtcbiAgICBpZiAob3B0aW9ucy5wb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSBib2R5LnBvc2l0aW9uID0gb3B0aW9ucy5wb3NpdGlvbjtcbiAgICBpZiAob3B0aW9ucy5wZXJtaXNzaW9uT3ZlcndyaXRlcykgYm9keS5wZXJtaXNzaW9uX292ZXJ3cml0ZXMgPSBvcHRpb25zLnBlcm1pc3Npb25PdmVyd3JpdGVzO1xuICAgIGlmIChvcHRpb25zLnBhcmVudCkgYm9keS5wYXJlbnRfaWQgPSBvcHRpb25zLnBhcmVudDtcbiAgICBpZiAob3B0aW9ucy5uc2Z3ICE9PSB1bmRlZmluZWQpIGJvZHkubnNmdyA9IG9wdGlvbnMubnNmdztcbiAgICBcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdQT1NUJywgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9jaGFubmVsc2AsIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLl9hZGQoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgY2hhbm5lbFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKGlkOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnREVMRVRFJywgYC9jaGFubmVscy8ke2lkfWAsIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWQpO1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0IGEgY2hhbm5lbFxuICAgKi9cbiAgYXN5bmMgZWRpdChpZDogc3RyaW5nLCBkYXRhOiB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0eXBlPzogQ2hhbm5lbFR5cGU7XG4gICAgcG9zaXRpb24/OiBudW1iZXI7XG4gICAgdG9waWM/OiBzdHJpbmc7XG4gICAgbnNmdz86IGJvb2xlYW47XG4gICAgcmF0ZUxpbWl0UGVyVXNlcj86IG51bWJlcjtcbiAgICBiaXRyYXRlPzogbnVtYmVyO1xuICAgIHVzZXJMaW1pdD86IG51bWJlcjtcbiAgICBwZXJtaXNzaW9uT3ZlcndyaXRlcz86IGFueVtdO1xuICAgIHBhcmVudD86IHN0cmluZyB8IG51bGw7XG4gIH0pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGJvZHk6IGFueSA9IHt9O1xuICAgIGlmIChkYXRhLm5hbWUpIGJvZHkubmFtZSA9IGRhdGEubmFtZTtcbiAgICBpZiAoZGF0YS50eXBlICE9PSB1bmRlZmluZWQpIGJvZHkudHlwZSA9IGRhdGEudHlwZTtcbiAgICBpZiAoZGF0YS5wb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSBib2R5LnBvc2l0aW9uID0gZGF0YS5wb3NpdGlvbjtcbiAgICBpZiAoZGF0YS50b3BpYyAhPT0gdW5kZWZpbmVkKSBib2R5LnRvcGljID0gZGF0YS50b3BpYztcbiAgICBpZiAoZGF0YS5uc2Z3ICE9PSB1bmRlZmluZWQpIGJvZHkubnNmdyA9IGRhdGEubnNmdztcbiAgICBpZiAoZGF0YS5yYXRlTGltaXRQZXJVc2VyICE9PSB1bmRlZmluZWQpIGJvZHkucmF0ZV9saW1pdF9wZXJfdXNlciA9IGRhdGEucmF0ZUxpbWl0UGVyVXNlcjtcbiAgICBpZiAoZGF0YS5iaXRyYXRlICE9PSB1bmRlZmluZWQpIGJvZHkuYml0cmF0ZSA9IGRhdGEuYml0cmF0ZTtcbiAgICBpZiAoZGF0YS51c2VyTGltaXQgIT09IHVuZGVmaW5lZCkgYm9keS51c2VyX2xpbWl0ID0gZGF0YS51c2VyTGltaXQ7XG4gICAgaWYgKGRhdGEucGVybWlzc2lvbk92ZXJ3cml0ZXMpIGJvZHkucGVybWlzc2lvbl9vdmVyd3JpdGVzID0gZGF0YS5wZXJtaXNzaW9uT3ZlcndyaXRlcztcbiAgICBpZiAoZGF0YS5wYXJlbnQgIT09IHVuZGVmaW5lZCkgYm9keS5wYXJlbnRfaWQgPSBkYXRhLnBhcmVudDtcbiAgICBcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ1BBVENIJywgYC9jaGFubmVscy8ke2lkfWAsIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLl9hZGQocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2hhbm5lbCBwb3NpdGlvbnNcbiAgICovXG4gIGFzeW5jIHNldFBvc2l0aW9ucyhwb3NpdGlvbnM6IEFycmF5PHsgY2hhbm5lbDogc3RyaW5nOyBwb3NpdGlvbjogbnVtYmVyOyBwYXJlbnQ/OiBzdHJpbmcgfCBudWxsIH0+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYm9keSA9IHBvc2l0aW9ucy5tYXAocCA9PiAoe1xuICAgICAgaWQ6IHAuY2hhbm5lbCxcbiAgICAgIHBvc2l0aW9uOiBwLnBvc2l0aW9uLFxuICAgICAgcGFyZW50X2lkOiBwLnBhcmVudCxcbiAgICB9KSk7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdQQVRDSCcsIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vY2hhbm5lbHNgLCBib2R5KTtcbiAgfVxufVxuXG4vKipcbiAqIEdsb2JhbCBjaGFubmVsIG1hbmFnZXIgZm9yIHRoZSBjbGllbnRcbiAqL1xuZXhwb3J0IGNsYXNzIENoYW5uZWxNYW5hZ2VyIGV4dGVuZHMgQ2FjaGVkTWFuYWdlcjxzdHJpbmcsIGFueT4ge1xuICBjb25zdHJ1Y3RvcihjbGllbnQ6IGFueSwgaXRlcmFibGU/OiBJdGVyYWJsZTxhbnk+KSB7XG4gICAgc3VwZXIoY2xpZW50LCBPYmplY3QgYXMgYW55LCBpdGVyYWJsZSk7XG4gIH1cblxuICBfYWRkKGRhdGE6IGFueSwgY2FjaGUgPSB0cnVlKTogYW55IHtcbiAgICBjb25zdCBpZCA9IGRhdGEuaWQ7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBpZiAoY2FjaGUpIE9iamVjdC5hc3NpZ24oZXhpc3RpbmcsIGRhdGEpO1xuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBjaGFubmVsID0geyAuLi5kYXRhLCBpZCB9O1xuICAgIGlmIChjYWNoZSkgdGhpcy5jYWNoZS5zZXQoaWQsIGNoYW5uZWwpO1xuICAgIHJldHVybiBjaGFubmVsO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2goaWQ6IHN0cmluZywgb3B0aW9ucz86IHsgY2FjaGU/OiBib29sZWFuOyBmb3JjZT86IGJvb2xlYW4gfSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCFvcHRpb25zPy5mb3JjZSkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnR0VUJywgYC9jaGFubmVscy8ke2lkfWApO1xuICAgIHJldHVybiB0aGlzLl9hZGQoZGF0YSwgb3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR3VpbGRDaGFubmVsTWFuYWdlcjtcbiJdfQ==
@@ -1,74 +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
- /**
7
- * Manages guild members
8
- */
9
- export declare class GuildMemberManager extends CachedManager<string, any> {
10
- /** The guild this manager belongs to */
11
- readonly guild: any;
12
- constructor(guild: any, iterable?: Iterable<any>);
13
- /**
14
- * Add a member to the cache
15
- */
16
- _add(data: any, cache?: boolean): any;
17
- /**
18
- * Fetch a member from the API
19
- */
20
- fetch(id: string, options?: {
21
- cache?: boolean;
22
- force?: boolean;
23
- }): Promise<any>;
24
- /**
25
- * Fetch multiple members
26
- */
27
- fetchMany(options?: {
28
- limit?: number;
29
- after?: string;
30
- query?: string;
31
- }): Promise<Collection<string, any>>;
32
- /**
33
- * Search for members by query
34
- */
35
- search(options: {
36
- query: string;
37
- limit?: number;
38
- }): Promise<Collection<string, any>>;
39
- /**
40
- * Kick a member
41
- */
42
- kick(id: string, reason?: string): Promise<void>;
43
- /**
44
- * Ban a member
45
- */
46
- ban(id: string, options?: {
47
- deleteMessageDays?: number;
48
- reason?: string;
49
- }): Promise<void>;
50
- /**
51
- * Unban a user
52
- */
53
- unban(id: string, reason?: string): Promise<void>;
54
- /**
55
- * Edit a member
56
- */
57
- edit(id: string, data: {
58
- nick?: string | null;
59
- roles?: string[];
60
- mute?: boolean;
61
- deaf?: boolean;
62
- channel_id?: string | null;
63
- communication_disabled_until?: Date | null;
64
- }): Promise<any>;
65
- /**
66
- * Add a role to a member
67
- */
68
- addRole(memberId: string, roleId: string, reason?: string): Promise<void>;
69
- /**
70
- * Remove a role from a member
71
- */
72
- removeRole(memberId: string, roleId: string, reason?: string): Promise<void>;
73
- }
74
- export default GuildMemberManager;
@@ -1,157 +0,0 @@
1
- "use strict";
2
- /**
3
- * Manager for guild members with caching and lazy loading
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.GuildMemberManager = void 0;
7
- const BaseManager_1 = require("./BaseManager");
8
- const Collection_1 = require("../utils/Collection");
9
- const GuildMember_1 = require("../structures/GuildMember");
10
- /**
11
- * Manages guild members
12
- */
13
- class GuildMemberManager extends BaseManager_1.CachedManager {
14
- /** The guild this manager belongs to */
15
- guild;
16
- constructor(guild, iterable) {
17
- // Use a simple object as placeholder since we don't have GuildMember class yet
18
- super(guild.client, Object, iterable);
19
- this.guild = guild;
20
- }
21
- /**
22
- * Add a member to the cache
23
- */
24
- _add(data, cache = true) {
25
- const id = data.user?.id ?? data.id;
26
- const existing = this.cache.get(id);
27
- if (existing) {
28
- if (cache) {
29
- Object.assign(existing, data);
30
- }
31
- return existing;
32
- }
33
- const member = {
34
- id,
35
- guildId: this.guild.id,
36
- user: data.user,
37
- nick: data.nick,
38
- roles: data.roles ?? [],
39
- joinedAt: data.joined_at ? new Date(data.joined_at) : null,
40
- premiumSince: data.premium_since ? new Date(data.premium_since) : null,
41
- deaf: data.deaf ?? false,
42
- mute: data.mute ?? false,
43
- pending: data.pending ?? false,
44
- permissions: new GuildMember_1.Permissions(data.permissions || '0', this.guild.ownerId === id),
45
- communicationDisabledUntil: data.communication_disabled_until
46
- ? new Date(data.communication_disabled_until)
47
- : null,
48
- // Helper methods
49
- get displayName() {
50
- return this.nick ?? this.user?.display_name ?? this.user?.username ?? 'Unknown';
51
- },
52
- toString() {
53
- return `<@${this.id}>`;
54
- },
55
- };
56
- if (cache) {
57
- this.cache.set(id, member);
58
- }
59
- return member;
60
- }
61
- /**
62
- * Fetch a member from the API
63
- */
64
- async fetch(id, options) {
65
- if (!options?.force) {
66
- const existing = this.cache.get(id);
67
- if (existing)
68
- return existing;
69
- }
70
- const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/members/${id}`);
71
- return this._add(data, options?.cache ?? true);
72
- }
73
- /**
74
- * Fetch multiple members
75
- */
76
- async fetchMany(options) {
77
- const params = new URLSearchParams();
78
- if (options?.limit)
79
- params.set('limit', String(options.limit));
80
- if (options?.after)
81
- params.set('after', options.after);
82
- if (options?.query)
83
- params.set('query', options.query);
84
- const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/members?${params}`);
85
- const members = new Collection_1.Collection();
86
- for (const memberData of data) {
87
- const member = this._add(memberData);
88
- members.set(member.id, member);
89
- }
90
- return members;
91
- }
92
- /**
93
- * Search for members by query
94
- */
95
- async search(options) {
96
- return this.fetchMany({ query: options.query, limit: options.limit ?? 10 });
97
- }
98
- /**
99
- * Kick a member
100
- */
101
- async kick(id, reason) {
102
- await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/members/${id}`, reason ? { reason } : undefined);
103
- this.cache.delete(id);
104
- }
105
- /**
106
- * Ban a member
107
- */
108
- async ban(id, options) {
109
- await this.client.rest.request('PUT', `/guilds/${this.guild.id}/bans/${id}`, {
110
- delete_message_days: options?.deleteMessageDays,
111
- reason: options?.reason,
112
- });
113
- this.cache.delete(id);
114
- }
115
- /**
116
- * Unban a user
117
- */
118
- async unban(id, reason) {
119
- await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/bans/${id}`, reason ? { reason } : undefined);
120
- }
121
- /**
122
- * Edit a member
123
- */
124
- async edit(id, data) {
125
- const body = {};
126
- if (data.nick !== undefined)
127
- body.nick = data.nick;
128
- if (data.roles !== undefined)
129
- body.roles = data.roles;
130
- if (data.mute !== undefined)
131
- body.mute = data.mute;
132
- if (data.deaf !== undefined)
133
- body.deaf = data.deaf;
134
- if (data.channel_id !== undefined)
135
- body.channel_id = data.channel_id;
136
- if (data.communication_disabled_until !== undefined) {
137
- body.communication_disabled_until = data.communication_disabled_until?.toISOString() ?? null;
138
- }
139
- const result = await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/members/${id}`, body);
140
- return this._add(result);
141
- }
142
- /**
143
- * Add a role to a member
144
- */
145
- async addRole(memberId, roleId, reason) {
146
- await this.client.rest.request('PUT', `/guilds/${this.guild.id}/members/${memberId}/roles/${roleId}`, reason ? { reason } : undefined);
147
- }
148
- /**
149
- * Remove a role from a member
150
- */
151
- async removeRole(memberId, roleId, reason) {
152
- await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/members/${memberId}/roles/${roleId}`, reason ? { reason } : undefined);
153
- }
154
- }
155
- exports.GuildMemberManager = GuildMemberManager;
156
- exports.default = GuildMemberManager;
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpbGRNZW1iZXJNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21hbmFnZXJzL0d1aWxkTWVtYmVyTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILCtDQUE4QztBQUM5QyxvREFBaUQ7QUFDakQsMkRBQXdEO0FBRXhEOztHQUVHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSwyQkFBMEI7SUFDaEUsd0NBQXdDO0lBQ3hCLEtBQUssQ0FBTTtJQUUzQixZQUFZLEtBQVUsRUFBRSxRQUF3QjtRQUM5QywrRUFBK0U7UUFDL0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksQ0FBQyxJQUFTLEVBQUUsS0FBSyxHQUFHLElBQUk7UUFDMUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHO1lBQ2IsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxL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YW5kIGxhenkgbG9hZGluZ1xuICovXG5cbmltcG9ydCB7IENhY2hlZE1hbmFnZXIgfSBmcm9tICcuL0Jhc2VNYW5hZ2VyJztcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuLi91dGlscy9Db2xsZWN0aW9uJztcbmltcG9ydCB7IFBlcm1pc3Npb25zIH0gZnJvbSAnLi4vc3RydWN0dXJlcy9HdWlsZE1lbWJlcic7XG5cbi8qKlxuICogTWFuYWdlcyBndWlsZCBtZW1iZXJzXG4gKi9cbmV4cG9ydCBjbGFzcyBHdWlsZE1lbWJlck1hbmFnZXIgZXh0ZW5kcyBDYWNoZWRNYW5hZ2VyPHN0cmluZywgYW55PiB7XG4gIC8qKiBUaGUgZ3VpbGQgdGhpcyBtYW5hZ2VyIGJlbG9uZ3MgdG8gKi9cbiAgcHVibGljIHJlYWRvbmx5IGd1aWxkOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZ3VpbGQ6IGFueSwgaXRlcmFibGU/OiBJdGVyYWJsZTxhbnk+KSB7XG4gICAgLy8gVXNlIGEgc2ltcGxlIG9iamVjdCBhcyBwbGFjZWhvbGRlciBzaW5jZSB3ZSBkb24ndCBoYXZlIEd1aWxkTWVtYmVyIGNsYXNzIHlldFxuICAgIHN1cGVyKGd1aWxkLmNsaWVudCwgT2JqZWN0IGFzIGFueSwgaXRlcmFibGUpO1xuICAgIHRoaXMuZ3VpbGQgPSBndWlsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBtZW1iZXIgdG8gdGhlIGNhY2hlXG4gICAqL1xuICBfYWRkKGRhdGE6IGFueSwgY2FjaGUgPSB0cnVlKTogYW55IHtcbiAgICBjb25zdCBpZCA9IGRhdGEudXNlcj8uaWQgPz8gZGF0YS5pZDtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2FjaGUuZ2V0KGlkKTtcbiAgICBcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIGlmIChjYWNoZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGV4aXN0aW5nLCBkYXRhKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG4gICAgXG4gICAgY29uc3QgbWVtYmVyID0ge1xuICAgICAgaWQsXG4gICAgICBndWlsZElkOiB0aGlzLmd1aWxkLmlkLFxuICAgICAgdXNlcjogZGF0YS51c2VyLFxuICAgICAgbmljazogZGF0YS5uaWNrLFxuICAgICAgcm9sZXM6IGRhdGEucm9sZXMgPz8gW10sXG4gICAgICBqb2luZWRBdDogZGF0YS5qb2luZWRfYXQgPyBuZXcgRGF0ZShkYXRhLmpvaW5lZF9hdCkgOiBudWxsLFxuICAgICAgcHJlbWl1bVNpbmNlOiBkYXRhLnByZW1pdW1fc2luY2UgPyBuZXcgRGF0ZShkYXRhLnByZW1pdW1fc2luY2UpIDogbnVsbCxcbiAgICAgIGRlYWY6IGRhdGEuZGVhZiA/PyBmYWxzZSxcbiAgICAgIG11dGU6IGRhdGEubXV0ZSA/PyBmYWxzZSxcbiAgICAgIHBlbmRpbmc6IGRhdGEucGVuZGluZyA/PyBmYWxzZSxcbiAgICAgIHBlcm1pc3Npb25zOiBuZXcgUGVybWlzc2lvbnMoZGF0YS5wZXJtaXNzaW9ucyB8fCAnMCcsIHRoaXMuZ3VpbGQub3duZXJJZCA9PT0gaWQpLFxuICAgICAgY29tbXVuaWNhdGlvbkRpc2FibGVkVW50aWw6IGRhdGEuY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbCBcbiAgICAgICAgPyBuZXcgRGF0ZShkYXRhLmNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWwpIFxuICAgICAgICA6IG51bGwsXG4gICAgICBcbiAgICAgIC8vIEhlbHBlciBtZXRob2RzXG4gICAgICBnZXQgZGlzcGxheU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5pY2sgPz8gdGhpcy51c2VyPy5kaXNwbGF5X25hbWUgPz8gdGhpcy51c2VyPy51c2VybmFtZSA/PyAnVW5rbm93bic7XG4gICAgICB9LFxuICAgICAgXG4gICAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGA8QCR7dGhpcy5pZH0+YDtcbiAgICAgIH0sXG4gICAgfTtcbiAgICBcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgIHRoaXMuY2FjaGUuc2V0KGlkLCBtZW1iZXIpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gbWVtYmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGEgbWVtYmVyIGZyb20gdGhlIEFQSVxuICAgKi9cbiAgYXN5bmMgZmV0Y2goaWQ6IHN0cmluZywgb3B0aW9ucz86IHsgY2FjaGU/OiBib29sZWFuOyBmb3JjZT86IGJvb2xlYW4gfSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCFvcHRpb25zPy5mb3JjZSkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdChcbiAgICAgICdHRVQnLFxuICAgICAgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9tZW1iZXJzLyR7aWR9YFxuICAgICk7XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuX2FkZChkYXRhLCBvcHRpb25zPy5jYWNoZSA/PyB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBtdWx0aXBsZSBtZW1iZXJzXG4gICAqL1xuICBhc3luYyBmZXRjaE1hbnkob3B0aW9ucz86IHsgXG4gICAgbGltaXQ/OiBudW1iZXI7IFxuICAgIGFmdGVyPzogc3RyaW5nO1xuICAgIHF1ZXJ5Pzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxDb2xsZWN0aW9uPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucz8ubGltaXQpIHBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKG9wdGlvbnMubGltaXQpKTtcbiAgICBpZiAob3B0aW9ucz8uYWZ0ZXIpIHBhcmFtcy5zZXQoJ2FmdGVyJywgb3B0aW9ucy5hZnRlcik7XG4gICAgaWYgKG9wdGlvbnM/LnF1ZXJ5KSBwYXJhbXMuc2V0KCdxdWVyeScsIG9wdGlvbnMucXVlcnkpO1xuICAgIFxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnR0VUJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycz8ke3BhcmFtc31gXG4gICAgKTtcbiAgICBcbiAgICBjb25zdCBtZW1iZXJzID0gbmV3IENvbGxlY3Rpb248c3RyaW5nLCBhbnk+KCk7XG4gICAgZm9yIChjb25zdCBtZW1iZXJEYXRhIG9mIGRhdGEpIHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IHRoaXMuX2FkZChtZW1iZXJEYXRhKTtcbiAgICAgIG1lbWJlcnMuc2V0KG1lbWJlci5pZCwgbWVtYmVyKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG1lbWJlcnM7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGZvciBtZW1iZXJzIGJ5IHF1ZXJ5XG4gICAqL1xuICBhc3luYyBzZWFyY2gob3B0aW9uczogeyBxdWVyeTogc3RyaW5nOyBsaW1pdD86IG51bWJlciB9KTogUHJvbWlzZTxDb2xsZWN0aW9uPHN0cmluZywgYW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmZldGNoTWFueSh7IHF1ZXJ5OiBvcHRpb25zLnF1ZXJ5LCBsaW1pdDogb3B0aW9ucy5saW1pdCA/PyAxMCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLaWNrIGEgbWVtYmVyXG4gICAqL1xuICBhc3luYyBraWNrKGlkOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdChcbiAgICAgICdERUxFVEUnLFxuICAgICAgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9tZW1iZXJzLyR7aWR9YCxcbiAgICAgIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWRcbiAgICApO1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCYW4gYSBtZW1iZXJcbiAgICovXG4gIGFzeW5jIGJhbihpZDogc3RyaW5nLCBvcHRpb25zPzogeyBkZWxldGVNZXNzYWdlRGF5cz86IG51bWJlcjsgcmVhc29uPzogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnUFVUJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vYmFucy8ke2lkfWAsXG4gICAgICB7XG4gICAgICAgIGRlbGV0ZV9tZXNzYWdlX2RheXM6IG9wdGlvbnM/LmRlbGV0ZU1lc3NhZ2VEYXlzLFxuICAgICAgICByZWFzb246IG9wdGlvbnM/LnJlYXNvbixcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJhbiBhIHVzZXJcbiAgICovXG4gIGFzeW5jIHVuYmFuKGlkOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdChcbiAgICAgICdERUxFVEUnLFxuICAgICAgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9iYW5zLyR7aWR9YCxcbiAgICAgIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVkaXQgYSBtZW1iZXJcbiAgICovXG4gIGFzeW5jIGVkaXQoaWQ6IHN0cmluZywgZGF0YToge1xuICAgIG5pY2s/OiBzdHJpbmcgfCBudWxsO1xuICAgIHJvbGVzPzogc3RyaW5nW107XG4gICAgbXV0ZT86IGJvb2xlYW47XG4gICAgZGVhZj86IGJvb2xlYW47XG4gICAgY2hhbm5lbF9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbD86IERhdGUgfCBudWxsO1xuICB9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBib2R5OiBhbnkgPSB7fTtcbiAgICBpZiAoZGF0YS5uaWNrICE9PSB1bmRlZmluZWQpIGJvZHkubmljayA9IGRhdGEubmljaztcbiAgICBpZiAoZGF0YS5yb2xlcyAhPT0gdW5kZWZpbmVkKSBib2R5LnJvbGVzID0gZGF0YS5yb2xlcztcbiAgICBpZiAoZGF0YS5tdXRlICE9PSB1bmRlZmluZWQpIGJvZHkubXV0ZSA9IGRhdGEubXV0ZTtcbiAgICBpZiAoZGF0YS5kZWFmICE9PSB1bmRlZmluZWQpIGJvZHkuZGVhZiA9IGRhdGEuZGVhZjtcbiAgICBpZiAoZGF0YS5jaGFubmVsX2lkICE9PSB1bmRlZmluZWQpIGJvZHkuY2hhbm5lbF9pZCA9IGRhdGEuY2hhbm5lbF9pZDtcbiAgICBpZiAoZGF0YS5jb21tdW5pY2F0aW9uX2Rpc2FibGVkX3VudGlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkuY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbCA9IGRhdGEuY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbD8udG9JU09TdHJpbmcoKSA/PyBudWxsO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnUEFUQ0gnLFxuICAgICAgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9tZW1iZXJzLyR7aWR9YCxcbiAgICAgIGJvZHlcbiAgICApO1xuICAgIFxuICAgIHJldHVybiB0aGlzLl9hZGQocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSByb2xlIHRvIGEgbWVtYmVyXG4gICAqL1xuICBhc3luYyBhZGRSb2xlKG1lbWJlcklkOiBzdHJpbmcsIHJvbGVJZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnUFVUJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycy8ke21lbWJlcklkfS9yb2xlcy8ke3JvbGVJZH1gLFxuICAgICAgcmVhc29uID8geyByZWFzb24gfSA6IHVuZGVmaW5lZFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgcm9sZSBmcm9tIGEgbWVtYmVyXG4gICAqL1xuICBhc3luYyByZW1vdmVSb2xlKG1lbWJlcklkOiBzdHJpbmcsIHJvbGVJZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnREVMRVRFJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycy8ke21lbWJlcklkfS9yb2xlcy8ke3JvbGVJZH1gLFxuICAgICAgcmVhc29uID8geyByZWFzb24gfSA6IHVuZGVmaW5lZFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR3VpbGRNZW1iZXJNYW5hZ2VyO1xuIl19
@@ -1,84 +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 declare class RoleManager extends CachedManager<string, any> {
10
- /** The guild this manager belongs to */
11
- readonly guild: any;
12
- constructor(guild: any, iterable?: Iterable<any>);
13
- /**
14
- * Get the @everyone role
15
- */
16
- get everyone(): any;
17
- /**
18
- * Get the highest role
19
- */
20
- get highest(): any;
21
- /**
22
- * Get the bot's highest role
23
- */
24
- get botRoleFor(): (userId: string) => any | null;
25
- /**
26
- * Add a role to the cache
27
- */
28
- _add(data: any, cache?: boolean): any;
29
- /**
30
- * Fetch a role from the API
31
- */
32
- fetch(id: string, options?: {
33
- cache?: boolean;
34
- force?: boolean;
35
- }): Promise<any>;
36
- /**
37
- * Fetch all roles for the guild
38
- */
39
- fetchAll(): Promise<Collection<string, any>>;
40
- /**
41
- * Create a new role
42
- */
43
- create(options?: {
44
- name?: string;
45
- color?: number | string;
46
- hoist?: boolean;
47
- position?: number;
48
- permissions?: string | bigint;
49
- mentionable?: boolean;
50
- icon?: string;
51
- unicodeEmoji?: string;
52
- reason?: string;
53
- }): Promise<any>;
54
- /**
55
- * Delete a role
56
- */
57
- delete(id: string, reason?: string): Promise<void>;
58
- /**
59
- * Edit a role
60
- */
61
- edit(id: string, data: {
62
- name?: string;
63
- color?: number | string;
64
- hoist?: boolean;
65
- position?: number;
66
- permissions?: string | bigint;
67
- mentionable?: boolean;
68
- icon?: string | null;
69
- unicodeEmoji?: string | null;
70
- reason?: string;
71
- }): Promise<any>;
72
- /**
73
- * Set role positions
74
- */
75
- setPositions(positions: Array<{
76
- role: string;
77
- position: number;
78
- }>): Promise<Collection<string, any>>;
79
- /**
80
- * Compare two roles by position
81
- */
82
- comparePositions(role1: string | any, role2: string | any): number;
83
- }
84
- export default RoleManager;