@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,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Guild = void 0;
4
+ const Collection_1 = require("./Collection");
5
+ const GuildMember_1 = require("./GuildMember");
6
+ /**
7
+ * Represents a guild
8
+ */
9
+ class Guild {
10
+ /** Reference to the client */
11
+ client;
12
+ /** Guild ID */
13
+ id;
14
+ /** Guild name */
15
+ name;
16
+ /** Guild icon URL */
17
+ icon;
18
+ /** Owner ID */
19
+ ownerId;
20
+ /** Whether the guild is unavailable */
21
+ unavailable;
22
+ /** Cached members */
23
+ members;
24
+ /** Cached channels */
25
+ channels;
26
+ constructor(client, data) {
27
+ this.client = client;
28
+ this.id = data.id;
29
+ this.name = data.name;
30
+ this.icon = data.icon;
31
+ this.ownerId = data.owner_id;
32
+ this.unavailable = data.unavailable ?? false;
33
+ this.members = new Collection_1.Collection();
34
+ this.channels = new Collection_1.Collection();
35
+ }
36
+ /**
37
+ * Get the guild icon URL
38
+ */
39
+ iconURL(options) {
40
+ if (!this.icon)
41
+ return null;
42
+ return this.icon;
43
+ }
44
+ /**
45
+ * Get the voice adapter creator for @jubbio/voice
46
+ */
47
+ get voiceAdapterCreator() {
48
+ return this.client.voice.adapters.get(this.id);
49
+ }
50
+ /**
51
+ * Fetch a member by ID
52
+ */
53
+ async fetchMember(userId) {
54
+ // Check cache first
55
+ const cached = this.members.get(userId);
56
+ if (cached)
57
+ return cached;
58
+ // TODO: Fetch from API
59
+ return null;
60
+ }
61
+ /**
62
+ * Convert to string
63
+ */
64
+ toString() {
65
+ return this.name;
66
+ }
67
+ /**
68
+ * Update guild data
69
+ */
70
+ _patch(data) {
71
+ if (data.name !== undefined)
72
+ this.name = data.name;
73
+ if (data.icon !== undefined)
74
+ this.icon = data.icon;
75
+ if (data.owner_id !== undefined)
76
+ this.ownerId = data.owner_id;
77
+ if (data.unavailable !== undefined)
78
+ this.unavailable = data.unavailable;
79
+ }
80
+ /**
81
+ * Add a member to cache
82
+ */
83
+ _addMember(data) {
84
+ const member = new GuildMember_1.GuildMember(this.client, this, data);
85
+ this.members.set(member.id, member);
86
+ return member;
87
+ }
88
+ }
89
+ exports.Guild = Guild;
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RydWN0dXJlcy9HdWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2Q0FBMEM7QUFDMUMsK0NBQTRDO0FBRzVDOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCLDhCQUE4QjtJQUNkLE1BQU0sQ0FBUztJQUUvQixlQUFlO0lBQ0MsRUFBRSxDQUFTO0lBRTNCLGlCQUFpQjtJQUNWLElBQUksQ0FBUztJQUVwQixxQkFBcUI7SUFDZCxJQUFJLENBQVU7SUFFckIsZUFBZTtJQUNSLE9BQU8sQ0FBUztJQUV2Qix1Q0FBdUM7SUFDaEMsV0FBVyxDQUFVO0lBRTVCLHFCQUFxQjtJQUNkLE9BQU8sQ0FBa0M7SUFFaEQsc0JBQXNCO0lBQ2YsUUFBUSxDQUFpQztJQUVoRCxZQUFZLE1BQWMsRUFBRSxJQUFjO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx1QkFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFVLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsT0FBMkI7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFjO1FBQzlCLG9CQUFvQjtRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUUxQix1QkFBdUI7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUF1QjtRQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsSUFBb0I7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBeEZELHNCQXdGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUd1aWxkLCBBUElDaGFubmVsLCBBUElHdWlsZE1lbWJlciB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vQ29sbGVjdGlvbic7XHJcbmltcG9ydCB7IEd1aWxkTWVtYmVyIH0gZnJvbSAnLi9HdWlsZE1lbWJlcic7XHJcbmltcG9ydCB0eXBlIHsgQ2xpZW50IH0gZnJvbSAnLi4vQ2xpZW50JztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGEgZ3VpbGRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBHdWlsZCB7XHJcbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY2xpZW50ICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNsaWVudDogQ2xpZW50O1xyXG4gIFxyXG4gIC8qKiBHdWlsZCBJRCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBHdWlsZCBuYW1lICovXHJcbiAgcHVibGljIG5hbWU6IHN0cmluZztcclxuICBcclxuICAvKiogR3VpbGQgaWNvbiBVUkwgKi9cclxuICBwdWJsaWMgaWNvbj86IHN0cmluZztcclxuICBcclxuICAvKiogT3duZXIgSUQgKi9cclxuICBwdWJsaWMgb3duZXJJZDogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyB1bmF2YWlsYWJsZSAqL1xyXG4gIHB1YmxpYyB1bmF2YWlsYWJsZTogYm9vbGVhbjtcclxuICBcclxuICAvKiogQ2FjaGVkIG1lbWJlcnMgKi9cclxuICBwdWJsaWMgbWVtYmVyczogQ29sbGVjdGlvbjxzdHJpbmcsIEd1aWxkTWVtYmVyPjtcclxuICBcclxuICAvKiogQ2FjaGVkIGNoYW5uZWxzICovXHJcbiAgcHVibGljIGNoYW5uZWxzOiBDb2xsZWN0aW9uPHN0cmluZywgQVBJQ2hhbm5lbD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogQ2xpZW50LCBkYXRhOiBBUElHdWlsZCkge1xyXG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnQ7XHJcbiAgICB0aGlzLmlkID0gZGF0YS5pZDtcclxuICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcclxuICAgIHRoaXMuaWNvbiA9IGRhdGEuaWNvbjtcclxuICAgIHRoaXMub3duZXJJZCA9IGRhdGEub3duZXJfaWQ7XHJcbiAgICB0aGlzLnVuYXZhaWxhYmxlID0gZGF0YS51bmF2YWlsYWJsZSA/PyBmYWxzZTtcclxuICAgIHRoaXMubWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uKCk7XHJcbiAgICB0aGlzLmNoYW5uZWxzID0gbmV3IENvbGxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZ3VpbGQgaWNvbiBVUkxcclxuICAgKi9cclxuICBpY29uVVJMKG9wdGlvbnM/OiB7IHNpemU/OiBudW1iZXIgfSk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLmljb24pIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuaWNvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgdm9pY2UgYWRhcHRlciBjcmVhdG9yIGZvciBAanViYmlvL3ZvaWNlXHJcbiAgICovXHJcbiAgZ2V0IHZvaWNlQWRhcHRlckNyZWF0b3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnQudm9pY2UuYWRhcHRlcnMuZ2V0KHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2ggYSBtZW1iZXIgYnkgSURcclxuICAgKi9cclxuICBhc3luYyBmZXRjaE1lbWJlcih1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8R3VpbGRNZW1iZXIgfCBudWxsPiB7XHJcbiAgICAvLyBDaGVjayBjYWNoZSBmaXJzdFxyXG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5tZW1iZXJzLmdldCh1c2VySWQpO1xyXG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcclxuICAgIFxyXG4gICAgLy8gVE9ETzogRmV0Y2ggZnJvbSBBUElcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCB0byBzdHJpbmdcclxuICAgKi9cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubmFtZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBndWlsZCBkYXRhXHJcbiAgICovXHJcbiAgX3BhdGNoKGRhdGE6IFBhcnRpYWw8QVBJR3VpbGQ+KTogdm9pZCB7XHJcbiAgICBpZiAoZGF0YS5uYW1lICE9PSB1bmRlZmluZWQpIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcclxuICAgIGlmIChkYXRhLmljb24gIT09IHVuZGVmaW5lZCkgdGhpcy5pY29uID0gZGF0YS5pY29uO1xyXG4gICAgaWYgKGRhdGEub3duZXJfaWQgIT09IHVuZGVmaW5lZCkgdGhpcy5vd25lcklkID0gZGF0YS5vd25lcl9pZDtcclxuICAgIGlmIChkYXRhLnVuYXZhaWxhYmxlICE9PSB1bmRlZmluZWQpIHRoaXMudW5hdmFpbGFibGUgPSBkYXRhLnVuYXZhaWxhYmxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgbWVtYmVyIHRvIGNhY2hlXHJcbiAgICovXHJcbiAgX2FkZE1lbWJlcihkYXRhOiBBUElHdWlsZE1lbWJlcik6IEd1aWxkTWVtYmVyIHtcclxuICAgIGNvbnN0IG1lbWJlciA9IG5ldyBHdWlsZE1lbWJlcih0aGlzLmNsaWVudCwgdGhpcywgZGF0YSk7XHJcbiAgICB0aGlzLm1lbWJlcnMuc2V0KG1lbWJlci5pZCwgbWVtYmVyKTtcclxuICAgIHJldHVybiBtZW1iZXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,130 @@
1
+ import { APIGuildMember } from '../types';
2
+ import { User } from './User';
3
+ import { Guild } from './Guild';
4
+ import type { Client } from '../Client';
5
+ /**
6
+ * Permission flags - permission bits
7
+ */
8
+ export declare const PermissionFlags: {
9
+ readonly CreateInstantInvite: bigint;
10
+ readonly KickMembers: bigint;
11
+ readonly BanMembers: bigint;
12
+ readonly Administrator: bigint;
13
+ readonly ManageChannels: bigint;
14
+ readonly ManageGuild: bigint;
15
+ readonly AddReactions: bigint;
16
+ readonly ViewAuditLog: bigint;
17
+ readonly PrioritySpeaker: bigint;
18
+ readonly Stream: bigint;
19
+ readonly ViewChannel: bigint;
20
+ readonly SendMessages: bigint;
21
+ readonly SendTTSMessages: bigint;
22
+ readonly ManageMessages: bigint;
23
+ readonly EmbedLinks: bigint;
24
+ readonly AttachFiles: bigint;
25
+ readonly ReadMessageHistory: bigint;
26
+ readonly MentionEveryone: bigint;
27
+ readonly UseExternalEmojis: bigint;
28
+ readonly ViewGuildInsights: bigint;
29
+ readonly Connect: bigint;
30
+ readonly Speak: bigint;
31
+ readonly MuteMembers: bigint;
32
+ readonly DeafenMembers: bigint;
33
+ readonly MoveMembers: bigint;
34
+ readonly UseVAD: bigint;
35
+ readonly ChangeNickname: bigint;
36
+ readonly ManageNicknames: bigint;
37
+ readonly ManageRoles: bigint;
38
+ readonly ManageWebhooks: bigint;
39
+ readonly ManageEmojisAndStickers: bigint;
40
+ readonly UseApplicationCommands: bigint;
41
+ readonly RequestToSpeak: bigint;
42
+ readonly ManageEvents: bigint;
43
+ readonly ManageThreads: bigint;
44
+ readonly CreatePublicThreads: bigint;
45
+ readonly CreatePrivateThreads: bigint;
46
+ readonly UseExternalStickers: bigint;
47
+ readonly SendMessagesInThreads: bigint;
48
+ readonly UseEmbeddedActivities: bigint;
49
+ readonly ModerateMembers: bigint;
50
+ };
51
+ /**
52
+ * Permissions helper class
53
+ */
54
+ export declare class Permissions {
55
+ private bitfield;
56
+ private isOwner;
57
+ constructor(bits?: string | bigint | number, isOwner?: boolean);
58
+ /**
59
+ * Check if has a permission
60
+ */
61
+ has(permission: string | bigint): boolean;
62
+ /**
63
+ * Get the raw bitfield
64
+ */
65
+ get bits(): bigint;
66
+ /**
67
+ * Convert to array of permission names
68
+ */
69
+ toArray(): string[];
70
+ }
71
+ /**
72
+ * Represents a guild member
73
+ */
74
+ export declare class GuildMember {
75
+ /** Reference to the client */
76
+ readonly client: Client;
77
+ /** Reference to the guild */
78
+ readonly guild: Guild;
79
+ /** The user this member represents */
80
+ readonly user: User;
81
+ /** Member's nickname */
82
+ nickname?: string;
83
+ /** Member's guild avatar */
84
+ avatar?: string;
85
+ /** Role IDs */
86
+ roles: string[];
87
+ /** Join timestamp */
88
+ readonly joinedTimestamp: number;
89
+ /** Voice state */
90
+ voice: {
91
+ channelId?: string;
92
+ selfMute: boolean;
93
+ selfDeaf: boolean;
94
+ };
95
+ /** Member permissions */
96
+ permissions: Permissions;
97
+ constructor(client: Client, guild: Guild, data: APIGuildMember);
98
+ /**
99
+ * Get the member's ID
100
+ */
101
+ get id(): string;
102
+ /**
103
+ * Get the display name (nickname or username)
104
+ */
105
+ get displayName(): string;
106
+ /**
107
+ * Get the join date
108
+ */
109
+ get joinedAt(): Date;
110
+ /**
111
+ * Check if member is in a voice channel
112
+ */
113
+ get inVoiceChannel(): boolean;
114
+ /**
115
+ * Get the member's avatar URL
116
+ */
117
+ avatarURL(): string | null;
118
+ /**
119
+ * Get the display avatar URL (member avatar or user avatar)
120
+ */
121
+ displayAvatarURL(): string;
122
+ /**
123
+ * Convert to string (mention format)
124
+ */
125
+ toString(): string;
126
+ /**
127
+ * Update member data
128
+ */
129
+ _patch(data: Partial<APIGuildMember>): void;
130
+ }
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GuildMember = exports.Permissions = exports.PermissionFlags = void 0;
4
+ const User_1 = require("./User");
5
+ /**
6
+ * Permission flags - permission bits
7
+ */
8
+ exports.PermissionFlags = {
9
+ CreateInstantInvite: 1n << 0n,
10
+ KickMembers: 1n << 1n,
11
+ BanMembers: 1n << 2n,
12
+ Administrator: 1n << 3n,
13
+ ManageChannels: 1n << 4n,
14
+ ManageGuild: 1n << 5n,
15
+ AddReactions: 1n << 6n,
16
+ ViewAuditLog: 1n << 7n,
17
+ PrioritySpeaker: 1n << 8n,
18
+ Stream: 1n << 9n,
19
+ ViewChannel: 1n << 10n,
20
+ SendMessages: 1n << 11n,
21
+ SendTTSMessages: 1n << 12n,
22
+ ManageMessages: 1n << 13n,
23
+ EmbedLinks: 1n << 14n,
24
+ AttachFiles: 1n << 15n,
25
+ ReadMessageHistory: 1n << 16n,
26
+ MentionEveryone: 1n << 17n,
27
+ UseExternalEmojis: 1n << 18n,
28
+ ViewGuildInsights: 1n << 19n,
29
+ Connect: 1n << 20n,
30
+ Speak: 1n << 21n,
31
+ MuteMembers: 1n << 22n,
32
+ DeafenMembers: 1n << 23n,
33
+ MoveMembers: 1n << 24n,
34
+ UseVAD: 1n << 25n,
35
+ ChangeNickname: 1n << 26n,
36
+ ManageNicknames: 1n << 27n,
37
+ ManageRoles: 1n << 28n,
38
+ ManageWebhooks: 1n << 29n,
39
+ ManageEmojisAndStickers: 1n << 30n,
40
+ UseApplicationCommands: 1n << 31n,
41
+ RequestToSpeak: 1n << 32n,
42
+ ManageEvents: 1n << 33n,
43
+ ManageThreads: 1n << 34n,
44
+ CreatePublicThreads: 1n << 35n,
45
+ CreatePrivateThreads: 1n << 36n,
46
+ UseExternalStickers: 1n << 37n,
47
+ SendMessagesInThreads: 1n << 38n,
48
+ UseEmbeddedActivities: 1n << 39n,
49
+ ModerateMembers: 1n << 40n,
50
+ };
51
+ /**
52
+ * Permissions helper class
53
+ */
54
+ class Permissions {
55
+ bitfield;
56
+ isOwner;
57
+ constructor(bits = 0n, isOwner = false) {
58
+ if (typeof bits === 'string') {
59
+ this.bitfield = BigInt(bits);
60
+ }
61
+ else {
62
+ this.bitfield = BigInt(bits);
63
+ }
64
+ this.isOwner = isOwner;
65
+ }
66
+ /**
67
+ * Check if has a permission
68
+ */
69
+ has(permission) {
70
+ // Owner has all permissions
71
+ if (this.isOwner)
72
+ return true;
73
+ // Administrator has all permissions
74
+ if ((this.bitfield & exports.PermissionFlags.Administrator) === exports.PermissionFlags.Administrator) {
75
+ return true;
76
+ }
77
+ let bit;
78
+ if (typeof permission === 'string') {
79
+ bit = exports.PermissionFlags[permission] || 0n;
80
+ }
81
+ else {
82
+ bit = permission;
83
+ }
84
+ return (this.bitfield & bit) === bit;
85
+ }
86
+ /**
87
+ * Get the raw bitfield
88
+ */
89
+ get bits() {
90
+ return this.bitfield;
91
+ }
92
+ /**
93
+ * Convert to array of permission names
94
+ */
95
+ toArray() {
96
+ const result = [];
97
+ for (const [name, bit] of Object.entries(exports.PermissionFlags)) {
98
+ if ((this.bitfield & bit) === bit) {
99
+ result.push(name);
100
+ }
101
+ }
102
+ return result;
103
+ }
104
+ }
105
+ exports.Permissions = Permissions;
106
+ /**
107
+ * Represents a guild member
108
+ */
109
+ class GuildMember {
110
+ /** Reference to the client */
111
+ client;
112
+ /** Reference to the guild */
113
+ guild;
114
+ /** The user this member represents */
115
+ user;
116
+ /** Member's nickname */
117
+ nickname;
118
+ /** Member's guild avatar */
119
+ avatar;
120
+ /** Role IDs */
121
+ roles;
122
+ /** Join timestamp */
123
+ joinedTimestamp;
124
+ /** Voice state */
125
+ voice;
126
+ /** Member permissions */
127
+ permissions;
128
+ constructor(client, guild, data) {
129
+ this.client = client;
130
+ this.guild = guild;
131
+ this.user = data.user ? new User_1.User(data.user) : new User_1.User({ id: '0', username: 'Unknown' });
132
+ this.nickname = data.nick;
133
+ this.avatar = data.avatar;
134
+ this.roles = data.roles;
135
+ this.joinedTimestamp = new Date(data.joined_at).getTime();
136
+ this.voice = {
137
+ channelId: data.voice?.channel_id,
138
+ selfMute: data.voice?.self_mute ?? false,
139
+ selfDeaf: data.voice?.self_deaf ?? false
140
+ };
141
+ // Check if user is guild owner
142
+ const isOwner = guild.ownerId === this.user.id;
143
+ // Parse permissions from interaction data
144
+ this.permissions = new Permissions(data.permissions || '0', isOwner);
145
+ }
146
+ /**
147
+ * Get the member's ID
148
+ */
149
+ get id() {
150
+ return this.user.id;
151
+ }
152
+ /**
153
+ * Get the display name (nickname or username)
154
+ */
155
+ get displayName() {
156
+ return this.nickname || this.user.displayName || this.user.username;
157
+ }
158
+ /**
159
+ * Get the join date
160
+ */
161
+ get joinedAt() {
162
+ return new Date(this.joinedTimestamp);
163
+ }
164
+ /**
165
+ * Check if member is in a voice channel
166
+ */
167
+ get inVoiceChannel() {
168
+ return !!this.voice.channelId;
169
+ }
170
+ /**
171
+ * Get the member's avatar URL
172
+ */
173
+ avatarURL() {
174
+ return this.avatar || null;
175
+ }
176
+ /**
177
+ * Get the display avatar URL (member avatar or user avatar)
178
+ */
179
+ displayAvatarURL() {
180
+ return this.avatar || this.user.displayAvatarURL();
181
+ }
182
+ /**
183
+ * Convert to string (mention format)
184
+ */
185
+ toString() {
186
+ return `<@${this.id}>`;
187
+ }
188
+ /**
189
+ * Update member data
190
+ */
191
+ _patch(data) {
192
+ if (data.nick !== undefined)
193
+ this.nickname = data.nick;
194
+ if (data.avatar !== undefined)
195
+ this.avatar = data.avatar;
196
+ if (data.roles !== undefined)
197
+ this.roles = data.roles;
198
+ if (data.voice !== undefined) {
199
+ this.voice = {
200
+ channelId: data.voice.channel_id,
201
+ selfMute: data.voice.self_mute ?? false,
202
+ selfDeaf: data.voice.self_deaf ?? false
203
+ };
204
+ }
205
+ }
206
+ }
207
+ exports.GuildMember = GuildMember;
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpbGRNZW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RydWN0dXJlcy9HdWlsZE1lbWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBOEI7QUFJOUI7O0dBRUc7QUFDVSxRQUFBLGVBQWUsR0FBRztJQUM3QixtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRTtJQUM3QixXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUU7SUFDckIsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFO0lBQ3BCLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRTtJQUN2QixjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUU7SUFDeEIsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFO0lBQ3JCLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRTtJQUN0QixZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUU7SUFDdEIsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFO0lBQ3pCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRTtJQUNoQixXQUFXLEVBQUUsRUFBRSxJQUFJLEdBQUc7SUFDdEIsWUFBWSxFQUFFLEVBQUUsSUFBSSxHQUFHO0lBQ3ZCLGVBQWUsRUFBRSxFQUFFLElBQUksR0FBRztJQUMxQixjQUFjLEVBQUUsRUFBRSxJQUFJLEdBQUc7SUFDekIsVUFBVSxFQUFFLEVBQUUsSUFBSSxHQUFHO0lBQ3JCLFdBQVcsRUFBRSxFQUFFLElBQUksR0FBRztJQUN0QixrQkFBa0IsRUFBRSxFQUFFLElBQUksR0FBRztJQUM3QixlQUFlLEVBQUUsRUFBRSxJQUFJLEdBQUc7SUFDMUIsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEdBQUc7SUFDNUIsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEdBQUc7SUFDNUIsT0FBTyxFQUFFLEVBQUUsSUFBSSxHQUFHO0lBQ2xCLEtBQUssRUFBRSxFQUFFLElBQUksR0FBRztJQUNoQixXQUFXLEVBQUUsRUFBRSxJQUFJLEdBQUc7SUFDdEIs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LENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtnQkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUs7Z0JBQ3ZDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLO2FBQ3hDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckhELGtDQXFIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUd1aWxkTWVtYmVyIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi9Vc2VyJztcclxuaW1wb3J0IHsgR3VpbGQgfSBmcm9tICcuL0d1aWxkJztcclxuaW1wb3J0IHR5cGUgeyBDbGllbnQgfSBmcm9tICcuLi9DbGllbnQnO1xyXG5cclxuLyoqXHJcbiAqIFBlcm1pc3Npb24gZmxhZ3MgLSBwZXJtaXNzaW9uIGJpdHNcclxuICovXHJcbmV4cG9ydCBjb25zdCBQZXJtaXNzaW9uRmxhZ3MgPSB7XHJcbiAgQ3JlYXRlSW5zdGFudEludml0ZTogMW4gPDwgMG4sXHJcbiAgS2lja01lbWJlcnM6IDFuIDw8IDFuLFxyXG4gIEJhbk1lbWJlcnM6IDFuIDw8IDJuLFxyXG4gIEFkbWluaXN0cmF0b3I6IDFuIDw8IDNuLFxyXG4gIE1hbmFnZUNoYW5uZWxzOiAxbiA8PCA0bixcclxuICBNYW5hZ2VHdWlsZDogMW4gPDwgNW4sXHJcbiAgQWRkUmVhY3Rpb25zOiAxbiA8PCA2bixcclxuICBWaWV3QXVkaXRMb2c6IDFuIDw8IDduLFxyXG4gIFByaW9yaXR5U3BlYWtlcjogMW4gPDwgOG4sXHJcbiAgU3RyZWFtOiAxbiA8PCA5bixcclxuICBWaWV3Q2hhbm5lbDogMW4gPDwgMTBuLFxyXG4gIFNlbmRNZXNzYWdlczogMW4gPDwgMTFuLFxyXG4gIFNlbmRUVFNNZXNzYWdlczogMW4gPDwgMTJuLFxyXG4gIE1hbmFnZU1lc3NhZ2VzOiAxbiA8PCAxM24sXHJcbiAgRW1iZWRMaW5rczogMW4gPDwgMTRuLFxyXG4gIEF0dGFjaEZpbGVzOiAxbiA8PCAxNW4sXHJcbiAgUmVhZE1lc3NhZ2VIaXN0b3J5OiAxbiA8PCAxNm4sXHJcbiAgTWVudGlvbkV2ZXJ5b25lOiAxbiA8PCAxN24sXHJcbiAgVXNlRXh0ZXJuYWxFbW9qaXM6IDFuIDw8IDE4bixcclxuICBWaWV3R3VpbGRJbnNpZ2h0czogMW4gPDwgMTluLFxyXG4gIENvbm5lY3Q6IDFuIDw8IDIwbixcclxuICBTcGVhazogMW4gPDwgMjFuLFxyXG4gIE11dGVNZW1iZXJzOiAxbiA8PCAyMm4sXHJcbiAgRGVhZmVuTWVtYmVyczogMW4gPDwgMjNuLFxyXG4gIE1vdmVNZW1iZXJzOiAxbiA8PCAyNG4sXHJcbiAgVXNlVkFEOiAxbiA8PCAyNW4sXHJcbiAgQ2hhbmdlTmlja25hbWU6IDFuIDw8IDI2bixcclxuICBNYW5hZ2VOaWNrbmFtZXM6IDFuIDw8IDI3bixcclxuICBNYW5hZ2VSb2xlczogMW4gPDwgMjhuLFxyXG4gIE1hbmFnZVdlYmhvb2tzOiAxbiA8PCAyOW4sXHJcbiAgTWFuYWdlRW1vamlzQW5kU3RpY2tlcnM6IDFuIDw8IDMwbixcclxuICBVc2VBcHBsaWNhdGlvbkNvbW1hbmRzOiAxbiA8PCAzMW4sXHJcbiAgUmVxdWVzdFRvU3BlYWs6IDFuIDw8IDMybixcclxuICBNYW5hZ2VFdmVudHM6IDFuIDw8IDMzbixcclxuICBNYW5hZ2VUaHJlYWRzOiAxbiA8PCAzNG4sXHJcbiAgQ3JlYXRlUHVibGljVGhyZWFkczogMW4gPDwgMzVuLFxyXG4gIENyZWF0ZVByaXZhdGVUaHJlYWRzOiAxbiA8PCAzNm4sXHJcbiAgVXNlRXh0ZXJuYWxTdGlja2VyczogMW4gPDwgMzduLFxyXG4gIFNlbmRNZXNzYWdlc0luVGhyZWFkczogMW4gPDwgMzhuLFxyXG4gIFVzZUVtYmVkZGVkQWN0aXZpdGllczogMW4gPDwgMzluLFxyXG4gIE1vZGVyYXRlTWVtYmVyczogMW4gPDwgNDBuLFxyXG59IGFzIGNvbnN0O1xyXG5cclxuLyoqXHJcbiAqIFBlcm1pc3Npb25zIGhlbHBlciBjbGFzc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zIHtcclxuICBwcml2YXRlIGJpdGZpZWxkOiBiaWdpbnQ7XHJcbiAgcHJpdmF0ZSBpc093bmVyOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihiaXRzOiBzdHJpbmcgfCBiaWdpbnQgfCBudW1iZXIgPSAwbiwgaXNPd25lciA9IGZhbHNlKSB7XHJcbiAgICBpZiAodHlwZW9mIGJpdHMgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuYml0ZmllbGQgPSBCaWdJbnQoYml0cyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmJpdGZpZWxkID0gQmlnSW50KGJpdHMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc093bmVyID0gaXNPd25lcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGhhcyBhIHBlcm1pc3Npb25cclxuICAgKi9cclxuICBoYXMocGVybWlzc2lvbjogc3RyaW5nIHwgYmlnaW50KTogYm9vbGVhbiB7XHJcbiAgICAvLyBPd25lciBoYXMgYWxsIHBlcm1pc3Npb25zXHJcbiAgICBpZiAodGhpcy5pc093bmVyKSByZXR1cm4gdHJ1ZTtcclxuICAgIFxyXG4gICAgLy8gQWRtaW5pc3RyYXRvciBoYXMgYWxsIHBlcm1pc3Npb25zXHJcbiAgICBpZiAoKHRoaXMuYml0ZmllbGQgJiBQZXJtaXNzaW9uRmxhZ3MuQWRtaW5pc3RyYXRvcikgPT09IFBlcm1pc3Npb25GbGFncy5BZG1pbmlzdHJhdG9yKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBsZXQgYml0OiBiaWdpbnQ7XHJcbiAgICBpZiAodHlwZW9mIHBlcm1pc3Npb24gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGJpdCA9IFBlcm1pc3Npb25GbGFnc1twZXJtaXNzaW9uIGFzIGtleW9mIHR5cGVvZiBQZXJtaXNzaW9uRmxhZ3NdIHx8IDBuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYml0ID0gcGVybWlzc2lvbjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuICh0aGlzLmJpdGZpZWxkICYgYml0KSA9PT0gYml0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSByYXcgYml0ZmllbGRcclxuICAgKi9cclxuICBnZXQgYml0cygpOiBiaWdpbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuYml0ZmllbGQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0IHRvIGFycmF5IG9mIHBlcm1pc3Npb24gbmFtZXNcclxuICAgKi9cclxuICB0b0FycmF5KCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgW25hbWUsIGJpdF0gb2YgT2JqZWN0LmVudHJpZXMoUGVybWlzc2lvbkZsYWdzKSkge1xyXG4gICAgICBpZiAoKHRoaXMuYml0ZmllbGQgJiBiaXQpID09PSBiaXQpIHtcclxuICAgICAgICByZXN1bHQucHVzaChuYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGEgZ3VpbGQgbWVtYmVyXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgR3VpbGRNZW1iZXIge1xyXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGNsaWVudCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnQ6IENsaWVudDtcclxuICBcclxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBndWlsZCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBndWlsZDogR3VpbGQ7XHJcbiAgXHJcbiAgLyoqIFRoZSB1c2VyIHRoaXMgbWVtYmVyIHJlcHJlc2VudHMgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgdXNlcjogVXNlcjtcclxuICBcclxuICAvKiogTWVtYmVyJ3Mgbmlja25hbWUgKi9cclxuICBwdWJsaWMgbmlja25hbWU/OiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIE1lbWJlcidzIGd1aWxkIGF2YXRhciAqL1xyXG4gIHB1YmxpYyBhdmF0YXI/OiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIFJvbGUgSURzICovXHJcbiAgcHVibGljIHJvbGVzOiBzdHJpbmdbXTtcclxuICBcclxuICAvKiogSm9pbiB0aW1lc3RhbXAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgam9pbmVkVGltZXN0YW1wOiBudW1iZXI7XHJcbiAgXHJcbiAgLyoqIFZvaWNlIHN0YXRlICovXHJcbiAgcHVibGljIHZvaWNlOiB7XHJcbiAgICBjaGFubmVsSWQ/OiBzdHJpbmc7XHJcbiAgICBzZWxmTXV0ZTogYm9vbGVhbjtcclxuICAgIHNlbGZEZWFmOiBib29sZWFuO1xyXG4gIH07XHJcbiAgXHJcbiAgLyoqIE1lbWJlciBwZXJtaXNzaW9ucyAqL1xyXG4gIHB1YmxpYyBwZXJtaXNzaW9uczogUGVybWlzc2lvbnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogQ2xpZW50LCBndWlsZDogR3VpbGQsIGRhdGE6IEFQSUd1aWxkTWVtYmVyKSB7XHJcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcclxuICAgIHRoaXMuZ3VpbGQgPSBndWlsZDtcclxuICAgIHRoaXMudXNlciA9IGRhdGEudXNlciA/IG5ldyBVc2VyKGRhdGEudXNlcikgOiBuZXcgVXNlcih7IGlkOiAnMCcsIHVzZXJuYW1lOiAnVW5rbm93bicgfSk7XHJcbiAgICB0aGlzLm5pY2tuYW1lID0gZGF0YS5uaWNrO1xyXG4gICAgdGhpcy5hdmF0YXIgPSBkYXRhLmF2YXRhcjtcclxuICAgIHRoaXMucm9sZXMgPSBkYXRhLnJvbGVzO1xyXG4gICAgdGhpcy5qb2luZWRUaW1lc3RhbXAgPSBuZXcgRGF0ZShkYXRhLmpvaW5lZF9hdCkuZ2V0VGltZSgpO1xyXG4gICAgdGhpcy52b2ljZSA9IHtcclxuICAgICAgY2hhbm5lbElkOiBkYXRhLnZvaWNlPy5jaGFubmVsX2lkLFxyXG4gICAgICBzZWxmTXV0ZTogZGF0YS52b2ljZT8uc2VsZl9tdXRlID8/IGZhbHNlLFxyXG4gICAgICBzZWxmRGVhZjogZGF0YS52b2ljZT8uc2VsZl9kZWFmID8/IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGd1aWxkIG93bmVyXHJcbiAgICBjb25zdCBpc093bmVyID0gZ3VpbGQub3duZXJJZCA9PT0gdGhpcy51c2VyLmlkO1xyXG4gICAgXHJcbiAgICAvLyBQYXJzZSBwZXJtaXNzaW9ucyBmcm9tIGludGVyYWN0aW9uIGRhdGFcclxuICAgIHRoaXMucGVybWlzc2lvbnMgPSBuZXcgUGVybWlzc2lvbnMoZGF0YS5wZXJtaXNzaW9ucyB8fCAnMCcsIGlzT3duZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBtZW1iZXIncyBJRFxyXG4gICAqL1xyXG4gIGdldCBpZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlci5pZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZGlzcGxheSBuYW1lIChuaWNrbmFtZSBvciB1c2VybmFtZSlcclxuICAgKi9cclxuICBnZXQgZGlzcGxheU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm5pY2tuYW1lIHx8IHRoaXMudXNlci5kaXNwbGF5TmFtZSB8fCB0aGlzLnVzZXIudXNlcm5hbWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGpvaW4gZGF0ZVxyXG4gICAqL1xyXG4gIGdldCBqb2luZWRBdCgpOiBEYXRlIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmpvaW5lZFRpbWVzdGFtcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBtZW1iZXIgaXMgaW4gYSB2b2ljZSBjaGFubmVsXHJcbiAgICovXHJcbiAgZ2V0IGluVm9pY2VDaGFubmVsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy52b2ljZS5jaGFubmVsSWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIG1lbWJlcidzIGF2YXRhciBVUkxcclxuICAgKi9cclxuICBhdmF0YXJVUkwoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5hdmF0YXIgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZGlzcGxheSBhdmF0YXIgVVJMIChtZW1iZXIgYXZhdGFyIG9yIHVzZXIgYXZhdGFyKVxyXG4gICAqL1xyXG4gIGRpc3BsYXlBdmF0YXJVUkwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmF2YXRhciB8fCB0aGlzLnVzZXIuZGlzcGxheUF2YXRhclVSTCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCB0byBzdHJpbmcgKG1lbnRpb24gZm9ybWF0KVxyXG4gICAqL1xyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYDxAJHt0aGlzLmlkfT5gO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIG1lbWJlciBkYXRhXHJcbiAgICovXHJcbiAgX3BhdGNoKGRhdGE6IFBhcnRpYWw8QVBJR3VpbGRNZW1iZXI+KTogdm9pZCB7XHJcbiAgICBpZiAoZGF0YS5uaWNrICE9PSB1bmRlZmluZWQpIHRoaXMubmlja25hbWUgPSBkYXRhLm5pY2s7XHJcbiAgICBpZiAoZGF0YS5hdmF0YXIgIT09IHVuZGVmaW5lZCkgdGhpcy5hdmF0YXIgPSBkYXRhLmF2YXRhcjtcclxuICAgIGlmIChkYXRhLnJvbGVzICE9PSB1bmRlZmluZWQpIHRoaXMucm9sZXMgPSBkYXRhLnJvbGVzO1xyXG4gICAgaWYgKGRhdGEudm9pY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnZvaWNlID0ge1xyXG4gICAgICAgIGNoYW5uZWxJZDogZGF0YS52b2ljZS5jaGFubmVsX2lkLFxyXG4gICAgICAgIHNlbGZNdXRlOiBkYXRhLnZvaWNlLnNlbGZfbXV0ZSA/PyBmYWxzZSxcclxuICAgICAgICBzZWxmRGVhZjogZGF0YS52b2ljZS5zZWxmX2RlYWYgPz8gZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,224 @@
1
+ import { APIInteraction, APIInteractionOption, APIEmbed } from '../types';
2
+ import { InteractionType } from '../enums';
3
+ import { User } from './User';
4
+ import { GuildMember } from './GuildMember';
5
+ import type { Client } from '../Client';
6
+ /**
7
+ * Base interaction class
8
+ */
9
+ export declare class Interaction {
10
+ /** Reference to the client */
11
+ readonly client: Client;
12
+ /** Interaction ID */
13
+ readonly id: string;
14
+ /** Application ID */
15
+ readonly applicationId: string;
16
+ /** Interaction type */
17
+ readonly type: InteractionType;
18
+ /** Guild ID */
19
+ readonly guildId?: string;
20
+ /** Channel ID */
21
+ readonly channelId?: string;
22
+ /** Interaction token */
23
+ readonly token: string;
24
+ /** User who triggered the interaction */
25
+ readonly user: User;
26
+ /** Guild member (if in a guild) */
27
+ readonly member?: GuildMember;
28
+ /** Whether the interaction has been replied to */
29
+ replied: boolean;
30
+ /** Whether the interaction has been deferred */
31
+ deferred: boolean;
32
+ constructor(client: Client, data: APIInteraction);
33
+ /**
34
+ * Check if this is a command interaction
35
+ */
36
+ isCommand(): this is CommandInteraction;
37
+ /**
38
+ * Check if this is an autocomplete interaction
39
+ */
40
+ isAutocomplete(): this is AutocompleteInteraction;
41
+ /**
42
+ * Check if this is a modal submit interaction
43
+ */
44
+ isModalSubmit(): this is ModalSubmitInteraction;
45
+ /**
46
+ * Check if this is a button interaction
47
+ */
48
+ isButton(): this is ButtonInteraction;
49
+ /**
50
+ * Check if this is a select menu interaction
51
+ */
52
+ isSelectMenu(): this is SelectMenuInteraction;
53
+ /**
54
+ * Reply to the interaction
55
+ */
56
+ reply(options: string | InteractionReplyOptions): Promise<void>;
57
+ /**
58
+ * Defer the reply (shows "thinking...")
59
+ */
60
+ deferReply(options?: {
61
+ ephemeral?: boolean;
62
+ }): Promise<void>;
63
+ /**
64
+ * Edit the reply
65
+ */
66
+ editReply(options: string | InteractionReplyOptions): Promise<void>;
67
+ /**
68
+ * Delete the reply
69
+ */
70
+ deleteReply(): Promise<void>;
71
+ /**
72
+ * Send a followup message
73
+ */
74
+ followUp(options: string | InteractionReplyOptions): Promise<void>;
75
+ }
76
+ /**
77
+ * Command interaction
78
+ */
79
+ export declare class CommandInteraction extends Interaction {
80
+ /** Command name */
81
+ readonly commandName: string;
82
+ /** Command options */
83
+ readonly options: CommandInteractionOptions;
84
+ constructor(client: Client, data: APIInteraction);
85
+ /**
86
+ * Show a modal
87
+ */
88
+ showModal(modal: ModalData): Promise<void>;
89
+ }
90
+ /**
91
+ * Command interaction options helper
92
+ */
93
+ export declare class CommandInteractionOptions {
94
+ private options;
95
+ constructor(options: APIInteractionOption[]);
96
+ /**
97
+ * Get a string option
98
+ */
99
+ getString(name: string, required?: boolean): string | null;
100
+ /**
101
+ * Get an integer option
102
+ */
103
+ getInteger(name: string, required?: boolean): number | null;
104
+ /**
105
+ * Get a number option
106
+ */
107
+ getNumber(name: string, required?: boolean): number | null;
108
+ /**
109
+ * Get a boolean option
110
+ */
111
+ getBoolean(name: string, required?: boolean): boolean | null;
112
+ /**
113
+ * Get a user option
114
+ */
115
+ getUser(name: string, required?: boolean): string | null;
116
+ /**
117
+ * Get a channel option
118
+ */
119
+ getChannel(name: string, required?: boolean): string | null;
120
+ /**
121
+ * Get a subcommand name
122
+ */
123
+ getSubcommand(required?: boolean): string | null;
124
+ /**
125
+ * Get the focused option (for autocomplete)
126
+ */
127
+ getFocused(): {
128
+ name: string;
129
+ value: string;
130
+ } | null;
131
+ }
132
+ /**
133
+ * Autocomplete interaction
134
+ */
135
+ export declare class AutocompleteInteraction extends Interaction {
136
+ /** Command name */
137
+ readonly commandName: string;
138
+ /** Command options */
139
+ readonly options: CommandInteractionOptions;
140
+ constructor(client: Client, data: APIInteraction);
141
+ /**
142
+ * Respond with autocomplete choices
143
+ */
144
+ respond(choices: AutocompleteChoice[]): Promise<void>;
145
+ }
146
+ /**
147
+ * Button interaction
148
+ */
149
+ export declare class ButtonInteraction extends Interaction {
150
+ /** Button custom ID */
151
+ readonly customId: string;
152
+ /** Component type (always 2 for buttons) */
153
+ readonly componentType: number;
154
+ /** Message the button is attached to */
155
+ readonly message?: any;
156
+ constructor(client: Client, data: APIInteraction);
157
+ /**
158
+ * Update the message the button is attached to
159
+ */
160
+ update(options: InteractionReplyOptions): Promise<void>;
161
+ }
162
+ /**
163
+ * Select menu interaction
164
+ */
165
+ export declare class SelectMenuInteraction extends Interaction {
166
+ /** Select menu custom ID */
167
+ readonly customId: string;
168
+ /** Component type (always 3 for select menus) */
169
+ readonly componentType: number;
170
+ /** Selected values */
171
+ readonly values: string[];
172
+ /** Message the select menu is attached to */
173
+ readonly message?: any;
174
+ constructor(client: Client, data: APIInteraction);
175
+ /**
176
+ * Update the message the select menu is attached to
177
+ */
178
+ update(options: InteractionReplyOptions): Promise<void>;
179
+ }
180
+ /**
181
+ * Modal submit interaction
182
+ */
183
+ export declare class ModalSubmitInteraction extends Interaction {
184
+ /** Modal custom ID */
185
+ readonly customId: string;
186
+ /** Modal fields */
187
+ readonly fields: ModalFields;
188
+ constructor(client: Client, data: APIInteraction);
189
+ }
190
+ /**
191
+ * Modal fields helper
192
+ */
193
+ export declare class ModalFields {
194
+ private values;
195
+ constructor(values: string[]);
196
+ /**
197
+ * Get a text input value
198
+ */
199
+ getTextInputValue(customId: string): string | null;
200
+ }
201
+ export interface InteractionReplyOptions {
202
+ content?: string;
203
+ embeds?: APIEmbed[];
204
+ components?: any[];
205
+ ephemeral?: boolean;
206
+ files?: Array<{
207
+ name: string;
208
+ data: Buffer;
209
+ contentType?: string;
210
+ }>;
211
+ }
212
+ export interface AutocompleteChoice {
213
+ name: string;
214
+ value: string | number;
215
+ }
216
+ export interface ModalData {
217
+ custom_id: string;
218
+ title: string;
219
+ components: any[];
220
+ }
221
+ /**
222
+ * Create appropriate interaction class based on type
223
+ */
224
+ export declare function createInteraction(client: Client, data: APIInteraction): Interaction;