@jubbio/core 1.0.0

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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/dist/Client.d.ts +147 -0
  4. package/dist/Client.js +471 -0
  5. package/dist/builders/ActionRowBuilder.d.ts +53 -0
  6. package/dist/builders/ActionRowBuilder.js +68 -0
  7. package/dist/builders/ButtonBuilder.d.ts +77 -0
  8. package/dist/builders/ButtonBuilder.js +96 -0
  9. package/dist/builders/EmbedBuilder.d.ts +157 -0
  10. package/dist/builders/EmbedBuilder.js +199 -0
  11. package/dist/builders/ModalBuilder.d.ts +122 -0
  12. package/dist/builders/ModalBuilder.js +162 -0
  13. package/dist/builders/SelectMenuBuilder.d.ts +123 -0
  14. package/dist/builders/SelectMenuBuilder.js +165 -0
  15. package/dist/builders/SlashCommandBuilder.d.ts +197 -0
  16. package/dist/builders/SlashCommandBuilder.js +324 -0
  17. package/dist/builders/index.d.ts +9 -0
  18. package/dist/builders/index.js +26 -0
  19. package/dist/enums.d.ts +196 -0
  20. package/dist/enums.js +216 -0
  21. package/dist/index.d.ts +25 -0
  22. package/dist/index.js +128 -0
  23. package/dist/managers/BaseManager.d.ts +69 -0
  24. package/dist/managers/BaseManager.js +106 -0
  25. package/dist/managers/ChannelManager.d.ts +98 -0
  26. package/dist/managers/ChannelManager.js +209 -0
  27. package/dist/managers/GuildMemberManager.d.ts +74 -0
  28. package/dist/managers/GuildMemberManager.js +156 -0
  29. package/dist/managers/RoleManager.d.ts +84 -0
  30. package/dist/managers/RoleManager.js +207 -0
  31. package/dist/managers/index.d.ts +7 -0
  32. package/dist/managers/index.js +24 -0
  33. package/dist/rest/REST.d.ts +483 -0
  34. package/dist/rest/REST.js +805 -0
  35. package/dist/rest/index.d.ts +1 -0
  36. package/dist/rest/index.js +18 -0
  37. package/dist/sharding/ShardingManager.d.ts +179 -0
  38. package/dist/sharding/ShardingManager.js +375 -0
  39. package/dist/sharding/index.d.ts +4 -0
  40. package/dist/sharding/index.js +21 -0
  41. package/dist/structures/Channel.d.ts +120 -0
  42. package/dist/structures/Channel.js +224 -0
  43. package/dist/structures/Collection.d.ts +53 -0
  44. package/dist/structures/Collection.js +115 -0
  45. package/dist/structures/Guild.d.ts +59 -0
  46. package/dist/structures/Guild.js +90 -0
  47. package/dist/structures/GuildMember.d.ts +130 -0
  48. package/dist/structures/GuildMember.js +208 -0
  49. package/dist/structures/Interaction.d.ts +224 -0
  50. package/dist/structures/Interaction.js +404 -0
  51. package/dist/structures/Message.d.ts +93 -0
  52. package/dist/structures/Message.js +145 -0
  53. package/dist/structures/User.d.ts +37 -0
  54. package/dist/structures/User.js +65 -0
  55. package/dist/structures/index.d.ts +7 -0
  56. package/dist/structures/index.js +25 -0
  57. package/dist/structures.d.ts +1 -0
  58. package/dist/structures.js +19 -0
  59. package/dist/types.d.ts +255 -0
  60. package/dist/types.js +3 -0
  61. package/dist/utils/BitField.d.ts +66 -0
  62. package/dist/utils/BitField.js +138 -0
  63. package/dist/utils/Collection.d.ts +116 -0
  64. package/dist/utils/Collection.js +265 -0
  65. package/dist/utils/Collector.d.ts +152 -0
  66. package/dist/utils/Collector.js +314 -0
  67. package/dist/utils/DataResolver.d.ts +61 -0
  68. package/dist/utils/DataResolver.js +146 -0
  69. package/dist/utils/Formatters.d.ts +145 -0
  70. package/dist/utils/Formatters.js +213 -0
  71. package/dist/utils/IntentsBitField.d.ts +85 -0
  72. package/dist/utils/IntentsBitField.js +99 -0
  73. package/dist/utils/Partials.d.ts +105 -0
  74. package/dist/utils/Partials.js +149 -0
  75. package/dist/utils/PermissionsBitField.d.ts +118 -0
  76. package/dist/utils/PermissionsBitField.js +145 -0
  77. package/dist/utils/SnowflakeUtil.d.ts +63 -0
  78. package/dist/utils/SnowflakeUtil.js +93 -0
  79. package/dist/utils/Sweepers.d.ts +127 -0
  80. package/dist/utils/Sweepers.js +270 -0
  81. package/dist/utils/index.d.ts +13 -0
  82. package/dist/utils/index.js +30 -0
  83. package/package.json +37 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Base manager class for caching and managing structures
3
+ */
4
+ import { Collection } from '../utils/Collection';
5
+ /**
6
+ * Base manager for caching structures
7
+ */
8
+ export declare abstract class BaseManager<K extends string, V, R = V> {
9
+ /** The client that instantiated this manager */
10
+ readonly client: any;
11
+ /** The cache of items */
12
+ readonly cache: Collection<K, V>;
13
+ /** The class to instantiate for items */
14
+ protected readonly holds: new (...args: any[]) => V;
15
+ constructor(client: any, holds: new (...args: any[]) => V, iterable?: Iterable<R>);
16
+ /**
17
+ * Add an item to the cache
18
+ */
19
+ abstract _add(data: any, cache?: boolean, options?: {
20
+ id?: K;
21
+ extras?: any[];
22
+ }): V;
23
+ /**
24
+ * Resolve an item from the cache or ID
25
+ */
26
+ resolve(idOrInstance: K | V): V | null;
27
+ /**
28
+ * Resolve an ID from an item or ID
29
+ */
30
+ resolveId(idOrInstance: K | V | {
31
+ id: K;
32
+ }): K | null;
33
+ /**
34
+ * Get the cache as a JSON array
35
+ */
36
+ valueOf(): V[];
37
+ }
38
+ /**
39
+ * Caching manager that fetches data from the API
40
+ */
41
+ export declare abstract class CachedManager<K extends string, V, R = V> extends BaseManager<K, V, R> {
42
+ /**
43
+ * Fetch an item from the API
44
+ */
45
+ abstract fetch(id: K, options?: {
46
+ cache?: boolean;
47
+ force?: boolean;
48
+ }): Promise<V>;
49
+ /**
50
+ * Fetch an item, using cache if available (async version)
51
+ */
52
+ resolveAsync(idOrInstance: K | V, options?: {
53
+ cache?: boolean;
54
+ force?: boolean;
55
+ }): Promise<V | null>;
56
+ }
57
+ /**
58
+ * Data manager that doesn't cache
59
+ */
60
+ export declare abstract class DataManager<K extends string, V, R = V> extends BaseManager<K, V, R> {
61
+ /**
62
+ * Add an item to the cache
63
+ */
64
+ _add(data: any, cache?: boolean, options?: {
65
+ id?: K;
66
+ extras?: any[];
67
+ }): V;
68
+ }
69
+ export default BaseManager;
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Base manager class for caching and managing structures
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DataManager = exports.CachedManager = exports.BaseManager = void 0;
7
+ const Collection_1 = require("../utils/Collection");
8
+ /**
9
+ * Base manager for caching structures
10
+ */
11
+ class BaseManager {
12
+ /** The client that instantiated this manager */
13
+ client;
14
+ /** The cache of items */
15
+ cache;
16
+ /** The class to instantiate for items */
17
+ holds;
18
+ constructor(client, holds, iterable) {
19
+ this.client = client;
20
+ this.holds = holds;
21
+ this.cache = new Collection_1.Collection();
22
+ if (iterable) {
23
+ for (const item of iterable) {
24
+ this._add(item);
25
+ }
26
+ }
27
+ }
28
+ /**
29
+ * Resolve an item from the cache or ID
30
+ */
31
+ resolve(idOrInstance) {
32
+ if (idOrInstance instanceof this.holds)
33
+ return idOrInstance;
34
+ if (typeof idOrInstance === 'string')
35
+ return this.cache.get(idOrInstance) ?? null;
36
+ return null;
37
+ }
38
+ /**
39
+ * Resolve an ID from an item or ID
40
+ */
41
+ resolveId(idOrInstance) {
42
+ if (idOrInstance instanceof this.holds)
43
+ return idOrInstance.id;
44
+ if (typeof idOrInstance === 'string')
45
+ return idOrInstance;
46
+ if (typeof idOrInstance === 'object' && idOrInstance !== null && 'id' in idOrInstance) {
47
+ return idOrInstance.id;
48
+ }
49
+ return null;
50
+ }
51
+ /**
52
+ * Get the cache as a JSON array
53
+ */
54
+ valueOf() {
55
+ return [...this.cache.values()];
56
+ }
57
+ }
58
+ exports.BaseManager = BaseManager;
59
+ /**
60
+ * Caching manager that fetches data from the API
61
+ */
62
+ class CachedManager extends BaseManager {
63
+ /**
64
+ * Fetch an item, using cache if available (async version)
65
+ */
66
+ async resolveAsync(idOrInstance, options) {
67
+ const existing = super.resolve(idOrInstance);
68
+ if (existing && !options?.force)
69
+ return existing;
70
+ const id = this.resolveId(idOrInstance);
71
+ if (!id)
72
+ return null;
73
+ try {
74
+ return await this.fetch(id, options);
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
80
+ }
81
+ exports.CachedManager = CachedManager;
82
+ /**
83
+ * Data manager that doesn't cache
84
+ */
85
+ class DataManager extends BaseManager {
86
+ /**
87
+ * Add an item to the cache
88
+ */
89
+ _add(data, cache = true, options) {
90
+ const existing = this.cache.get(options?.id ?? data.id);
91
+ if (existing) {
92
+ if (cache) {
93
+ existing._patch?.(data);
94
+ }
95
+ return existing;
96
+ }
97
+ const entry = new this.holds(this.client, data, ...(options?.extras ?? []));
98
+ if (cache) {
99
+ this.cache.set(options?.id ?? data.id, entry);
100
+ }
101
+ return entry;
102
+ }
103
+ }
104
+ exports.DataManager = DataManager;
105
+ exports.default = BaseManager;
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlcnMvQmFzZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxvREFBaUQ7QUFFakQ7O0dBRUc7QUFDSCxNQUFzQixXQUFXO0lBQy9CLGdEQUFnRDtJQUNoQyxNQUFNLENBQU07SUFFNUIseUJBQXlCO0lBQ1QsS0FBSyxDQUFtQjtJQUV4Qyx5Q0FBeUM7SUFDdEIsS0FBSyxDQUE0QjtJQUVwRCxZQUFZLE1BQVcsRUFBRSxLQUFnQyxFQUFFLFFBQXNCO1FBQy9FLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx1QkFBVSxFQUFRLENBQUM7UUFFcEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBVyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBT0Q7O09BRUc7SUFDSCxPQUFPLENBQUMsWUFBbUI7UUFDekIsSUFBSSxZQUFZLFlBQVksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLFlBQVksQ0FBQztRQUM1RCxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQWlCLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsWUFBK0I7UUFDdkMsSUFBSSxZQUFZLFlBQVksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFRLFlBQW9CLENBQUMsRUFBRSxDQUFDO1FBQ3hFLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUTtZQUFFLE9BQU8sWUFBaUIsQ0FBQztRQUMvRCxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxZQUFZLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN0RixPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUF0REQsa0NBc0RDO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixhQUEwQyxTQUFRLFdBQW9CO0lBTTFGOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFtQixFQUFFLE9BQThDO1FBQ3BGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsSUFBSSxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBRWpELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVyQixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXRCRCxzQ0FzQkM7QUFFRDs7R0FFRztBQUNILE1BQXNCLFdBQXdDLFNBQVEsV0FBb0I7SUFDeEY7O09BRUc7SUFDSCxJQUFJLENBQUMsSUFBUyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsT0FBb0M7UUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1QsUUFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBbkJELGtDQW1CQztBQUVELGtCQUFlLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBCYXNlIG1hbmFnZXIgY2xhc3MgZm9yIGNhY2hpbmcgYW5kIG1hbmFnaW5nIHN0cnVjdHVyZXNcclxuICovXHJcblxyXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvQ29sbGVjdGlvbic7XHJcblxyXG4vKipcclxuICogQmFzZSBtYW5hZ2VyIGZvciBjYWNoaW5nIHN0cnVjdHVyZXNcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTWFuYWdlcjxLIGV4dGVuZHMgc3RyaW5nLCBWLCBSID0gVj4ge1xyXG4gIC8qKiBUaGUgY2xpZW50IHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgbWFuYWdlciAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnQ6IGFueTtcclxuICBcclxuICAvKiogVGhlIGNhY2hlIG9mIGl0ZW1zICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhY2hlOiBDb2xsZWN0aW9uPEssIFY+O1xyXG4gIFxyXG4gIC8qKiBUaGUgY2xhc3MgdG8gaW5zdGFudGlhdGUgZm9yIGl0ZW1zICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhvbGRzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBWO1xyXG5cclxuICBjb25zdHJ1Y3RvcihjbGllbnQ6IGFueSwgaG9sZHM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFYsIGl0ZXJhYmxlPzogSXRlcmFibGU8Uj4pIHtcclxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xyXG4gICAgdGhpcy5ob2xkcyA9IGhvbGRzO1xyXG4gICAgdGhpcy5jYWNoZSA9IG5ldyBDb2xsZWN0aW9uPEssIFY+KCk7XHJcbiAgICBcclxuICAgIGlmIChpdGVyYWJsZSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlcmFibGUpIHtcclxuICAgICAgICB0aGlzLl9hZGQoaXRlbSBhcyBhbnkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYW4gaXRlbSB0byB0aGUgY2FjaGVcclxuICAgKi9cclxuICBhYnN0cmFjdCBfYWRkKGRhdGE6IGFueSwgY2FjaGU/OiBib29sZWFuLCBvcHRpb25zPzogeyBpZD86IEs7IGV4dHJhcz86IGFueVtdIH0pOiBWO1xyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlIGFuIGl0ZW0gZnJvbSB0aGUgY2FjaGUgb3IgSURcclxuICAgKi9cclxuICByZXNvbHZlKGlkT3JJbnN0YW5jZTogSyB8IFYpOiBWIHwgbnVsbCB7XHJcbiAgICBpZiAoaWRPckluc3RhbmNlIGluc3RhbmNlb2YgdGhpcy5ob2xkcykgcmV0dXJuIGlkT3JJbnN0YW5jZTtcclxuICAgIGlmICh0eXBlb2YgaWRPckluc3RhbmNlID09PSAnc3RyaW5nJykgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0KGlkT3JJbnN0YW5jZSBhcyBLKSA/PyBudWxsO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlIGFuIElEIGZyb20gYW4gaXRlbSBvciBJRFxyXG4gICAqL1xyXG4gIHJlc29sdmVJZChpZE9ySW5zdGFuY2U6IEsgfCBWIHwgeyBpZDogSyB9KTogSyB8IG51bGwge1xyXG4gICAgaWYgKGlkT3JJbnN0YW5jZSBpbnN0YW5jZW9mIHRoaXMuaG9sZHMpIHJldHVybiAoaWRPckluc3RhbmNlIGFzIGFueSkuaWQ7XHJcbiAgICBpZiAodHlwZW9mIGlkT3JJbnN0YW5jZSA9PT0gJ3N0cmluZycpIHJldHVybiBpZE9ySW5zdGFuY2UgYXMgSztcclxuICAgIGlmICh0eXBlb2YgaWRPckluc3RhbmNlID09PSAnb2JqZWN0JyAmJiBpZE9ySW5zdGFuY2UgIT09IG51bGwgJiYgJ2lkJyBpbiBpZE9ySW5zdGFuY2UpIHtcclxuICAgICAgcmV0dXJuIGlkT3JJbnN0YW5jZS5pZDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjYWNoZSBhcyBhIEpTT04gYXJyYXlcclxuICAgKi9cclxuICB2YWx1ZU9mKCk6IFZbXSB7XHJcbiAgICByZXR1cm4gWy4uLnRoaXMuY2FjaGUudmFsdWVzKCldO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENhY2hpbmcgbWFuYWdlciB0aGF0IGZldGNoZXMgZGF0YSBmcm9tIHRoZSBBUElcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDYWNoZWRNYW5hZ2VyPEsgZXh0ZW5kcyBzdHJpbmcsIFYsIFIgPSBWPiBleHRlbmRzIEJhc2VNYW5hZ2VyPEssIFYsIFI+IHtcclxuICAvKipcclxuICAgKiBGZXRjaCBhbiBpdGVtIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IGZldGNoKGlkOiBLLCBvcHRpb25zPzogeyBjYWNoZT86IGJvb2xlYW47IGZvcmNlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxWPjtcclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2ggYW4gaXRlbSwgdXNpbmcgY2FjaGUgaWYgYXZhaWxhYmxlIChhc3luYyB2ZXJzaW9uKVxyXG4gICAqL1xyXG4gIGFzeW5jIHJlc29sdmVBc3luYyhpZE9ySW5zdGFuY2U6IEsgfCBWLCBvcHRpb25zPzogeyBjYWNoZT86IGJvb2xlYW47IGZvcmNlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxWIHwgbnVsbD4ge1xyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBzdXBlci5yZXNvbHZlKGlkT3JJbnN0YW5jZSk7XHJcbiAgICBpZiAoZXhpc3RpbmcgJiYgIW9wdGlvbnM/LmZvcmNlKSByZXR1cm4gZXhpc3Rpbmc7XHJcbiAgICBcclxuICAgIGNvbnN0IGlkID0gdGhpcy5yZXNvbHZlSWQoaWRPckluc3RhbmNlKTtcclxuICAgIGlmICghaWQpIHJldHVybiBudWxsO1xyXG4gICAgXHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaChpZCwgb3B0aW9ucyk7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRGF0YSBtYW5hZ2VyIHRoYXQgZG9lc24ndCBjYWNoZVxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGFNYW5hZ2VyPEsgZXh0ZW5kcyBzdHJpbmcsIFYsIFIgPSBWPiBleHRlbmRzIEJhc2VNYW5hZ2VyPEssIFYsIFI+IHtcclxuICAvKipcclxuICAgKiBBZGQgYW4gaXRlbSB0byB0aGUgY2FjaGVcclxuICAgKi9cclxuICBfYWRkKGRhdGE6IGFueSwgY2FjaGUgPSB0cnVlLCBvcHRpb25zPzogeyBpZD86IEs7IGV4dHJhcz86IGFueVtdIH0pOiBWIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jYWNoZS5nZXQob3B0aW9ucz8uaWQgPz8gZGF0YS5pZCk7XHJcbiAgICBpZiAoZXhpc3RpbmcpIHtcclxuICAgICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgKGV4aXN0aW5nIGFzIGFueSkuX3BhdGNoPy4oZGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBlbnRyeSA9IG5ldyB0aGlzLmhvbGRzKHRoaXMuY2xpZW50LCBkYXRhLCAuLi4ob3B0aW9ucz8uZXh0cmFzID8/IFtdKSk7XHJcbiAgICBpZiAoY2FjaGUpIHtcclxuICAgICAgdGhpcy5jYWNoZS5zZXQob3B0aW9ucz8uaWQgPz8gZGF0YS5pZCwgZW50cnkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVudHJ5O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFzZU1hbmFnZXI7XHJcbiJdfQ==
@@ -0,0 +1,98 @@
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
+ AnnouncementThread = 10,
15
+ PublicThread = 11,
16
+ PrivateThread = 12,
17
+ GuildStageVoice = 13,
18
+ GuildDirectory = 14,
19
+ GuildForum = 15
20
+ }
21
+ /**
22
+ * Manages channels for a guild
23
+ */
24
+ export declare class GuildChannelManager extends CachedManager<string, any> {
25
+ /** The guild this manager belongs to */
26
+ readonly guild: any;
27
+ constructor(guild: any, iterable?: Iterable<any>);
28
+ /**
29
+ * Add a channel to the cache
30
+ */
31
+ _add(data: any, cache?: boolean): any;
32
+ /**
33
+ * Fetch a channel from the API
34
+ */
35
+ fetch(id: string, options?: {
36
+ cache?: boolean;
37
+ force?: boolean;
38
+ }): Promise<any>;
39
+ /**
40
+ * Fetch all channels for the guild
41
+ */
42
+ fetchAll(): Promise<Collection<string, any>>;
43
+ /**
44
+ * Create a new channel
45
+ */
46
+ create(options: {
47
+ name: string;
48
+ type?: ChannelType;
49
+ topic?: string;
50
+ bitrate?: number;
51
+ userLimit?: number;
52
+ rateLimitPerUser?: number;
53
+ position?: number;
54
+ permissionOverwrites?: any[];
55
+ parent?: string;
56
+ nsfw?: boolean;
57
+ reason?: string;
58
+ }): Promise<any>;
59
+ /**
60
+ * Delete a channel
61
+ */
62
+ delete(id: string, reason?: string): Promise<void>;
63
+ /**
64
+ * Edit a channel
65
+ */
66
+ edit(id: string, data: {
67
+ name?: string;
68
+ type?: ChannelType;
69
+ position?: number;
70
+ topic?: string;
71
+ nsfw?: boolean;
72
+ rateLimitPerUser?: number;
73
+ bitrate?: number;
74
+ userLimit?: number;
75
+ permissionOverwrites?: any[];
76
+ parent?: string | null;
77
+ }): Promise<any>;
78
+ /**
79
+ * Set channel positions
80
+ */
81
+ setPositions(positions: Array<{
82
+ channel: string;
83
+ position: number;
84
+ parent?: string | null;
85
+ }>): Promise<void>;
86
+ }
87
+ /**
88
+ * Global channel manager for the client
89
+ */
90
+ export declare class ChannelManager extends CachedManager<string, any> {
91
+ constructor(client: any, iterable?: Iterable<any>);
92
+ _add(data: any, cache?: boolean): any;
93
+ fetch(id: string, options?: {
94
+ cache?: boolean;
95
+ force?: boolean;
96
+ }): Promise<any>;
97
+ }
98
+ export default GuildChannelManager;
@@ -0,0 +1,209 @@
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["AnnouncementThread"] = 10] = "AnnouncementThread";
19
+ ChannelType[ChannelType["PublicThread"] = 11] = "PublicThread";
20
+ ChannelType[ChannelType["PrivateThread"] = 12] = "PrivateThread";
21
+ ChannelType[ChannelType["GuildStageVoice"] = 13] = "GuildStageVoice";
22
+ ChannelType[ChannelType["GuildDirectory"] = 14] = "GuildDirectory";
23
+ ChannelType[ChannelType["GuildForum"] = 15] = "GuildForum";
24
+ })(ChannelType || (exports.ChannelType = ChannelType = {}));
25
+ /**
26
+ * Manages channels for a guild
27
+ */
28
+ class GuildChannelManager extends BaseManager_1.CachedManager {
29
+ /** The guild this manager belongs to */
30
+ guild;
31
+ constructor(guild, iterable) {
32
+ super(guild.client, Object, iterable);
33
+ this.guild = guild;
34
+ }
35
+ /**
36
+ * Add a channel to the cache
37
+ */
38
+ _add(data, cache = true) {
39
+ const id = data.id;
40
+ const existing = this.cache.get(id);
41
+ if (existing) {
42
+ if (cache)
43
+ Object.assign(existing, data);
44
+ return existing;
45
+ }
46
+ const channel = {
47
+ id,
48
+ guildId: this.guild.id,
49
+ name: data.name,
50
+ type: data.type,
51
+ position: data.position ?? 0,
52
+ parentId: data.parent_id ?? null,
53
+ permissionOverwrites: data.permission_overwrites ?? [],
54
+ topic: data.topic ?? null,
55
+ nsfw: data.nsfw ?? false,
56
+ rateLimitPerUser: data.rate_limit_per_user ?? 0,
57
+ bitrate: data.bitrate,
58
+ userLimit: data.user_limit,
59
+ get isText() { return [ChannelType.GuildText, ChannelType.GuildAnnouncement].includes(this.type); },
60
+ get isVoice() { return [ChannelType.GuildVoice, ChannelType.GuildStageVoice].includes(this.type); },
61
+ get isCategory() { return this.type === ChannelType.GuildCategory; },
62
+ get isThread() { return [ChannelType.PublicThread, ChannelType.PrivateThread, ChannelType.AnnouncementThread].includes(this.type); },
63
+ toString() { return `<#${this.id}>`; },
64
+ async send(content) {
65
+ return this.guild.client.rest.request('POST', `/channels/${this.id}/messages`, typeof content === 'string' ? { content } : content);
66
+ },
67
+ async delete(reason) {
68
+ return this.guild.client.rest.request('DELETE', `/channels/${this.id}`, reason ? { reason } : undefined);
69
+ },
70
+ async edit(data) {
71
+ return this.guild.client.rest.request('PATCH', `/channels/${this.id}`, data);
72
+ },
73
+ };
74
+ if (cache)
75
+ this.cache.set(id, channel);
76
+ return channel;
77
+ }
78
+ /**
79
+ * Fetch a channel from the API
80
+ */
81
+ async fetch(id, options) {
82
+ if (!options?.force) {
83
+ const existing = this.cache.get(id);
84
+ if (existing)
85
+ return existing;
86
+ }
87
+ const data = await this.client.rest.request('GET', `/channels/${id}`);
88
+ return this._add(data, options?.cache ?? true);
89
+ }
90
+ /**
91
+ * Fetch all channels for the guild
92
+ */
93
+ async fetchAll() {
94
+ const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/channels`);
95
+ const channels = new Collection_1.Collection();
96
+ for (const channelData of data) {
97
+ const channel = this._add(channelData);
98
+ channels.set(channel.id, channel);
99
+ }
100
+ return channels;
101
+ }
102
+ /**
103
+ * Create a new channel
104
+ */
105
+ async create(options) {
106
+ const body = {
107
+ name: options.name,
108
+ type: options.type ?? ChannelType.GuildText,
109
+ };
110
+ if (options.topic)
111
+ body.topic = options.topic;
112
+ if (options.bitrate)
113
+ body.bitrate = options.bitrate;
114
+ if (options.userLimit)
115
+ body.user_limit = options.userLimit;
116
+ if (options.rateLimitPerUser)
117
+ body.rate_limit_per_user = options.rateLimitPerUser;
118
+ if (options.position !== undefined)
119
+ body.position = options.position;
120
+ if (options.permissionOverwrites)
121
+ body.permission_overwrites = options.permissionOverwrites;
122
+ if (options.parent)
123
+ body.parent_id = options.parent;
124
+ if (options.nsfw !== undefined)
125
+ body.nsfw = options.nsfw;
126
+ const data = await this.client.rest.request('POST', `/guilds/${this.guild.id}/channels`, body);
127
+ return this._add(data);
128
+ }
129
+ /**
130
+ * Delete a channel
131
+ */
132
+ async delete(id, reason) {
133
+ await this.client.rest.request('DELETE', `/channels/${id}`, reason ? { reason } : undefined);
134
+ this.cache.delete(id);
135
+ }
136
+ /**
137
+ * Edit a channel
138
+ */
139
+ async edit(id, data) {
140
+ const body = {};
141
+ if (data.name)
142
+ body.name = data.name;
143
+ if (data.type !== undefined)
144
+ body.type = data.type;
145
+ if (data.position !== undefined)
146
+ body.position = data.position;
147
+ if (data.topic !== undefined)
148
+ body.topic = data.topic;
149
+ if (data.nsfw !== undefined)
150
+ body.nsfw = data.nsfw;
151
+ if (data.rateLimitPerUser !== undefined)
152
+ body.rate_limit_per_user = data.rateLimitPerUser;
153
+ if (data.bitrate !== undefined)
154
+ body.bitrate = data.bitrate;
155
+ if (data.userLimit !== undefined)
156
+ body.user_limit = data.userLimit;
157
+ if (data.permissionOverwrites)
158
+ body.permission_overwrites = data.permissionOverwrites;
159
+ if (data.parent !== undefined)
160
+ body.parent_id = data.parent;
161
+ const result = await this.client.rest.request('PATCH', `/channels/${id}`, body);
162
+ return this._add(result);
163
+ }
164
+ /**
165
+ * Set channel positions
166
+ */
167
+ async setPositions(positions) {
168
+ const body = positions.map(p => ({
169
+ id: p.channel,
170
+ position: p.position,
171
+ parent_id: p.parent,
172
+ }));
173
+ await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/channels`, body);
174
+ }
175
+ }
176
+ exports.GuildChannelManager = GuildChannelManager;
177
+ /**
178
+ * Global channel manager for the client
179
+ */
180
+ class ChannelManager extends BaseManager_1.CachedManager {
181
+ constructor(client, iterable) {
182
+ super(client, Object, iterable);
183
+ }
184
+ _add(data, cache = true) {
185
+ const id = data.id;
186
+ const existing = this.cache.get(id);
187
+ if (existing) {
188
+ if (cache)
189
+ Object.assign(existing, data);
190
+ return existing;
191
+ }
192
+ const channel = { ...data, id };
193
+ if (cache)
194
+ this.cache.set(id, channel);
195
+ return channel;
196
+ }
197
+ async fetch(id, options) {
198
+ if (!options?.force) {
199
+ const existing = this.cache.get(id);
200
+ if (existing)
201
+ return existing;
202
+ }
203
+ const data = await this.client.rest.request('GET', `/channels/${id}`);
204
+ return this._add(data, options?.cache ?? true);
205
+ }
206
+ }
207
+ exports.ChannelManager = ChannelManager;
208
+ exports.default = GuildChannelManager;
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbm5lbE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlcnMvQ2hhbm5lbE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCwrQ0FBOEM7QUFDOUMsb0RBQWlEO0FBRWpELG9CQUFvQjtBQUNwQixJQUFZLFdBYVg7QUFiRCxXQUFZLFdBQVc7SUFDckIsdURBQWEsQ0FBQTtJQUNiLHlDQUFNLENBQUE7SUFDTix5REFBYyxDQUFBO0lBQ2QsbURBQVcsQ0FBQTtJQUNYLCtEQUFpQixDQUFBO0lBQ2pCLHVFQUFxQixDQUFBO0lBQ3JCLDBFQUF1QixDQUFBO0lBQ3ZCLDhEQUFpQixDQUFBO0lBQ2pCLGdFQUFrQixDQUFBO0lBQ2xCLG9FQUFvQixDQUFBO0lBQ3BCLGtFQUFtQixDQUFBO0lBQ25CLDBEQUFlLENBQUE7QUFDakIsQ0FBQyxFQWJXLFdBQVcsMkJBQVgsV0FBVyxRQWF0QjtBQUVEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSwyQkFBMEI7SUFDakUsd0NBQXdDO0lBQ3hCLEtBQUssQ0FBTTtJQUUzQixZQUFZLEtBQVUsRUFBRSxRQUF3QjtRQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSTtRQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLEtBQUs7Z0JBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFB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UUFDcEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksS0FBSztnQkFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6QyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLE9BQThDO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEMsSUFBSSxRQUFRO2dCQUFFLE9BQU8sUUFBUSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUExQkQsd0NBMEJDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogTWFuYWdlciBmb3IgY2hhbm5lbHMgd2l0aCBjYWNoaW5nIGFuZCBsYXp5IGxvYWRpbmdcclxuICovXHJcblxyXG5pbXBvcnQgeyBDYWNoZWRNYW5hZ2VyIH0gZnJvbSAnLi9CYXNlTWFuYWdlcic7XHJcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuLi91dGlscy9Db2xsZWN0aW9uJztcclxuXHJcbi8qKiBDaGFubmVsIHR5cGVzICovXHJcbmV4cG9ydCBlbnVtIENoYW5uZWxUeXBlIHtcclxuICBHdWlsZFRleHQgPSAwLFxyXG4gIERNID0gMSxcclxuICBHdWlsZFZvaWNlID0gMixcclxuICBHcm91cERNID0gMyxcclxuICBHdWlsZENhdGVnb3J5ID0gNCxcclxuICBHdWlsZEFubm91bmNlbWVudCA9IDUsXHJcbiAgQW5ub3VuY2VtZW50VGhyZWFkID0gMTAsXHJcbiAgUHVibGljVGhyZWFkID0gMTEsXHJcbiAgUHJpdmF0ZVRocmVhZCA9IDEyLFxyXG4gIEd1aWxkU3RhZ2VWb2ljZSA9IDEzLFxyXG4gIEd1aWxkRGlyZWN0b3J5ID0gMTQsXHJcbiAgR3VpbGRGb3J1bSA9IDE1LFxyXG59XHJcblxyXG4vKipcclxuICogTWFuYWdlcyBjaGFubmVscyBmb3IgYSBndWlsZFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEd1aWxkQ2hhbm5lbE1hbmFnZXIgZXh0ZW5kcyBDYWNoZWRNYW5hZ2VyPHN0cmluZywgYW55PiB7XHJcbiAgLyoqIFRoZSBndWlsZCB0aGlzIG1hbmFnZXIgYmVsb25ncyB0byAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBndWlsZDogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihndWlsZDogYW55LCBpdGVyYWJsZT86IEl0ZXJhYmxlPGFueT4pIHtcclxuICAgIHN1cGVyKGd1aWxkLmNsaWVudCwgT2JqZWN0IGFzIGFueSwgaXRlcmFibGUpO1xyXG4gICAgdGhpcy5ndWlsZCA9IGd1aWxkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgY2hhbm5lbCB0byB0aGUgY2FjaGVcclxuICAgKi9cclxuICBfYWRkKGRhdGE6IGFueSwgY2FjaGUgPSB0cnVlKTogYW55IHtcclxuICAgIGNvbnN0IGlkID0gZGF0YS5pZDtcclxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jYWNoZS5nZXQoaWQpO1xyXG4gICAgXHJcbiAgICBpZiAoZXhpc3RpbmcpIHtcclxuICAgICAgaWYgKGNhY2hlKSBPYmplY3QuYXNzaWduKGV4aXN0aW5nLCBkYXRhKTtcclxuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBjaGFubmVsID0ge1xyXG4gICAgICBpZCxcclxuICAgICAgZ3VpbGRJZDogdGhpcy5ndWlsZC5pZCxcclxuICAgICAgbmFtZTogZGF0YS5uYW1lLFxyXG4gICAgICB0eXBlOiBkYXRhLnR5cGUsXHJcbiAgICAgIHBvc2l0aW9uOiBkYXRhLnBvc2l0aW9uID8/IDAsXHJcbiAgICAgIHBhcmVudElkOiBkYXRhLnBhcmVudF9pZCA/PyBudWxsLFxyXG4gICAgICBwZXJtaXNzaW9uT3ZlcndyaXRlczogZGF0YS5wZXJtaXNzaW9uX292ZXJ3cml0ZXMgPz8gW10sXHJcbiAgICAgIHRvcGljOiBkYXRhLnRvcGljID8/IG51bGwsXHJcbiAgICAgIG5zZnc6IGRhdGEubnNmdyA/PyBmYWxzZSxcclxuICAgICAgcmF0ZUxpbWl0UGVyVXNlcjogZGF0YS5yYXRlX2xpbWl0X3Blcl91c2VyID8/IDAsXHJcbiAgICAgIGJpdHJhdGU6IGRhdGEuYml0cmF0ZSxcclxuICAgICAgdXNlckxpbWl0OiBkYXRhLnVzZXJfbGltaXQsXHJcbiAgICAgIFxyXG4gICAgICBnZXQgaXNUZXh0KCkgeyByZXR1cm4gW0NoYW5uZWxUeXBlLkd1aWxkVGV4dCwgQ2hhbm5lbFR5cGUuR3VpbGRBbm5vdW5jZW1lbnRdLmluY2x1ZGVzKHRoaXMudHlwZSk7IH0sXHJcbiAgICAgIGdldCBpc1ZvaWNlKCkgeyByZXR1cm4gW0NoYW5uZWxUeXBlLkd1aWxkVm9pY2UsIENoYW5uZWxUeXBlLkd1aWxkU3RhZ2VWb2ljZV0uaW5jbHVkZXModGhpcy50eXBlKTsgfSxcclxuICAgICAgZ2V0IGlzQ2F0ZWdvcnkoKSB7IHJldHVybiB0aGlzLnR5cGUgPT09IENoYW5uZWxUeXBlLkd1aWxkQ2F0ZWdvcnk7IH0sXHJcbiAgICAgIGdldCBpc1RocmVhZCgpIHsgcmV0dXJuIFtDaGFubmVsVHlwZS5QdWJsaWNUaHJlYWQsIENoYW5uZWxUeXBlLlByaXZhdGVUaHJlYWQsIENoYW5uZWxUeXBlLkFubm91bmNlbWVudFRocmVhZF0uaW5jbHVkZXModGhpcy50eXBlKTsgfSxcclxuICAgICAgXHJcbiAgICAgIHRvU3RyaW5nKCkgeyByZXR1cm4gYDwjJHt0aGlzLmlkfT5gOyB9LFxyXG4gICAgICBcclxuICAgICAgYXN5bmMgc2VuZChjb250ZW50OiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ndWlsZC5jbGllbnQucmVzdC5yZXF1ZXN0KCdQT1NUJywgYC9jaGFubmVscy8ke3RoaXMuaWR9L21lc3NhZ2VzYCwgXHJcbiAgICAgICAgICB0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgPyB7IGNvbnRlbnQgfSA6IGNvbnRlbnRcclxuICAgICAgICApO1xyXG4gICAgICB9LFxyXG4gICAgICBcclxuICAgICAgYXN5bmMgZGVsZXRlKHJlYXNvbj86IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmd1aWxkLmNsaWVudC5yZXN0LnJlcXVlc3QoJ0RFTEVURScsIGAvY2hhbm5lbHMvJHt0aGlzLmlkfWAsIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWQpO1xyXG4gICAgICB9LFxyXG4gICAgICBcclxuICAgICAgYXN5bmMgZWRpdChkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ndWlsZC5jbGllbnQucmVzdC5yZXF1ZXN0KCdQQVRDSCcsIGAvY2hhbm5lbHMvJHt0aGlzLmlkfWAsIGRhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgaWYgKGNhY2hlKSB0aGlzLmNhY2hlLnNldChpZCwgY2hhbm5lbCk7XHJcbiAgICByZXR1cm4gY2hhbm5lbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoIGEgY2hhbm5lbCBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBhc3luYyBmZXRjaChpZDogc3RyaW5nLCBvcHRpb25zPzogeyBjYWNoZT86IGJvb2xlYW47IGZvcmNlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICghb3B0aW9ucz8uZm9yY2UpIHtcclxuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XHJcbiAgICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdHRVQnLCBgL2NoYW5uZWxzLyR7aWR9YCk7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkKGRhdGEsIG9wdGlvbnM/LmNhY2hlID8/IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2ggYWxsIGNoYW5uZWxzIGZvciB0aGUgZ3VpbGRcclxuICAgKi9cclxuICBhc3luYyBmZXRjaEFsbCgpOiBQcm9taXNlPENvbGxlY3Rpb248c3RyaW5nLCBhbnk+PiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdHRVQnLCBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L2NoYW5uZWxzYCk7XHJcbiAgICBjb25zdCBjaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uPHN0cmluZywgYW55PigpO1xyXG4gICAgZm9yIChjb25zdCBjaGFubmVsRGF0YSBvZiBkYXRhKSB7XHJcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLl9hZGQoY2hhbm5lbERhdGEpO1xyXG4gICAgICBjaGFubmVscy5zZXQoY2hhbm5lbC5pZCwgY2hhbm5lbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2hhbm5lbHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBuZXcgY2hhbm5lbFxyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZShvcHRpb25zOiB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB0eXBlPzogQ2hhbm5lbFR5cGU7XHJcbiAgICB0b3BpYz86IHN0cmluZztcclxuICAgIGJpdHJhdGU/OiBudW1iZXI7XHJcbiAgICB1c2VyTGltaXQ/OiBudW1iZXI7XHJcbiAgICByYXRlTGltaXRQZXJVc2VyPzogbnVtYmVyO1xyXG4gICAgcG9zaXRpb24/OiBudW1iZXI7XHJcbiAgICBwZXJtaXNzaW9uT3ZlcndyaXRlcz86IGFueVtdO1xyXG4gICAgcGFyZW50Pzogc3RyaW5nO1xyXG4gICAgbnNmdz86IGJvb2xlYW47XHJcbiAgICByZWFzb24/OiBzdHJpbmc7XHJcbiAgfSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBib2R5OiBhbnkgPSB7XHJcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcclxuICAgICAgdHlwZTogb3B0aW9ucy50eXBlID8/IENoYW5uZWxUeXBlLkd1aWxkVGV4dCxcclxuICAgIH07XHJcbiAgICBpZiAob3B0aW9ucy50b3BpYykgYm9keS50b3BpYyA9IG9wdGlvbnMudG9waWM7XHJcbiAgICBpZiAob3B0aW9ucy5iaXRyYXRlKSBib2R5LmJpdHJhdGUgPSBvcHRpb25zLmJpdHJhdGU7XHJcbiAgICBpZiAob3B0aW9ucy51c2VyTGltaXQpIGJvZHkudXNlcl9saW1pdCA9IG9wdGlvbnMudXNlckxpbWl0O1xyXG4gICAgaWYgKG9wdGlvbnMucmF0ZUxpbWl0UGVyVXNlcikgYm9keS5yYXRlX2xpbWl0X3Blcl91c2VyID0gb3B0aW9ucy5yYXRlTGltaXRQZXJVc2VyO1xyXG4gICAgaWYgKG9wdGlvbnMucG9zaXRpb24gIT09IHVuZGVmaW5lZCkgYm9keS5wb3NpdGlvbiA9IG9wdGlvbnMucG9zaXRpb247XHJcbiAgICBpZiAob3B0aW9ucy5wZXJtaXNzaW9uT3ZlcndyaXRlcykgYm9keS5wZXJtaXNzaW9uX292ZXJ3cml0ZXMgPSBvcHRpb25zLnBlcm1pc3Npb25PdmVyd3JpdGVzO1xyXG4gICAgaWYgKG9wdGlvbnMucGFyZW50KSBib2R5LnBhcmVudF9pZCA9IG9wdGlvbnMucGFyZW50O1xyXG4gICAgaWYgKG9wdGlvbnMubnNmdyAhPT0gdW5kZWZpbmVkKSBib2R5Lm5zZncgPSBvcHRpb25zLm5zZnc7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ1BPU1QnLCBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L2NoYW5uZWxzYCwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlIGEgY2hhbm5lbFxyXG4gICAqL1xyXG4gIGFzeW5jIGRlbGV0ZShpZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnREVMRVRFJywgYC9jaGFubmVscy8ke2lkfWAsIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5jYWNoZS5kZWxldGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWRpdCBhIGNoYW5uZWxcclxuICAgKi9cclxuICBhc3luYyBlZGl0KGlkOiBzdHJpbmcsIGRhdGE6IHtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICB0eXBlPzogQ2hhbm5lbFR5cGU7XHJcbiAgICBwb3NpdGlvbj86IG51bWJlcjtcclxuICAgIHRvcGljPzogc3RyaW5nO1xyXG4gICAgbnNmdz86IGJvb2xlYW47XHJcbiAgICByYXRlTGltaXRQZXJVc2VyPzogbnVtYmVyO1xyXG4gICAgYml0cmF0ZT86IG51bWJlcjtcclxuICAgIHVzZXJMaW1pdD86IG51bWJlcjtcclxuICAgIHBlcm1pc3Npb25PdmVyd3JpdGVzPzogYW55W107XHJcbiAgICBwYXJlbnQ/OiBzdHJpbmcgfCBudWxsO1xyXG4gIH0pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keTogYW55ID0ge307XHJcbiAgICBpZiAoZGF0YS5uYW1lKSBib2R5Lm5hbWUgPSBkYXRhLm5hbWU7XHJcbiAgICBpZiAoZGF0YS50eXBlICE9PSB1bmRlZmluZWQpIGJvZHkudHlwZSA9IGRhdGEudHlwZTtcclxuICAgIGlmIChkYXRhLnBvc2l0aW9uICE9PSB1bmRlZmluZWQpIGJvZHkucG9zaXRpb24gPSBkYXRhLnBvc2l0aW9uO1xyXG4gICAgaWYgKGRhdGEudG9waWMgIT09IHVuZGVmaW5lZCkgYm9keS50b3BpYyA9IGRhdGEudG9waWM7XHJcbiAgICBpZiAoZGF0YS5uc2Z3ICE9PSB1bmRlZmluZWQpIGJvZHkubnNmdyA9IGRhdGEubnNmdztcclxuICAgIGlmIChkYXRhLnJhdGVMaW1pdFBlclVzZXIgIT09IHVuZGVmaW5lZCkgYm9keS5yYXRlX2xpbWl0X3Blcl91c2VyID0gZGF0YS5yYXRlTGltaXRQZXJVc2VyO1xyXG4gICAgaWYgKGRhdGEuYml0cmF0ZSAhPT0gdW5kZWZpbmVkKSBib2R5LmJpdHJhdGUgPSBkYXRhLmJpdHJhdGU7XHJcbiAgICBpZiAoZGF0YS51c2VyTGltaXQgIT09IHVuZGVmaW5lZCkgYm9keS51c2VyX2xpbWl0ID0gZGF0YS51c2VyTGltaXQ7XHJcbiAgICBpZiAoZGF0YS5wZXJtaXNzaW9uT3ZlcndyaXRlcykgYm9keS5wZXJtaXNzaW9uX292ZXJ3cml0ZXMgPSBkYXRhLnBlcm1pc3Npb25PdmVyd3JpdGVzO1xyXG4gICAgaWYgKGRhdGEucGFyZW50ICE9PSB1bmRlZmluZWQpIGJvZHkucGFyZW50X2lkID0gZGF0YS5wYXJlbnQ7XHJcbiAgICBcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnUEFUQ0gnLCBgL2NoYW5uZWxzLyR7aWR9YCwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgY2hhbm5lbCBwb3NpdGlvbnNcclxuICAgKi9cclxuICBhc3luYyBzZXRQb3NpdGlvbnMocG9zaXRpb25zOiBBcnJheTx7IGNoYW5uZWw6IHN0cmluZzsgcG9zaXRpb246IG51bWJlcjsgcGFyZW50Pzogc3RyaW5nIHwgbnVsbCB9Pik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgYm9keSA9IHBvc2l0aW9ucy5tYXAocCA9PiAoe1xyXG4gICAgICBpZDogcC5jaGFubmVsLFxyXG4gICAgICBwb3NpdGlvbjogcC5wb3NpdGlvbixcclxuICAgICAgcGFyZW50X2lkOiBwLnBhcmVudCxcclxuICAgIH0pKTtcclxuICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnUEFUQ0gnLCBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L2NoYW5uZWxzYCwgYm9keSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogR2xvYmFsIGNoYW5uZWwgbWFuYWdlciBmb3IgdGhlIGNsaWVudFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENoYW5uZWxNYW5hZ2VyIGV4dGVuZHMgQ2FjaGVkTWFuYWdlcjxzdHJpbmcsIGFueT4ge1xyXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogYW55LCBpdGVyYWJsZT86IEl0ZXJhYmxlPGFueT4pIHtcclxuICAgIHN1cGVyKGNsaWVudCwgT2JqZWN0IGFzIGFueSwgaXRlcmFibGUpO1xyXG4gIH1cclxuXHJcbiAgX2FkZChkYXRhOiBhbnksIGNhY2hlID0gdHJ1ZSk6IGFueSB7XHJcbiAgICBjb25zdCBpZCA9IGRhdGEuaWQ7XHJcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2FjaGUuZ2V0KGlkKTtcclxuICAgIGlmIChleGlzdGluZykge1xyXG4gICAgICBpZiAoY2FjaGUpIE9iamVjdC5hc3NpZ24oZXhpc3RpbmcsIGRhdGEpO1xyXG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IGNoYW5uZWwgPSB7IC4uLmRhdGEsIGlkIH07XHJcbiAgICBpZiAoY2FjaGUpIHRoaXMuY2FjaGUuc2V0KGlkLCBjaGFubmVsKTtcclxuICAgIHJldHVybiBjaGFubmVsO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmV0Y2goaWQ6IHN0cmluZywgb3B0aW9ucz86IHsgY2FjaGU/OiBib29sZWFuOyBmb3JjZT86IGJvb2xlYW4gfSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAoIW9wdGlvbnM/LmZvcmNlKSB7XHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jYWNoZS5nZXQoaWQpO1xyXG4gICAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ0dFVCcsIGAvY2hhbm5lbHMvJHtpZH1gKTtcclxuICAgIHJldHVybiB0aGlzLl9hZGQoZGF0YSwgb3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBHdWlsZENoYW5uZWxNYW5hZ2VyO1xyXG4iXX0=
@@ -0,0 +1,74 @@
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;