@discordjs/builders 0.7.0 → 0.9.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 (93) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +28 -8
  3. package/dist/index.d.ts +850 -17
  4. package/dist/index.js +4 -21
  5. package/dist/index.js.map +7 -1
  6. package/dist/index.mjs +4 -38
  7. package/dist/index.mjs.map +7 -0
  8. package/package.json +54 -42
  9. package/dist/index.d.ts.map +0 -1
  10. package/dist/interactions/contextMenuCommands/Assertions.d.ts +0 -6
  11. package/dist/interactions/contextMenuCommands/Assertions.d.ts.map +0 -1
  12. package/dist/interactions/contextMenuCommands/Assertions.js +0 -32
  13. package/dist/interactions/contextMenuCommands/Assertions.js.map +0 -1
  14. package/dist/interactions/contextMenuCommands/ContextMenuCommandBuilder.d.ts +0 -43
  15. package/dist/interactions/contextMenuCommands/ContextMenuCommandBuilder.d.ts.map +0 -1
  16. package/dist/interactions/contextMenuCommands/ContextMenuCommandBuilder.js +0 -85
  17. package/dist/interactions/contextMenuCommands/ContextMenuCommandBuilder.js.map +0 -1
  18. package/dist/interactions/slashCommands/Assertions.d.ts +0 -12
  19. package/dist/interactions/slashCommands/Assertions.d.ts.map +0 -1
  20. package/dist/interactions/slashCommands/Assertions.js +0 -63
  21. package/dist/interactions/slashCommands/Assertions.js.map +0 -1
  22. package/dist/interactions/slashCommands/SlashCommandBuilder.d.ts +0 -58
  23. package/dist/interactions/slashCommands/SlashCommandBuilder.d.ts.map +0 -1
  24. package/dist/interactions/slashCommands/SlashCommandBuilder.js +0 -113
  25. package/dist/interactions/slashCommands/SlashCommandBuilder.js.map +0 -1
  26. package/dist/interactions/slashCommands/SlashCommandSubcommands.d.ts +0 -54
  27. package/dist/interactions/slashCommands/SlashCommandSubcommands.d.ts.map +0 -1
  28. package/dist/interactions/slashCommands/SlashCommandSubcommands.js +0 -123
  29. package/dist/interactions/slashCommands/SlashCommandSubcommands.js.map +0 -1
  30. package/dist/interactions/slashCommands/mixins/CommandChannelOptionBase.d.ts +0 -18
  31. package/dist/interactions/slashCommands/mixins/CommandChannelOptionBase.d.ts.map +0 -1
  32. package/dist/interactions/slashCommands/mixins/CommandChannelOptionBase.js +0 -58
  33. package/dist/interactions/slashCommands/mixins/CommandChannelOptionBase.js.map +0 -1
  34. package/dist/interactions/slashCommands/mixins/CommandOptionBase.d.ts +0 -15
  35. package/dist/interactions/slashCommands/mixins/CommandOptionBase.d.ts.map +0 -1
  36. package/dist/interactions/slashCommands/mixins/CommandOptionBase.js +0 -48
  37. package/dist/interactions/slashCommands/mixins/CommandOptionBase.js.map +0 -1
  38. package/dist/interactions/slashCommands/mixins/CommandOptionWithChoices.d.ts +0 -49
  39. package/dist/interactions/slashCommands/mixins/CommandOptionWithChoices.d.ts.map +0 -1
  40. package/dist/interactions/slashCommands/mixins/CommandOptionWithChoices.js +0 -71
  41. package/dist/interactions/slashCommands/mixins/CommandOptionWithChoices.js.map +0 -1
  42. package/dist/interactions/slashCommands/mixins/CommandOptions.d.ts +0 -54
  43. package/dist/interactions/slashCommands/mixins/CommandOptions.d.ts.map +0 -1
  44. package/dist/interactions/slashCommands/mixins/CommandOptions.js +0 -91
  45. package/dist/interactions/slashCommands/mixins/CommandOptions.js.map +0 -1
  46. package/dist/interactions/slashCommands/mixins/NameAndDescription.d.ts +0 -15
  47. package/dist/interactions/slashCommands/mixins/NameAndDescription.d.ts.map +0 -1
  48. package/dist/interactions/slashCommands/mixins/NameAndDescription.js +0 -42
  49. package/dist/interactions/slashCommands/mixins/NameAndDescription.js.map +0 -1
  50. package/dist/interactions/slashCommands/options/boolean.d.ts +0 -7
  51. package/dist/interactions/slashCommands/options/boolean.d.ts.map +0 -1
  52. package/dist/interactions/slashCommands/options/boolean.js +0 -18
  53. package/dist/interactions/slashCommands/options/boolean.js.map +0 -1
  54. package/dist/interactions/slashCommands/options/channel.d.ts +0 -7
  55. package/dist/interactions/slashCommands/options/channel.d.ts.map +0 -1
  56. package/dist/interactions/slashCommands/options/channel.js +0 -18
  57. package/dist/interactions/slashCommands/options/channel.js.map +0 -1
  58. package/dist/interactions/slashCommands/options/integer.d.ts +0 -7
  59. package/dist/interactions/slashCommands/options/integer.d.ts.map +0 -1
  60. package/dist/interactions/slashCommands/options/integer.js +0 -18
  61. package/dist/interactions/slashCommands/options/integer.js.map +0 -1
  62. package/dist/interactions/slashCommands/options/mentionable.d.ts +0 -7
  63. package/dist/interactions/slashCommands/options/mentionable.d.ts.map +0 -1
  64. package/dist/interactions/slashCommands/options/mentionable.js +0 -18
  65. package/dist/interactions/slashCommands/options/mentionable.js.map +0 -1
  66. package/dist/interactions/slashCommands/options/number.d.ts +0 -7
  67. package/dist/interactions/slashCommands/options/number.d.ts.map +0 -1
  68. package/dist/interactions/slashCommands/options/number.js +0 -18
  69. package/dist/interactions/slashCommands/options/number.js.map +0 -1
  70. package/dist/interactions/slashCommands/options/role.d.ts +0 -7
  71. package/dist/interactions/slashCommands/options/role.d.ts.map +0 -1
  72. package/dist/interactions/slashCommands/options/role.js +0 -18
  73. package/dist/interactions/slashCommands/options/role.js.map +0 -1
  74. package/dist/interactions/slashCommands/options/string.d.ts +0 -7
  75. package/dist/interactions/slashCommands/options/string.d.ts.map +0 -1
  76. package/dist/interactions/slashCommands/options/string.js +0 -18
  77. package/dist/interactions/slashCommands/options/string.js.map +0 -1
  78. package/dist/interactions/slashCommands/options/user.d.ts +0 -7
  79. package/dist/interactions/slashCommands/options/user.d.ts.map +0 -1
  80. package/dist/interactions/slashCommands/options/user.js +0 -18
  81. package/dist/interactions/slashCommands/options/user.js.map +0 -1
  82. package/dist/messages/embed/Assertions.d.ts +0 -23
  83. package/dist/messages/embed/Assertions.d.ts.map +0 -1
  84. package/dist/messages/embed/Assertions.js +0 -26
  85. package/dist/messages/embed/Assertions.js.map +0 -1
  86. package/dist/messages/embed/Embed.d.ts +0 -140
  87. package/dist/messages/embed/Embed.d.ts.map +0 -1
  88. package/dist/messages/embed/Embed.js +0 -300
  89. package/dist/messages/embed/Embed.js.map +0 -1
  90. package/dist/messages/formatters.d.ts +0 -198
  91. package/dist/messages/formatters.d.ts.map +0 -1
  92. package/dist/messages/formatters.js +0 -181
  93. package/dist/messages/formatters.js.map +0 -1
@@ -1,300 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Embed = void 0;
4
- const tslib_1 = require("tslib");
5
- const ow_1 = (0, tslib_1.__importDefault)(require("ow"));
6
- const Assertions_1 = require("./Assertions");
7
- /**
8
- * Represents an embed in a message (image/video preview, rich embed, etc.)
9
- */
10
- class Embed {
11
- constructor(data = {}) {
12
- /**
13
- * An array of fields of this embed.
14
- */
15
- Object.defineProperty(this, "fields", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: void 0
20
- });
21
- /**
22
- * The embed title.
23
- */
24
- Object.defineProperty(this, "title", {
25
- enumerable: true,
26
- configurable: true,
27
- writable: true,
28
- value: void 0
29
- });
30
- /**
31
- * The embed description.
32
- */
33
- Object.defineProperty(this, "description", {
34
- enumerable: true,
35
- configurable: true,
36
- writable: true,
37
- value: void 0
38
- });
39
- /**
40
- * The embed url.
41
- */
42
- Object.defineProperty(this, "url", {
43
- enumerable: true,
44
- configurable: true,
45
- writable: true,
46
- value: void 0
47
- });
48
- /**
49
- * The embed color.
50
- */
51
- Object.defineProperty(this, "color", {
52
- enumerable: true,
53
- configurable: true,
54
- writable: true,
55
- value: void 0
56
- });
57
- /**
58
- * The timestamp of the embed in the ISO format.
59
- */
60
- Object.defineProperty(this, "timestamp", {
61
- enumerable: true,
62
- configurable: true,
63
- writable: true,
64
- value: void 0
65
- });
66
- /**
67
- * The embed thumbnail data.
68
- */
69
- Object.defineProperty(this, "thumbnail", {
70
- enumerable: true,
71
- configurable: true,
72
- writable: true,
73
- value: void 0
74
- });
75
- /**
76
- * The embed image data.
77
- */
78
- Object.defineProperty(this, "image", {
79
- enumerable: true,
80
- configurable: true,
81
- writable: true,
82
- value: void 0
83
- });
84
- /**
85
- * Received video data.
86
- */
87
- Object.defineProperty(this, "video", {
88
- enumerable: true,
89
- configurable: true,
90
- writable: true,
91
- value: void 0
92
- });
93
- /**
94
- * The embed author data.
95
- */
96
- Object.defineProperty(this, "author", {
97
- enumerable: true,
98
- configurable: true,
99
- writable: true,
100
- value: void 0
101
- });
102
- /**
103
- * Received data about the embed provider.
104
- */
105
- Object.defineProperty(this, "provider", {
106
- enumerable: true,
107
- configurable: true,
108
- writable: true,
109
- value: void 0
110
- });
111
- /**
112
- * The embed footer data.
113
- */
114
- Object.defineProperty(this, "footer", {
115
- enumerable: true,
116
- configurable: true,
117
- writable: true,
118
- value: void 0
119
- });
120
- this.title = data.title;
121
- this.description = data.description;
122
- this.url = data.url;
123
- this.color = data.color;
124
- this.thumbnail = data.thumbnail;
125
- this.image = data.image;
126
- this.video = data.video;
127
- this.author = data.author;
128
- this.provider = data.provider;
129
- this.footer = data.footer;
130
- this.fields = data.fields ?? [];
131
- if (data.timestamp)
132
- this.timestamp = new Date(data.timestamp).toISOString();
133
- }
134
- /**
135
- * The accumulated length for the embed title, description, fields, footer text, and author name.
136
- */
137
- get length() {
138
- return ((this.title?.length ?? 0) +
139
- (this.description?.length ?? 0) +
140
- this.fields.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) +
141
- (this.footer?.text.length ?? 0) +
142
- (this.author?.name.length ?? 0));
143
- }
144
- /**
145
- * Adds a field to the embed (max 25).
146
- * @param field The field to add.
147
- */
148
- addField(field) {
149
- return this.addFields(field);
150
- }
151
- /**
152
- * Adds fields to the embed (max 25).
153
- * @param fields The fields to add.
154
- */
155
- addFields(...fields) {
156
- // Data assertions
157
- (0, ow_1.default)(fields, 'fields', Assertions_1.embedFieldsArrayPredicate);
158
- // Ensure adding these fields won't exceed the 25 field limit
159
- (0, Assertions_1.validateFieldLength)(this.fields, fields.length);
160
- this.fields.push(...Embed.normalizeFields(...fields));
161
- return this;
162
- }
163
- /**
164
- * Removes, replaces, or inserts fields in the embed (max 25).
165
- * @param index The index to start at.
166
- * @param deleteCount The number of fields to remove.
167
- * @param fields The replacing field objects.
168
- */
169
- spliceFields(index, deleteCount, ...fields) {
170
- // Data assertions
171
- (0, ow_1.default)(fields, 'fields', Assertions_1.embedFieldsArrayPredicate);
172
- // Ensure adding these fields won't exceed the 25 field limit
173
- (0, Assertions_1.validateFieldLength)(this.fields, fields.length - deleteCount);
174
- this.fields.splice(index, deleteCount, ...Embed.normalizeFields(...fields));
175
- return this;
176
- }
177
- /**
178
- * Sets the author of this embed.
179
- * @param options The options for the author.
180
- */
181
- setAuthor(options) {
182
- if (options === null) {
183
- this.author = undefined;
184
- return this;
185
- }
186
- const { name, iconURL, url } = options;
187
- // Data assertions
188
- (0, ow_1.default)(name, 'name', Assertions_1.authorNamePredicate);
189
- (0, ow_1.default)(iconURL, 'iconURL', Assertions_1.urlPredicate);
190
- (0, ow_1.default)(url, 'url', Assertions_1.urlPredicate);
191
- this.author = { name, url, icon_url: iconURL };
192
- return this;
193
- }
194
- /**
195
- * Sets the color of this embed.
196
- * @param color The color of the embed.
197
- */
198
- setColor(color) {
199
- // Data assertions
200
- (0, ow_1.default)(color, 'color', Assertions_1.colorPredicate);
201
- this.color = color ?? undefined;
202
- return this;
203
- }
204
- /**
205
- * Sets the description of this embed.
206
- * @param description The description.
207
- */
208
- setDescription(description) {
209
- // Data assertions
210
- (0, ow_1.default)(description, 'description', Assertions_1.descriptionPredicate);
211
- this.description = description ?? undefined;
212
- return this;
213
- }
214
- /**
215
- * Sets the footer of this embed.
216
- * @param options The options for the footer.
217
- */
218
- setFooter(options) {
219
- if (options === null) {
220
- this.footer = undefined;
221
- return this;
222
- }
223
- const { text, iconURL } = options;
224
- // Data assertions
225
- (0, ow_1.default)(text, 'text', Assertions_1.footerTextPredicate);
226
- (0, ow_1.default)(iconURL, 'iconURL', Assertions_1.urlPredicate);
227
- this.footer = { text, icon_url: iconURL };
228
- return this;
229
- }
230
- /**
231
- * Sets the image of this embed.
232
- * @param url The URL of the image.
233
- */
234
- setImage(url) {
235
- // Data assertions
236
- (0, ow_1.default)(url, 'url', Assertions_1.urlPredicate);
237
- this.image = url ? { url } : undefined;
238
- return this;
239
- }
240
- /**
241
- * Sets the thumbnail of this embed.
242
- * @param url The URL of the thumbnail.
243
- */
244
- setThumbnail(url) {
245
- // Data assertions
246
- (0, ow_1.default)(url, 'url', Assertions_1.urlPredicate);
247
- this.thumbnail = url ? { url } : undefined;
248
- return this;
249
- }
250
- /**
251
- * Sets the timestamp of this embed.
252
- * @param timestamp The timestamp or date.
253
- */
254
- setTimestamp(timestamp = Date.now()) {
255
- // Data assertions
256
- (0, ow_1.default)(timestamp, 'timestamp', Assertions_1.timestampPredicate);
257
- this.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;
258
- return this;
259
- }
260
- /**
261
- * Sets the title of this embed.
262
- * @param title The title.
263
- */
264
- setTitle(title) {
265
- // Data assertions
266
- (0, ow_1.default)(title, 'title', Assertions_1.titlePredicate);
267
- this.title = title ?? undefined;
268
- return this;
269
- }
270
- /**
271
- * Sets the URL of this embed.
272
- * @param url The URL.
273
- */
274
- setURL(url) {
275
- // Data assertions
276
- (0, ow_1.default)(url, 'url', Assertions_1.urlPredicate);
277
- this.url = url ?? undefined;
278
- return this;
279
- }
280
- /**
281
- * Transforms the embed to a plain object.
282
- */
283
- toJSON() {
284
- return { ...this };
285
- }
286
- /**
287
- * Normalizes field input and resolves strings.
288
- * @param fields Fields to normalize.
289
- */
290
- static normalizeFields(...fields) {
291
- return fields.flat(Infinity).map((field) => {
292
- (0, ow_1.default)(field.name, 'field name', Assertions_1.fieldNamePredicate);
293
- (0, ow_1.default)(field.value, 'field value', Assertions_1.fieldValuePredicate);
294
- (0, ow_1.default)(field.inline, 'field inline', Assertions_1.fieldInlinePredicate);
295
- return { name: field.name, value: field.value, inline: field.inline ?? undefined };
296
- });
297
- }
298
- }
299
- exports.Embed = Embed;
300
- //# sourceMappingURL=Embed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Embed.js","sourceRoot":"/","sources":["messages/embed/Embed.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tAPIEmbed,\n\tAPIEmbedAuthor,\n\tAPIEmbedField,\n\tAPIEmbedFooter,\n\tAPIEmbedImage,\n\tAPIEmbedProvider,\n\tAPIEmbedThumbnail,\n\tAPIEmbedVideo,\n} from 'discord-api-types/v9';\nimport ow from 'ow';\nimport {\n\tauthorNamePredicate,\n\tcolorPredicate,\n\tdescriptionPredicate,\n\tembedFieldsArrayPredicate,\n\tfieldInlinePredicate,\n\tfieldNamePredicate,\n\tfieldValuePredicate,\n\tfooterTextPredicate,\n\ttimestampPredicate,\n\ttitlePredicate,\n\turlPredicate,\n\tvalidateFieldLength,\n} from './Assertions';\n\nexport interface AuthorOptions {\n\tname: string;\n\turl?: string;\n\ticonURL?: string;\n}\n\nexport interface FooterOptions {\n\ttext: string;\n\ticonURL?: string;\n}\n\n/**\n * Represents an embed in a message (image/video preview, rich embed, etc.)\n */\nexport class Embed implements APIEmbed {\n\t/**\n\t * An array of fields of this embed.\n\t */\n\tpublic fields: APIEmbedField[];\n\n\t/**\n\t * The embed title.\n\t */\n\tpublic title?: string;\n\n\t/**\n\t * The embed description.\n\t */\n\tpublic description?: string;\n\n\t/**\n\t * The embed url.\n\t */\n\tpublic url?: string;\n\n\t/**\n\t * The embed color.\n\t */\n\tpublic color?: number;\n\n\t/**\n\t * The timestamp of the embed in the ISO format.\n\t */\n\tpublic timestamp?: string;\n\n\t/**\n\t * The embed thumbnail data.\n\t */\n\tpublic thumbnail?: APIEmbedThumbnail;\n\n\t/**\n\t * The embed image data.\n\t */\n\tpublic image?: APIEmbedImage;\n\n\t/**\n\t * Received video data.\n\t */\n\tpublic video?: APIEmbedVideo;\n\n\t/**\n\t * The embed author data.\n\t */\n\tpublic author?: APIEmbedAuthor;\n\n\t/**\n\t * Received data about the embed provider.\n\t */\n\tpublic provider?: APIEmbedProvider;\n\n\t/**\n\t * The embed footer data.\n\t */\n\tpublic footer?: APIEmbedFooter;\n\n\tpublic constructor(data: APIEmbed = {}) {\n\t\tthis.title = data.title;\n\t\tthis.description = data.description;\n\t\tthis.url = data.url;\n\t\tthis.color = data.color;\n\t\tthis.thumbnail = data.thumbnail;\n\t\tthis.image = data.image;\n\t\tthis.video = data.video;\n\t\tthis.author = data.author;\n\t\tthis.provider = data.provider;\n\t\tthis.footer = data.footer;\n\t\tthis.fields = data.fields ?? [];\n\n\t\tif (data.timestamp) this.timestamp = new Date(data.timestamp).toISOString();\n\t}\n\n\t/**\n\t * The accumulated length for the embed title, description, fields, footer text, and author name.\n\t */\n\tpublic get length(): number {\n\t\treturn (\n\t\t\t(this.title?.length ?? 0) +\n\t\t\t(this.description?.length ?? 0) +\n\t\t\tthis.fields.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) +\n\t\t\t(this.footer?.text.length ?? 0) +\n\t\t\t(this.author?.name.length ?? 0)\n\t\t);\n\t}\n\n\t/**\n\t * Adds a field to the embed (max 25).\n\t * @param field The field to add.\n\t */\n\tpublic addField(field: APIEmbedField): this {\n\t\treturn this.addFields(field);\n\t}\n\n\t/**\n\t * Adds fields to the embed (max 25).\n\t * @param fields The fields to add.\n\t */\n\tpublic addFields(...fields: APIEmbedField[]): this {\n\t\t// Data assertions\n\t\tow(fields, 'fields', embedFieldsArrayPredicate);\n\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(this.fields, fields.length);\n\n\t\tthis.fields.push(...Embed.normalizeFields(...fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts fields in the embed (max 25).\n\t * @param index The index to start at.\n\t * @param deleteCount The number of fields to remove.\n\t * @param fields The replacing field objects.\n\t */\n\tpublic spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {\n\t\t// Data assertions\n\t\tow(fields, 'fields', embedFieldsArrayPredicate);\n\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(this.fields, fields.length - deleteCount);\n\n\t\tthis.fields.splice(index, deleteCount, ...Embed.normalizeFields(...fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the author of this embed.\n\t * @param options The options for the author.\n\t */\n\tpublic setAuthor(options: AuthorOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.author = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\tconst { name, iconURL, url } = options;\n\t\t// Data assertions\n\t\tow(name, 'name', authorNamePredicate);\n\t\tow(iconURL, 'iconURL', urlPredicate);\n\t\tow(url, 'url', urlPredicate);\n\n\t\tthis.author = { name, url, icon_url: iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the color of this embed.\n\t * @param color The color of the embed.\n\t */\n\tpublic setColor(color: number | null): this {\n\t\t// Data assertions\n\t\tow(color, 'color', colorPredicate);\n\n\t\tthis.color = color ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this embed.\n\t * @param description The description.\n\t */\n\tpublic setDescription(description: string | null): this {\n\t\t// Data assertions\n\t\tow(description, 'description', descriptionPredicate);\n\n\t\tthis.description = description ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the footer of this embed.\n\t * @param options The options for the footer.\n\t */\n\tpublic setFooter(options: FooterOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.footer = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\tconst { text, iconURL } = options;\n\t\t// Data assertions\n\t\tow(text, 'text', footerTextPredicate);\n\t\tow(iconURL, 'iconURL', urlPredicate);\n\n\t\tthis.footer = { text, icon_url: iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the image of this embed.\n\t * @param url The URL of the image.\n\t */\n\tpublic setImage(url: string | null): this {\n\t\t// Data assertions\n\t\tow(url, 'url', urlPredicate);\n\n\t\tthis.image = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the thumbnail of this embed.\n\t * @param url The URL of the thumbnail.\n\t */\n\tpublic setThumbnail(url: string | null): this {\n\t\t// Data assertions\n\t\tow(url, 'url', urlPredicate);\n\n\t\tthis.thumbnail = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the timestamp of this embed.\n\t * @param timestamp The timestamp or date.\n\t */\n\tpublic setTimestamp(timestamp: number | Date | null = Date.now()): this {\n\t\t// Data assertions\n\t\tow(timestamp, 'timestamp', timestampPredicate);\n\n\t\tthis.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the title of this embed.\n\t * @param title The title.\n\t */\n\tpublic setTitle(title: string | null): this {\n\t\t// Data assertions\n\t\tow(title, 'title', titlePredicate);\n\n\t\tthis.title = title ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL of this embed.\n\t * @param url The URL.\n\t */\n\tpublic setURL(url: string | null): this {\n\t\t// Data assertions\n\t\tow(url, 'url', urlPredicate);\n\n\t\tthis.url = url ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Transforms the embed to a plain object.\n\t */\n\tpublic toJSON(): APIEmbed {\n\t\treturn { ...this };\n\t}\n\n\t/**\n\t * Normalizes field input and resolves strings.\n\t * @param fields Fields to normalize.\n\t */\n\tpublic static normalizeFields(...fields: APIEmbedField[]): APIEmbedField[] {\n\t\treturn fields.flat(Infinity).map((field) => {\n\t\t\tow(field.name, 'field name', fieldNamePredicate);\n\t\t\tow(field.value, 'field value', fieldValuePredicate);\n\t\t\tow(field.inline, 'field inline', fieldInlinePredicate);\n\n\t\t\treturn { name: field.name, value: field.value, inline: field.inline ?? undefined };\n\t\t});\n\t}\n}\n"]}
@@ -1,198 +0,0 @@
1
- /// <reference types="node" />
2
- import type { Snowflake } from 'discord-api-types/globals';
3
- import type { URL } from 'url';
4
- /**
5
- * Wraps the content inside a codeblock with no language.
6
- * @param content The content to wrap.
7
- */
8
- export declare function codeBlock<C extends string>(content: C): `\`\`\`\n${C}\`\`\``;
9
- /**
10
- * Wraps the content inside a codeblock with the specified language.
11
- * @param language The language for the codeblock.
12
- * @param content The content to wrap.
13
- */
14
- export declare function codeBlock<L extends string, C extends string>(language: L, content: C): `\`\`\`${L}\n${C}\`\`\``;
15
- /**
16
- * Wraps the content inside \`backticks\`, which formats it as inline code.
17
- * @param content The content to wrap.
18
- */
19
- export declare function inlineCode<C extends string>(content: C): `\`${C}\``;
20
- /**
21
- * Formats the content into italic text.
22
- * @param content The content to wrap.
23
- */
24
- export declare function italic<C extends string>(content: C): `_${C}_`;
25
- /**
26
- * Formats the content into bold text.
27
- * @param content The content to wrap.
28
- */
29
- export declare function bold<C extends string>(content: C): `**${C}**`;
30
- /**
31
- * Formats the content into underscored text.
32
- * @param content The content to wrap.
33
- */
34
- export declare function underscore<C extends string>(content: C): `__${C}__`;
35
- /**
36
- * Formats the content into strike-through text.
37
- * @param content The content to wrap.
38
- */
39
- export declare function strikethrough<C extends string>(content: C): `~~${C}~~`;
40
- /**
41
- * Formats the content into a quote. This needs to be at the start of the line for Discord to format it.
42
- * @param content The content to wrap.
43
- */
44
- export declare function quote<C extends string>(content: C): `> ${C}`;
45
- /**
46
- * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it.
47
- * @param content The content to wrap.
48
- */
49
- export declare function blockQuote<C extends string>(content: C): `>>> ${C}`;
50
- /**
51
- * Wraps the URL into `<>`, which stops it from embedding.
52
- * @param url The URL to wrap.
53
- */
54
- export declare function hideLinkEmbed<C extends string>(url: C): `<${C}>`;
55
- /**
56
- * Wraps the URL into `<>`, which stops it from embedding.
57
- * @param url The URL to wrap.
58
- */
59
- export declare function hideLinkEmbed(url: URL): `<${string}>`;
60
- /**
61
- * Formats the content and the URL into a masked URL.
62
- * @param content The content to display.
63
- * @param url The URL the content links to.
64
- */
65
- export declare function hyperlink<C extends string>(content: C, url: URL): `[${C}](${string})`;
66
- /**
67
- * Formats the content and the URL into a masked URL.
68
- * @param content The content to display.
69
- * @param url The URL the content links to.
70
- */
71
- export declare function hyperlink<C extends string, U extends string>(content: C, url: U): `[${C}](${U})`;
72
- /**
73
- * Formats the content and the URL into a masked URL.
74
- * @param content The content to display.
75
- * @param url The URL the content links to.
76
- * @param title The title shown when hovering on the masked link.
77
- */
78
- export declare function hyperlink<C extends string, T extends string>(content: C, url: URL, title: T): `[${C}](${string} "${T}")`;
79
- /**
80
- * Formats the content and the URL into a masked URL.
81
- * @param content The content to display.
82
- * @param url The URL the content links to.
83
- * @param title The title shown when hovering on the masked link.
84
- */
85
- export declare function hyperlink<C extends string, U extends string, T extends string>(content: C, url: U, title: T): `[${C}](${U} "${T}")`;
86
- /**
87
- * Wraps the content inside spoiler (hidden text).
88
- * @param content The content to wrap.
89
- */
90
- export declare function spoiler<C extends string>(content: C): `||${C}||`;
91
- /**
92
- * Formats a user ID into a user mention.
93
- * @param userId The user ID to format.
94
- */
95
- export declare function userMention<C extends Snowflake>(userId: C): `<@${C}>`;
96
- /**
97
- * Formats a user ID into a member-nickname mention.
98
- * @param memberId The user ID to format.
99
- */
100
- export declare function memberNicknameMention<C extends Snowflake>(memberId: C): `<@!${C}>`;
101
- /**
102
- * Formats a channel ID into a channel mention.
103
- * @param channelId The channel ID to format.
104
- */
105
- export declare function channelMention<C extends Snowflake>(channelId: C): `<#${C}>`;
106
- /**
107
- * Formats a role ID into a role mention.
108
- * @param roleId The role ID to format.
109
- */
110
- export declare function roleMention<C extends Snowflake>(roleId: C): `<@&${C}>`;
111
- /**
112
- * Formats an emoji ID into a fully qualified emoji identifier
113
- * @param emojiId The emoji ID to format.
114
- */
115
- export declare function formatEmoji<C extends Snowflake>(emojiId: C, animated?: false): `<:_:${C}>`;
116
- /**
117
- * Formats an emoji ID into a fully qualified emoji identifier
118
- * @param emojiId The emoji ID to format.
119
- * @param animated Whether the emoji is animated or not. Defaults to `false`
120
- */
121
- export declare function formatEmoji<C extends Snowflake>(emojiId: C, animated?: true): `<a:_:${C}>`;
122
- /**
123
- * Formats a date into a short date-time string.
124
- * @param date The date to format, defaults to the current time.
125
- */
126
- export declare function time(date?: Date): `<t:${bigint}>`;
127
- /**
128
- * Formats a date given a format style.
129
- * @param date The date to format.
130
- * @param style The style to use.
131
- */
132
- export declare function time<S extends TimestampStylesString>(date: Date, style: S): `<t:${bigint}:${S}>`;
133
- /**
134
- * Formats the given timestamp into a short date-time string.
135
- * @param seconds The time to format, represents an UNIX timestamp in seconds.
136
- */
137
- export declare function time<C extends number>(seconds: C): `<t:${C}>`;
138
- /**
139
- * Formats the given timestamp into a short date-time string.
140
- * @param seconds The time to format, represents an UNIX timestamp in seconds.
141
- * @param style The style to use.
142
- */
143
- export declare function time<C extends number, S extends TimestampStylesString>(seconds: C, style: S): `<t:${C}:${S}>`;
144
- /**
145
- * The [message formatting timestamp styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord.
146
- */
147
- export declare const TimestampStyles: {
148
- /**
149
- * Short time format, consisting of hours and minutes, e.g. 16:20.
150
- */
151
- readonly ShortTime: "t";
152
- /**
153
- * Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30.
154
- */
155
- readonly LongTime: "T";
156
- /**
157
- * Short date format, consisting of day, month, and year, e.g. 20/04/2021.
158
- */
159
- readonly ShortDate: "d";
160
- /**
161
- * Long date format, consisting of day, month, and year, e.g. 20 April 2021.
162
- */
163
- readonly LongDate: "D";
164
- /**
165
- * Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20.
166
- */
167
- readonly ShortDateTime: "f";
168
- /**
169
- * Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20.
170
- */
171
- readonly LongDateTime: "F";
172
- /**
173
- * Relative time format, consisting of a relative duration format, e.g. 2 months ago.
174
- */
175
- readonly RelativeTime: "R";
176
- };
177
- /**
178
- * The possible values, see {@link TimestampStyles} for more information.
179
- */
180
- export declare type TimestampStylesString = typeof TimestampStyles[keyof typeof TimestampStyles];
181
- /**
182
- * An enum with all the available faces from Discord's native slash commands
183
- */
184
- export declare enum Faces {
185
- /**
186
- * ¯\\_(ツ)\\_/¯
187
- */
188
- Shrug = "\u00AF\\_(\u30C4)\\_/\u00AF",
189
- /**
190
- * (╯°□°)╯︵ ┻━┻
191
- */
192
- Tableflip = "(\u256F\u00B0\u25A1\u00B0\uFF09\u256F\uFE35 \u253B\u2501\u253B",
193
- /**
194
- * ┬─┬ ノ( ゜-゜ノ)
195
- */
196
- Unflip = "\u252C\u2500\u252C \u30CE( \u309C-\u309C\u30CE)"
197
- }
198
- //# sourceMappingURL=formatters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"/","sources":["messages/formatters.ts"],"names":[],"mappings":"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"}