apexify.js 1.2.1

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 (75) hide show
  1. package/README.md +1117 -0
  2. package/index.js +111 -0
  3. package/lib/ai/apexAI.js +312 -0
  4. package/lib/ai/functions/chunkString.js +8 -0
  5. package/lib/ai/functions/draw.js +347 -0
  6. package/lib/ai/functions/generateVoiceResponse.js +239 -0
  7. package/lib/ai/functions/processImageAttachments.js +93 -0
  8. package/lib/ai/functions/processMessageContent.js +48 -0
  9. package/lib/ai/functions/readFiles.js +95 -0
  10. package/lib/ai/functions/shouldDrawImage.js +12 -0
  11. package/lib/ai/utils.js +18 -0
  12. package/lib/canvas/ApexPainter.js +1194 -0
  13. package/lib/canvas/themes/level ara.ttf +0 -0
  14. package/lib/canvas/themes/levelFont.ttf +0 -0
  15. package/lib/canvas/themes/levels-card.js +872 -0
  16. package/lib/canvas/themes/music-card.js +342 -0
  17. package/lib/canvas/themes/numbers.ttf +0 -0
  18. package/lib/canvas/themes/tajawal.ttf +0 -0
  19. package/lib/database/MongoDB.js +126 -0
  20. package/lib/database/NanoDB.js +1318 -0
  21. package/lib/database/mongoDb/aggregate.js +120 -0
  22. package/lib/database/mongoDb/countDocs.js +115 -0
  23. package/lib/database/mongoDb/createCollection.js +125 -0
  24. package/lib/database/mongoDb/dataSize.js +89 -0
  25. package/lib/database/mongoDb/distinct.js +110 -0
  26. package/lib/database/mongoDb/drop.js +76 -0
  27. package/lib/database/mongoDb/find.js +122 -0
  28. package/lib/database/mongoDb/geoNear.js +91 -0
  29. package/lib/database/mongoDb/index.js +71 -0
  30. package/lib/database/mongoDb/listCollections.js +81 -0
  31. package/lib/database/mongoDb/migrateAndPrune.js +89 -0
  32. package/lib/database/mongoDb/migrateData.js +79 -0
  33. package/lib/database/mongoDb/remove.js +73 -0
  34. package/lib/database/mongoDb/removeMany.js +73 -0
  35. package/lib/database/mongoDb/removeManyExcept.js +91 -0
  36. package/lib/database/mongoDb/removeSpecific.js +93 -0
  37. package/lib/database/mongoDb/save.js +94 -0
  38. package/lib/database/mongoDb/searchMany.js +109 -0
  39. package/lib/database/mongoDb/textSearch.js +88 -0
  40. package/lib/database/mongoDb/updateAll.js +80 -0
  41. package/lib/database/mongoDb/updateAllExcept.js +108 -0
  42. package/lib/database/mongoDb/updateData.js +106 -0
  43. package/lib/database/nanoDb/fetchData.js +39 -0
  44. package/lib/database/nanoDb/removeField.js +46 -0
  45. package/lib/database/nanoDb/saveData.js +68 -0
  46. package/lib/database/nanoDb/updateFilter.js +24 -0
  47. package/lib/database/ready-schemas.js +245 -0
  48. package/lib/database/utils.js +58 -0
  49. package/lib/discord/discord-build/commands-(prefix)/music/functions/buttons.js +361 -0
  50. package/lib/discord/discord-build/commands-(prefix)/music/functions/end.js +58 -0
  51. package/lib/discord/discord-build/commands-(prefix)/music/functions/start.js +115 -0
  52. package/lib/discord/discord-build/commands-(prefix)/music/play.js +152 -0
  53. package/lib/discord/discord-build/commands-(prefix)/music/previous.js +82 -0
  54. package/lib/discord/discord-build/commands-(prefix)/music/resume.js +93 -0
  55. package/lib/discord/discord-build/commands-(prefix)/music/skip.js +82 -0
  56. package/lib/discord/discord-build/commands-(prefix)/music/stop.js +79 -0
  57. package/lib/discord/discord-build/components/buttons.js +75 -0
  58. package/lib/discord/discord-build/components/menus.js +81 -0
  59. package/lib/discord/discord-build/components/paginator.js +156 -0
  60. package/lib/discord/discord-build/components/permsChecker.js +81 -0
  61. package/lib/discord/discord-build/utils.js +21 -0
  62. package/lib/discord/events/eventer.js +100 -0
  63. package/lib/discord/events/handler/drawMenu.js +351 -0
  64. package/lib/discord/events/handler/tools.js +652 -0
  65. package/lib/discord/events/prefixRegister.js +136 -0
  66. package/lib/discord/events/prefixResponder.js +163 -0
  67. package/lib/discord/events/slashRegister.js +199 -0
  68. package/lib/discord/events/slashResponder.js +108 -0
  69. package/lib/discord/events/starter.js +335 -0
  70. package/lib/discord/functions/perms.js +19 -0
  71. package/lib/discord/utils.js +6 -0
  72. package/lib/general-functions/discord/type-writer.js +77 -0
  73. package/lib/general-functions/utils.js +0 -0
  74. package/lib/utils.js +90 -0
  75. package/package.json +118 -0
package/README.md ADDED
@@ -0,0 +1,1117 @@
1
+ ### Jedi-Studio Introduce
2
+ Greetings everyone! 🌟 This marks the release of a beta version for our package. If you encounter any issues or need assistance, feel free to reach out. Direct message me on Discord at `jedi.79` (ID: 1130583393176920095).
3
+
4
+ # 🚀 Getting Started
5
+ <details>
6
+
7
+ - If you're new and facing issues or unable to register and execute commands (slash / prefix).
8
+ - Use the code snippet below (Note: This may slightly increase bot latency by approximately 50ms).
9
+ ```javascript
10
+ const { Client, GatewayIntentBits, Partials } = require("discord.js");
11
+ const { starter } = require('apexify.js');
12
+ const path = require('path');
13
+
14
+ const client = new Client({
15
+ intents: Object.keys(GatewayIntentBits).map((a)=>{
16
+ return GatewayIntentBits[a]
17
+ }),
18
+ partials: Object.values(Partials),
19
+ });
20
+
21
+ const token = process.env.token;
22
+ const eventsPath = path.join(__dirname, 'src', 'events');
23
+ const prefixCommandPath = path.join(__dirname, 'src', 'prefix');
24
+
25
+ const options = {
26
+ status: 'online', // idle, online, dnd
27
+ name: 'Playing with commands',
28
+ type: 0, // type is for activity (Playing, Watching, Custom , Listening, etc.)
29
+ botName: 'tools', // bot name
30
+ botAvatar: './pfp.jpeg', // set your bot avatar as a URL or local file (GIF also works)
31
+ eventsPath,
32
+
33
+ // Note: Don't provide guildId or put it in the options if you set global as true
34
+ slashCommandPath: {
35
+ baseDir: __dirname, // need to be provided to read your commands path
36
+ path: './src/slash',
37
+ global: true, // true for making slash commands global
38
+ guildId: '', // guild if global is false
39
+ logsId: '', // channel ID for commands log
40
+ },
41
+ prefixCommandPath: {
42
+ path: prefixCommandPath, // your prefix commands path
43
+ logsId: '', // channel ID for commands log
44
+ prefix: '!', // prefix of the bot
45
+ },
46
+ lavalink: {
47
+ // Lavalink configuration for music
48
+ nodes: [],
49
+ search: 'ytmsearch', // (ytmsearch) => YouTube musics || (spsearch) => Spotify musics
50
+ version: 'v4', // your Lavalink version
51
+ },
52
+ mongo: {
53
+ mongoURI: '', // Your MongoDB URI for connecting to MongoDB
54
+ dataName: '', // Your Database name to create in MongoDB
55
+ },
56
+ webView: {///creating aport using express
57
+ port: 3000,
58
+ hostname: 'jedi-studio.com'
59
+ middleware:,
60
+ routs:
61
+ }
62
+ };
63
+
64
+ starter(client, token, options);
65
+ ```
66
+ </details>
67
+
68
+
69
+ ## 🚀 Usage Guidelines 🤖
70
+
71
+ # Ai Chat & Imagine
72
+ <details>
73
+
74
+ For a standard reply without AI images or voice messages, set both `draw` and `voice` to `false`. Activate voice replies and AI images by setting them to `true`. Trigger the bot to draw AI images with specific words or phrases using `drawTrigger`.
75
+
76
+ ```javascript
77
+ // Use this for js files (cjs modules)
78
+ const { apexAI } = require('apexify.js');
79
+
80
+ // For es module (.mjs/(.js if "type": "module" in package.json) or ts
81
+ import { apexAI } from 'apexify.js';
82
+
83
+ const allowedChannelId = 'Channel_ID';
84
+ client.on('messageCreate', async (message) => {
85
+ if (message.author.bot || message.channel.id !== allowedChannelId) return;
86
+
87
+ await apexAI(message, {
88
+ voice: false,///for voice replies
89
+ voiceModel: "apexAI", //apexAI, google, zenithAi
90
+ voice_code: "en-US-3", ///only if voiceModel zenithAi
91
+ apiKey: "", ///only if voiceModel zenithAi/apexAI (join the support server for more info)
92
+ type: "b", ///only if voiceModel apexAI (a, b, c, d, e, f, g, h) those letters you can use
93
+ draw: true, // Enable AI images
94
+ drawTrigger: ['create', 'draw', 'imagine', 'ارسم'],
95
+ imageModel: 'prodia', // Choose AI image generator (check the end of the page for modals)
96
+ chatModel: 'v3-32k', // Choose chat model (check the end of the page for modals)
97
+ keywords: ['bot name', 'your name', 'who are you'],
98
+ keywordResponses: {
99
+ 'bot name': 'My name is apexAI, and I was developed by Elias79.',
100
+ 'your name': 'I am known as apexAI, created by Elias79.',
101
+ 'who are you': 'I am apexAI, an AI created by Elias79.',
102
+ },
103
+ loadingMessage: null,/// a message being sent while generating response
104
+ nsfw: true, ////Prevent generating ai images (NSFW)
105
+ readFiles: true,///Read pdf/txt files
106
+ });
107
+ });
108
+ ```
109
+ </details>
110
+
111
+
112
+ ## 📊 Database MongoDb (Online) 📁
113
+ <details>
114
+
115
+ - To connect to MongoDB/Mongoose, provide your URL and name your database. Follow these steps:
116
+
117
+ ```js
118
+ ///for cjs module (.cjs/.js)
119
+ const { mongoConnect } = require('apexify.js');
120
+ ///for es module (.mjs/(.js if "type": "module" in package.json) or ts
121
+ import { mongoConnect } from 'apexify.js';
122
+
123
+ // Connect to MongoDB
124
+ const mongoSuccess = await mongoConnect('mongoURI', 'dbName');
125
+
126
+ // Access connected databases using getDb functions
127
+ const mongoDb = getDb();
128
+
129
+ /*----------------------------------------*/
130
+ //if you wanted to use your database to save/edit/delete then use this example below
131
+
132
+ // Example usage:
133
+
134
+ const { save, updateData, find, remove, removeSpecific } = require('apexify.js');
135
+
136
+ ///# Save (insertOne)
137
+ const collectionName = 'exampleCollection';
138
+ const document = { key: 'value' };
139
+ const options = {
140
+ uniqueFields: ['key'], // Example unique field
141
+ };
142
+ // Saving the document to MongoDB with options
143
+ const savedDocument = await save(collectionName, document, options);
144
+
145
+ ///# Find (findOne)
146
+ const collectionName = 'exampleCollection';
147
+ const filter = { _id: '6063b0f4e8e8b652780e97e0' }; // Example filter, you can customize it
148
+ const projection = { name: 1, age: 1 }; // Example projection, you can customize it
149
+ const options = {
150
+ sort: { age: -1 }, // Example sort option, you can customize it
151
+ limit: 5, // Example limit option, you can customize it
152
+ };
153
+ // Finding a document in MongoDB with options
154
+ const foundDocument = await find(collectionName, filter, projection, options);
155
+
156
+ ///# SearchMany (find().toArray)
157
+ const collectionFilters = [
158
+ { collectionName: 'collection1', displayment: 5, filter: { status: 'active' } },
159
+ { collectionName: 'collection2', displayment: null, filter: { type: 'public' } },
160
+ // Add more collection filters as needed to search for
161
+ ];
162
+ // Searching for documents in multiple collections with specific filters
163
+ const searchResults = await searchMany(collectionFilters);
164
+
165
+
166
+ ///# Remove (deleteOne)
167
+ const collectionName = 'exampleCollection';
168
+ const filter = { _id: '6063b0f4e8e8b652780e97e0' }; // Example filter, you can customize it
169
+ // Removing a document from MongoDB
170
+ const removalResult = await remove(collectionName, filter);//remove the document which mathces the filter
171
+
172
+ ///# RemoveSpecific (deleteOne(filter))
173
+ const collectionName = 'exampleCollection';
174
+ const filter = { _id: '6063b0f4e8e8b652780e97e0', name: 'John Doe' }; // Example filter, you can customize it
175
+ const keyToRemove = { name: 1 }; // Example key to remove, you can customize it
176
+ // Removing a document from MongoDB with specific keys removed
177
+ const removalResult = await removeSpecific(collectionName, filter, keyToRemove);//remove the key without remvoe the full document
178
+
179
+ ///# RemoveMany (deleteMany)
180
+ const collectionName = 'exampleCollection';
181
+ const filter = { status: 'inactive' }; // Example filter, you can customize it
182
+ // Removing multiple documents from MongoDB based on a filter
183
+ const removalResult = await removeMany(collectionName, filter);
184
+
185
+ ///# UpdateData (updateOne)
186
+ const collectionName = 'yourCollectionName'; // Replace with your actual collection name
187
+ const filter = { _id: 'yourDocumentId', age: 23, name: 'Elias' }; // Replace with your actual filter criteria
188
+ const update = { age: 19, gender: 'male' }; // Replace with your actual update data
189
+ const uniqueFields = ['field1', 'field2']; // Replace with your unique fields, if any!
190
+ // Updating document data in the specified collection
191
+ const updateResult = await updateData(collectionName, filter, update, uniqueFields);
192
+
193
+ ///# UpdateAll (updateMany)
194
+ const collectionName = 'yourCollectionName'; // Replace with your actual collection name
195
+ const filter = { level: 20, serverId: guildId, userId: userId }; // Replace with your actual filter criteria
196
+ const update = { level: 31 }; // Replace with your actual update data
197
+ const uniqueFields = ['userId', 'serverId']; // Replace with your unique fields, if any!
198
+ // Updating all documents matching the filter in the specified collection
199
+ const updateResult = await updateAll(collectionName, filter, update, options);
200
+
201
+ ///# MigrateData
202
+ const sourceCollection = 'yourSourceCollection'; // Replace with your actual source collection name
203
+ const destinationCollection = 'yourDestinationCollection'; // Replace with your actual destination collection name
204
+ // Transferring data from the source collection to the destination collection
205
+ const transferResult = await migrateData(sourceCollection, destinationCollection);
206
+
207
+ ///# MigrateAndPrune
208
+ const sourceCollection = 'yourSourceCollection'; // Replace with your actual source collection name
209
+ const destinationCollection = 'yourDestinationCollection'; // Replace with your actual destination collection name
210
+ // Transferring data from the source collection to the destination collection
211
+ const transferResult = await migrateAndPrune(sourceCollection, destinationCollection);
212
+
213
+ ///# Drop (drop)
214
+ const dropCollectiom = 'collectionToRemove'; // Replace with your actual collection name
215
+ // Removing collection from mongoDb
216
+ const dropResults = await drop(dropCollectiom);
217
+
218
+ ///# DataSize
219
+ const dataToCheck = 'collectioNameToCheck'; // Replace with your actual collection name
220
+ // Check collection size in db
221
+ const size = await dataSize(dataToCheck);
222
+
223
+ ```
224
+ </details>
225
+
226
+ ## 📊 Database NanoDb (local) 📁
227
+ <details>
228
+
229
+ - NanoDb is specially made for apexify library to make database easy for all (json database)
230
+
231
+ ```js
232
+ ///for cjs module (.cjs/.js)
233
+ const { NanoDb } = require('apexify.js');
234
+ ///for es module (.mjs/(.js if "type": "module" in package.json) or ts
235
+ import { NanoDb } from 'apexify.js';
236
+
237
+ /// Setting Which data json to configure
238
+ const db = awai NanoDb('path/file/to/json'); // Example: ../data.json
239
+
240
+ ///# AddOne (inserting new data)
241
+ const result = await db.addOne({ userId: , serverId: , name: , age: 27}, { uniqueKeys: ['userId', 'serverId'] });
242
+
243
+ ///# FindData (search for single document)
244
+ const result = await db.findData({ username: 'john', age: 40 });
245
+
246
+ ///# DisplayData (display data array)
247
+ const displayOptions = {
248
+ displayment: 10,//display how many documents
249
+ filters: {
250
+ country: 'usa'///your filter
251
+ },
252
+ page: 1,
253
+ pageSize: 10,
254
+ sortBy: 'size', // Replace with the actual field you want to sort by
255
+ sortOrder: 'asc', // or 'desc' asc => ascending, desc => descending
256
+ };
257
+
258
+ // Displaying data using the displayData method
259
+ const result = await db.displayData(displayOptions);
260
+
261
+ ///# RemoveOne (remove a single key from single document)
262
+ const filterQuery = {
263
+ xp: 1000 => assign it 'any' if you dont have specific value
264
+ };
265
+
266
+ ///# RemoveOne (remove a single key from a single document)
267
+ const removeFilter = {
268
+ level: 'any'
269
+ };
270
+ // Removing fields using the removeOne method
271
+ const result = await db.removeOne(filterQuery, removeFilter);
272
+
273
+ ///# RemoveDoc (remove a a full document)
274
+ const result = await db.removeDoc({ userId: value, serverId: value });
275
+
276
+
277
+ ///# UpdatData (update a single document in the json)
278
+ const result = await db.updateData({ userId: value, validate: value}, { validate: newValue });
279
+
280
+ ///# UpdateMany (update a many documents in the json)
281
+ const result = await db.updateMany({ validate: value, session: value }, { session: newvalue });
282
+
283
+ ///# Drop (remove whole data in json)
284
+ const result = await db.drop();
285
+
286
+ ```
287
+ </details>
288
+
289
+ ## 📸 Manipulating Images Using Canvas 🎨
290
+ <details>
291
+ Add images, shapes, and effects to images with ease!
292
+
293
+ ```js
294
+ //You can use import for es module/.mjs
295
+ const { ApexPainter } = require('apexify.js');
296
+
297
+
298
+ const paintImage = new ApexPainter();
299
+
300
+
301
+ ///Creating a background
302
+ const canvasOptions = {
303
+ width: 1200,//background width
304
+ height: 300,//background height
305
+ customBg: '',/// it can be URL only for now and if used plz dont use bgColor or bgGradient
306
+ backgroundColor: '#3498db', // Example color (blue) or use 'transparent' for no backgound color
307
+ backgroundGradient: {////Adding a gradient instead of constant color
308
+ type: 'linear',/// change to 'radial' if you want gradient start from middle
309
+ startX: 0,
310
+ startY: 0,
311
+ startRadius: 0,///add if radial only!
312
+ endRadius: 0,///add if radial only!
313
+ endX: 100,
314
+ endY: 0,
315
+ colors: [
316
+ { stop: 0, color: 'red' },
317
+ { stop: 0.5, color: 'green' },
318
+ { stop: 1, color: 'blue' },
319
+ ///add more colors if needed
320
+ ],
321
+ },
322
+ borderRadius: 0,///adding a radius to create a curvy edges or use 'circular' to make it a circle
323
+ };
324
+
325
+
326
+ ////
327
+ const images = [
328
+ {
329
+ source: 'square',///drawing shapes as images. We only support those shapes ('square', 'triangle', 'circle', 'pentagon').
330
+ x: 385,///positions on background horizontally.
331
+ y: 225,///positions on background vertically.
332
+ rotate: 0,//rotate only applyed for shapes.
333
+ filled: true,///to fill the shape if true.
334
+ width: 500,///shape width.
335
+ height: 80,//shape height.
336
+ borderRadius: 35,///adding a radius to create a curvy edges or use 'circular' to make it a circle.
337
+ color: 'rgba(0, 0, 0, 0.4)',///only being applied for shapes (filling the shape with the provided color).
338
+ gradient:, ////Adding a gradient instead of constant color (used same way as in canvas (only works with shapes).
339
+ stroke: {//Adding stroke
340
+ color: '#498afc',//color of the stroke
341
+ width: 5,//size of the stroke.
342
+ borderRadius: 35,///adding a radius to create a curvy edges or use 'circular' to make it a circle.
343
+ },
344
+
345
+ },
346
+ {
347
+ source: 'square',
348
+ x: 395,
349
+ y: 235,
350
+ rotate: 0,
351
+ filled: true,
352
+ width: 440,
353
+ height: 60,
354
+ borderRadius: 35,
355
+ gradient: {
356
+ type: 'linear',
357
+ startX: 0,
358
+ startY: 0,
359
+ endX: 100,
360
+ endY: 0,
361
+ colors: [
362
+ { stop: 0, color: 'red' },
363
+ { stop: 0.5, color: 'green' },
364
+ { stop: 1, color: 'blue' },
365
+ ],
366
+ },
367
+ },
368
+ {
369
+ source: 'local/file/path || image url',//you can provide an image url or local path and for images styling you can use same as above in shapes except for rotate and gradient which won't work.
370
+ x: 120,
371
+ y: 120,
372
+ width: 210,
373
+ height: 210,
374
+ borderRadius: 20,///adding a radius to create a curvy edges or use 'circular' to make it a circle.
375
+ shadow: {
376
+ color: null,//shadow color.
377
+ offsetX: 0,///shadow position off from image horizontally.
378
+ offsetY: 0,///shadow postion off from image vertically.
379
+ opacity: 0,//shadow opacity.
380
+ blur: 0,//shadow blur.
381
+ borderRadius: null,///adding a radius to create a curvy edges or use 'circular' to make it a circle.
382
+ }
383
+ },
384
+ ];
385
+ ////image already got buffered you can send it directly or add text option
386
+ const image = await paintImage.drawImages(images, canvasOptions, __dirname);
387
+
388
+ const textOptionsArray = [
389
+ {
390
+ text: 'elias79. Rank',//adding a text.
391
+ x: 440,//text horizontally positon .
392
+ y: 145,//text vetically position.
393
+ fontName: 'Wind',//name your font as you want or use default (Arial).
394
+ fontPath: './wind.ttf',//font path for custom font.
395
+ fontSize: 50,///size of the font.
396
+ color: 'white',//font color.
397
+ shadow: {
398
+ offsetX: 3,
399
+ offsetY: 3,
400
+ color: "rgba(0, 0, 0, 0.5)",
401
+ blur: 5
402
+ },
403
+ stroke: {
404
+ color: '#deff08',
405
+ width: 1.2,
406
+ },
407
+ },
408
+ {
409
+ text: '95/100 XP',
410
+ x: 530,
411
+ y: 250,
412
+ fontName: 'Arial',
413
+ fontSize: 35,
414
+ color: 'white',
415
+ stroke: {
416
+ color: 'black',
417
+ width: 0.5,
418
+ },
419
+ },
420
+ ];
421
+ ///Adding the text on the drawn image before
422
+ const buffer = await paintImage.addText(textOptionsArray, image, __dirname);
423
+
424
+ //sending the buffered image with text on it
425
+ await message.channel.send({files: [buffer] });
426
+ ```
427
+ </details>
428
+
429
+ ## Discord-Build ⚒️
430
+ <details>
431
+
432
+ - Easy & Simple ways to make buttons & menus & paginator & permschecker
433
+
434
+ ```js
435
+
436
+ //////MAKE BUTTONS///////
437
+
438
+ const { ButtonManager } = require('apexify.js'); ///cjs modules .js
439
+
440
+ import { ButtonManager } from 'apexify.js'; /// ejs modules .mjs or ts
441
+
442
+ const buttonsData = [
443
+ {
444
+ customId: 'button1',
445
+ style: 'Primary',// style: Primary, Secondary, Link, Danger, Success
446
+ label: 'Primary Button',
447
+ emoji: '😃', // Emoji for the button
448
+ disabled: false, // Whether the button is disabled
449
+ },
450
+ {
451
+ customId: 'button2',
452
+ style: 'Secondary',
453
+ label: 'Secondary Button',
454
+ emoji: '🚀',
455
+ disabled: true,
456
+ },
457
+ {
458
+ customId: 'linkButton',
459
+ style: 'Link',
460
+ label: 'Link Button',
461
+ url: 'https://example.com', // URL for link-style button
462
+ emoji: '🔗',
463
+ },
464
+ ];
465
+
466
+ // Create an instance of ButtonManager
467
+ const buttonManager = new ButtonManager(buttonsData);
468
+
469
+ // Create an action row with the buttons
470
+ const actionRow = buttonManager.ButtonBuild();
471
+
472
+ // Define a message with the action row
473
+ message.reply({ content: 'Click the buttons:',
474
+ components: [actionRow],
475
+ });
476
+
477
+ // Define in interaction
478
+ interaction.reply({ content: 'Click the buttons:',
479
+ components: [actionRow],
480
+ });
481
+
482
+
483
+ //////MAKE MENUS///////
484
+
485
+ const { SelectMenuManager } = require('apexify.js');// cjs module .js
486
+ import { SelectMenuManager } from 'apexify.js'; // ejs module .mjs or ts
487
+
488
+ // Define select menu options
489
+ const selectMenuOptions = [
490
+ { label: 'Option 1', value: 'option1', description: 'Description for Option 1', emoji: '🌟', default: true },
491
+ { label: 'Option 2', value: 'option2', description: 'Description for Option 2', emoji: '🚀' },
492
+ { label: 'Option 3', value: 'option3', description: 'Description for Option 3', emoji: '🔗' },
493
+ ];
494
+
495
+ // Create an instance of SelectMenuManager
496
+ const selectMenuManager = new SelectMenuManager(
497
+ selectMenuOptions,
498
+ 'customSelectMenuId', // Custom ID for the select menu
499
+ 'Select an option', // Placeholder text for the select menu
500
+ 1, // Minimum number of selected values
501
+ 2, // Maximum number of selected values
502
+ false // Disabled state for meny (true or false)
503
+ );
504
+
505
+ // Create a select menu with the specified options
506
+ const selectMenuRow = selectMenuManager.createSelectMenu();
507
+
508
+ // Define a message with the select menu
509
+ message.reply({
510
+ content: 'Please choose an option:',
511
+ components: [selectMenuRow],
512
+ });
513
+
514
+ // Define a interaction with the select menu
515
+ interaction.reply({
516
+ content: 'Please choose an option:',
517
+ components: [selectMenuRow],
518
+ });
519
+
520
+
521
+ ////////MAKE EMBED PAGINATOR////////
522
+
523
+ const { Paginator } = require('apexify.js');// cjs module .js
524
+ import { Paginator } from 'apexify.js'; // ejs module .mjs or ts
525
+
526
+ const pageOptions = [
527
+ {
528
+ title: 'Page 1',
529
+ description: 'Content for Page 1',
530
+ color: '#3498db', // Hex color code
531
+ authorName: 'Author Name',
532
+ authorIcon: 'https://example.com/author-icon.png', // URL to author's icon
533
+ footerName: 'Footer Name',
534
+ footerIcon: 'https://example.com/footer-icon.png', // URL to footer's icon
535
+ image: 'https://example.com/image.png', // URL to image
536
+ thumbnail: 'https://example.com/thumbnail.png', // URL to thumbnail
537
+ url: 'https://example.com/page-1', // URL for the entire embed
538
+ timestamp: true, // Include timestamp
539
+ },
540
+ {
541
+ title: 'Page 2',
542
+ description: 'Content for Page 2',
543
+ color: '#e74c3c',
544
+ authorName: 'Another Author',
545
+ authorIcon: 'https://example.com/another-author-icon.png',
546
+ footerName: 'Another Footer',
547
+ footerIcon: 'https://example.com/another-footer-icon.png',
548
+ image: 'https://example.com/another-image.png',
549
+ thumbnail: 'https://example.com/another-thumbnail.png',
550
+ url: 'https://example.com/page-2',
551
+ timestamp: true,
552
+ },
553
+ {
554
+ title: 'Page 3',
555
+ description: 'Content for Page 3',
556
+ color: '#2ecc71',
557
+ authorName: 'Yet Another Author',
558
+ authorIcon: 'https://example.com/yet-another-author-icon.png',
559
+ footerName: 'Yet Another Footer',
560
+ footerIcon: 'https://example.com/yet-another-footer-icon.png',
561
+ image: 'https://example.com/yet-another-image.png',
562
+ thumbnail: 'https://example.com/yet-another-thumbnail.png',
563
+ url: 'https://example.com/page-3',
564
+ timestamp: true,
565
+ },
566
+ // Add more pages as needed
567
+ ];
568
+
569
+ // Create an instance of the Paginator class
570
+ const paginator = new Paginator({ options: pageOptions, timeout: 30000 });
571
+
572
+ /// In messages
573
+ client.on('messageCreate', async (msg) => {
574
+ // Check if the message author is a bot
575
+ if (msg.author.bot) return;
576
+
577
+ // Send the paginated message when the command !sendPaginator is received
578
+ if (msg.content === '!sendPaginator') {
579
+ const user = msg.author;
580
+ const options = { ownerOnly: false, hidden: false, };
581
+
582
+ // Send the paginated message
583
+ await paginator.send(msg, user, options);
584
+ }
585
+ });
586
+
587
+
588
+ /// In interactions
589
+ client.on('interactionCreate', async (i) => {
590
+ // Check if the message author is a bot
591
+ if (i.user.bot) return;
592
+
593
+ // Send the paginated message when the command/ button is used
594
+ if (i.customId === 'button') {
595
+ const user = i.user;
596
+ const options = { ownerOnly: false, hidden: false, };
597
+
598
+ // Send the paginated message
599
+ await paginator.send(i, user, options);
600
+ }
601
+ });
602
+
603
+
604
+ //////PERMISSION CHECKER///////
605
+
606
+ const { PermissionChecker } = require('apexify.js'); // cjs module .js
607
+ import { PermissionChecker } from 'apexify.js'; // ejs module .mjs or ts
608
+
609
+
610
+ client.on('messageCreate', async (message) => {
611
+ if (message.content.startsWith('!checkPermissions')) {
612
+ try {
613
+ // Specify the required permissions you want to check
614
+ const requiredPermissions = ['KickMembers', 'BanMembers', 'ManageChannels'];
615
+
616
+ // Instantiate the PermissionChecker
617
+ const permissionChecker = new PermissionChecker();
618
+
619
+ // Check if the message author has the required permissions
620
+ const hasPermissions = await permissionChecker.checker(message.author.id, message.guild, requiredPermissions);
621
+
622
+ if (hasPermissions) {
623
+ message.reply('You have the required permissions!');
624
+ } else {
625
+ message.reply('You do not have the required permissions!');
626
+ }
627
+ } catch (error) {
628
+ console.error('Error:', error.message);
629
+ }
630
+ }
631
+ });
632
+
633
+
634
+ client.on('interactionCreate', async (i) => {
635
+ if (i.customId === 'button_checker') {
636
+ try {
637
+ // Specify the required permissions you want to check
638
+ const requiredPermissions = ['KickMembers', 'BanMembers', 'ManageChannels'];
639
+
640
+ // Instantiate the PermissionChecker
641
+ const permissionChecker = new PermissionChecker();
642
+
643
+ // Check if the message author has the required permissions
644
+ const hasPermissions = await permissionChecker.checker(i.user.id, i.guild, requiredPermissions);
645
+
646
+ if (hasPermissions) {
647
+ i.reply('You have the required permissions!');
648
+ } else {
649
+ i.reply('You do not have the required permissions!');
650
+ }
651
+ } catch (error) {
652
+ console.error('Error:', error.message);
653
+ }
654
+ }
655
+ });
656
+ ```
657
+ ## 📚 More Info & Documentation 📖
658
+ <details>
659
+
660
+ Explore a detailed list of apexify.js and their usage at our [Support Server](https://883733a4-7d26-4e57-8a01-3eed284b6519-00-3kn6npon8kc06.sisko.replit.dev/home/docs/intro/).
661
+
662
+ ## 🚨 Important Notes 📌
663
+
664
+ 1. **Voice Messages:** Currently in beta, occasional disruptions may occur.
665
+
666
+ 2. **Commands:** Support for slash commands is coming soon.
667
+
668
+ 3. **Music:** Utilizing Lavalink for audio streaming. Customize Lavalink node if needed.
669
+
670
+ 4. **Database:** There is two type of Database NanoDb (local db json) and MongoDb (online db bson).
671
+
672
+ Keep experimenting, and feel free to contact me for assistance! Suggestions and adjustments are welcome. 🌟
673
+ </details>
674
+
675
+ # Draw Models
676
+ <details>
677
+ <summary>Click to display models</summary>
678
+ - v1
679
+ - v2
680
+ - v2-beta
681
+ - lexica
682
+ - prodia
683
+ - animefy
684
+ - raava
685
+ - shonin
686
+ - v3
687
+ - 3Guofeng3_v34.safetensors [50f420de]
688
+ - absolutereality_V16.safetensors [37db0fc3]
689
+ - absolutereality_v181.safetensors [3d9d4d2b]
690
+ - amIReal_V41.safetensors [0a8a2e61]
691
+ - analog-diffusion-1.0.ckpt [9ca13f02]
692
+ - anythingv3_0-pruned.ckpt [2700c435]
693
+ - anything-v4.5-pruned.ckpt [65745d25]
694
+ - anythingV5_PrtRE.safetensors [893e49b9]
695
+ - AOM3A3_orangemixs.safetensors [9600da17]
696
+ - blazing_drive_v10g.safetensors [ca1c1eab]
697
+ - cetusMix_Version35.safetensors [de2f2560]
698
+ - childrensStories_v13D.safetensors [9dfaabcb]
699
+ - childrensStories_v1SemiReal.safetensors [a1c56dbb]
700
+ - childrensStories_v1ToonAnime.safetensors [2ec7b88b]
701
+ - Counterfeit_v30.safetensors [9e2a8f19]
702
+ - cuteyukimixAdorable_midchapter3.safetensors [04bdffe6]
703
+ - cyberrealistic_v33.safetensors [82b0d085]
704
+ - dalcefo_v4.safetensors [425952fe]
705
+ - deliberate_v2.safetensors [10ec4b29]
706
+ - deliberate_v3.safetensors [afd9d2d4]
707
+ - dreamlike-anime-1.0.safetensors [4520e090]
708
+ - dreamlike-diffusion-1.0.safetensors [5c9fd6e0]
709
+ - dreamlike-photoreal-2.0.safetensors [fdcf65e7]
710
+ - dreamshaper_6BakedVae.safetensors [114c8abb]
711
+ - dreamshaper_7.safetensors [5cf5ae06]
712
+ - dreamshaper_8.safetensors [9d40847d]
713
+ - edgeOfRealism_eorV20.safetensors [3ed5de15]
714
+ - EimisAnimeDiffusion_V1.ckpt [4f828a15]
715
+ - elldreths-vivid-mix.safetensors [342d9d26]
716
+ - epicrealism_naturalSinRC1VAE.safetensors [90a4c676]
717
+ - ICantBelieveItsNotPhotography_seco.safetensors [4e7a3dfd]
718
+ - juggernaut_aftermath.safetensors [5e20c455]
719
+ - lofi_v4.safetensors [ccc204d6]
720
+ - lyriel_v16.safetensors [68fceea2]
721
+ - majicmixRealistic_v4.safetensors [29d0de58]
722
+ - mechamix_v10.safetensors [ee685731]
723
+ - meinamix_meinaV9.safetensors [2ec66ab0]
724
+ - meinamix_meinaV11.safetensors [b56ce717]
725
+ - neverendingDream_v122.safetensors [f964ceeb]
726
+ - openjourney_V4.ckpt [ca2f377f]
727
+ - pastelMixStylizedAnime_pruned_fp16.safetensors [793a26e8]
728
+ - portraitplus_V1.0.safetensors [1400e684]
729
+ - protogenx34.safetensors [5896f8d5]
730
+ - Realistic_Vision_V1.4-pruned-fp16.safetensors [8d21810b]
731
+ - Realistic_Vision_V2.0.safetensors [79587710]
732
+ - Realistic_Vision_V4.0.safetensors [29a7afaa]
733
+ - Realistic_Vision_V5.0.safetensors [614d1063]
734
+ - redshift_diffusion-V10.safetensors [1400e684]
735
+ - revAnimated_v122.safetensors [3f4fefd9]
736
+ - rundiffusionFX25D_v10.safetensors [cd12b0ee]
737
+ - rundiffusionFX_v10.safetensors [cd4e694d]
738
+ - sdv1_4.ckpt [7460a6fa]
739
+ - v1-5-pruned-emaonly.safetensors [d7049739]
740
+ - v1-5-inpainting.safetensors [21c7ab71]
741
+ - shoninsBeautiful_v10.safetensors [25d8c546]
742
+ - theallys-mix-ii-churned.safetensors [5d9225a4]
743
+ - timeless-1.0.ckpt [7c4971d4]
744
+ - toonyou_beta6.safetensors [980f6b15]
745
+ </details>
746
+
747
+ # chat Models
748
+ <details>
749
+ <summary>Click to display models</summary>
750
+ - v3
751
+ - v3-32k
752
+ - turbo
753
+ - turbo-16k
754
+ - gemini
755
+ </details>
756
+
757
+
758
+ # Voice Models
759
+ <details>
760
+ <summary>Click to display models</summary>
761
+ Language Name Language Code Voice Code Voice Type Voice Gender
762
+ Afrikaans (South Africa) af-ZA af-ZA-1 Neural Female
763
+ Afrikaans (South Africa) af-ZA af-ZA-2 Neural Male
764
+ Amharic (Ethiopia) am-ET am-ET-1 Neural Male
765
+ Amharic (Ethiopia) am-ET am-ET-2 Neural Female
766
+ Arabic (United Arab Emirates) ar-AE ar-AE-1 Neural Female
767
+ Arabic (United Arab Emirates) ar-AE ar-AE-2 Neural Male
768
+ Arabic (Bahrain) ar-BH ar-BH-1 Neural Male
769
+ Arabic (Bahrain) ar-BH ar-BH-2 Neural Female
770
+ Arabic (Algeria) ar-DZ ar-DZ-1 Neural Female
771
+ Arabic (Algeria) ar-DZ ar-DZ-2 Neural Male
772
+ Arabic (Egypt) ar-EG ar-EG-1 Neural Female
773
+ Arabic (Egypt) ar-EG ar-EG-2 Neural Male
774
+ Arabic (Egypt) ar-EG ar-EG-3 Standard Female
775
+ Arabic (Iraq) ar-IQ ar-IQ-1 Neural Male
776
+ Arabic (Iraq) ar-IQ ar-IQ-2 Neural Female
777
+ Arabic (Jordan) ar-JO ar-JO-1 Neural Female
778
+ Arabic (Jordan) ar-JO ar-JO-2 Neural Male
779
+ Arabic (Kuwait) ar-KW ar-KW-1 Neural Male
780
+ Arabic (Kuwait) ar-KW ar-KW-2 Neural Female
781
+ Arabic (Libya) ar-LY ar-LY-1 Neural Female
782
+ Arabic (Libya) ar-LY ar-LY-2 Neural Male
783
+ Arabic (Morocco) ar-MA ar-MA-1 Neural Male
784
+ Arabic (Morocco) ar-MA ar-MA-2 Neural Female
785
+ Arabic (Qatar) ar-QA ar-QA-1 Neural Female
786
+ Arabic (Qatar) ar-QA ar-QA-2 Neural Male
787
+ Arabic (Saudi Arabia) ar-SA ar-SA-1 Neural Male
788
+ Arabic (Saudi Arabia) ar-SA ar-SA-2 Neural Female
789
+ Arabic (Saudi Arabia) ar-SA ar-SA-3 Standard Male
790
+ Arabic (Syria) ar-SY ar-SY-1 Neural Female
791
+ Arabic (Syria) ar-SY ar-SY-2 Neural Male
792
+ Arabic (Tunisia) ar-TN ar-TN-1 Neural Male
793
+ Arabic (Tunisia) ar-TN ar-TN-2 Neural Female
794
+ Arabic (Yemen) ar-YE ar-YE-1 Neural Female
795
+ Arabic (Yemen) ar-YE ar-YE-2 Neural Male
796
+ Bulgarian (Bulgaria) bg-BG bg-BG-1 Neural Male
797
+ Bulgarian (Bulgaria) bg-BG bg-BG-2 Neural Female
798
+ Bulgarian (Bulgaria) bg-BG bg-BG-3 Standard Male
799
+ Bangla (Bangladesh) bn-BD bn-BD-1 Neural Female
800
+ Bangla (Bangladesh) bn-BD bn-BD-2 Neural Male
801
+ Catalan (Spain) ca-ES ca-ES-1 Neural Female
802
+ Catalan (Spain) ca-ES ca-ES-2 Neural Female
803
+ Catalan (Spain) ca-ES ca-ES-3 Neural Male
804
+ Catalan (Spain) ca-ES ca-ES-4 Standard Female
805
+ Czech (Czech) cs-CZ cs-CZ-1 Neural Male
806
+ Czech (Czech) cs-CZ cs-CZ-2 Neural Female
807
+ Czech (Czech) cs-CZ cs-CZ-3 Standard Male
808
+ Welsh (United Kingdom) cy-GB cy-GB-1 Neural Male
809
+ Welsh (United Kingdom) cy-GB cy-GB-2 Neural Female
810
+ Danish (Denmark) da-DK da-DK-1 Neural Female
811
+ Danish (Denmark) da-DK da-DK-2 Neural Male
812
+ Danish (Denmark) da-DK da-DK-3 Standard Female
813
+ German (Austria) de-AT de-AT-1 Neural Female
814
+ German (Austria) de-AT de-AT-2 Neural Male
815
+ German (Austria) de-AT de-AT-3 Standard Male
816
+ German (Switzerland) de-CH de-CH-1 Neural Male
817
+ German (Switzerland) de-CH de-CH-2 Neural Female
818
+ German (Switzerland) de-CH de-CH-3 Standard Male
819
+ German (Germany) de-DE de-DE-1 Neural Female
820
+ German (Germany) de-DE de-DE-2 Neural Male
821
+ German (Germany) de-DE de-DE-3 Standard Female
822
+ German (Germany) de-DE de-DE-4 Standard Male
823
+ Greek (Greece) el-GR el-GR-1 Neural Female
824
+ Greek (Greece) el-GR el-GR-2 Neural Male
825
+ Greek (Greece) el-GR el-GR-3 Standard Male
826
+ English (Australia) en-AU en-AU-1 Neural Female
827
+ English (Australia) en-AU en-AU-2 Neural Male
828
+ English (Australia) en-AU en-AU-3 Standard Female
829
+ English (Australia) en-AU en-AU-4 Standard Female
830
+ English (Canada) en-CA en-CA-1 Neural Female
831
+ English (Canada) en-CA en-CA-2 Neural Male
832
+ English (Canada) en-CA en-CA-3 Standard Female
833
+ English (Canada) en-CA en-CA-4 Standard Female
834
+ English (United Kingdom) en-GB en-GB-1 Neural Female
835
+ English (United Kingdom) en-GB en-GB-2 Neural Male
836
+ English (United Kingdom) en-GB en-GB-3 Neural Female
837
+ English (United Kingdom) en-GB en-GB-4 Neural Female
838
+ English (United Kingdom) en-GB en-GB-5 Standard Male
839
+ English (United Kingdom) en-GB en-GB-6 Standard Female
840
+ English (United Kingdom) en-GB en-GB-7 Standard Female
841
+ English (Hongkong) en-HK en-HK-1 Neural Male
842
+ English (Hongkong) en-HK en-HK-2 Neural Female
843
+ English (Ireland) en-IE en-IE-1 Neural Male
844
+ English (Ireland) en-IE en-IE-2 Neural Female
845
+ English (Ireland) en-IE en-IE-3 Standard Male
846
+ English (India) en-IN en-IN-1 Neural Female
847
+ English (India) en-IN en-IN-2 Neural Male
848
+ English (India) en-IN en-IN-3 Standard Female
849
+ English (India) en-IN en-IN-4 Standard Female
850
+ English (India) en-IN en-IN-5 Standard Male
851
+ English (Kenya) en-KE en-KE-1 Neural Female
852
+ English (Kenya) en-KE en-KE-2 Neural Male
853
+ English (Nigeria) en-NG en-NG-1 Neural Male
854
+ English (Nigeria) en-NG en-NG-2 Neural Female
855
+ English (New Zealand) en-NZ en-NZ-1 Neural Male
856
+ English (New Zealand) en-NZ en-NZ-2 Neural Female
857
+ English (Philippines) en-PH en-PH-1 Neural Male
858
+ English (Philippines) en-PH en-PH-2 Neural Female
859
+ English (Singapore) en-SG en-SG-1 Neural Female
860
+ English (Singapore) en-SG en-SG-2 Neural Male
861
+ English (Tanzania) en-TZ en-TZ-1 Neural Male
862
+ English (Tanzania) en-TZ en-TZ-2 Neural Female
863
+ English (United States) en-US en-US-1 Neural Female
864
+ English (United States) en-US en-US-2 Neural Female
865
+ English (United States) en-US en-US-3 Neural Male
866
+ English (United States) en-US en-US-4 Neural Female
867
+ English (United States) en-US en-US-5 Neural Female
868
+ English (United States) en-US en-US-6 Neural Female
869
+ English (United States) en-US en-US-7 Neural Female
870
+ English (United States) en-US en-US-8 Neural Male
871
+ English (United States) en-US en-US-9 Neural Male
872
+ English (United States) en-US en-US-10 Neural Female
873
+ English (United States) en-US en-US-11 Neural Female
874
+ English (United States) en-US en-US-12 Neural Male
875
+ English (United States) en-US en-US-13 Neural Male
876
+ English (United States) en-US en-US-14 Neural Female
877
+ English (United States) en-US en-US-15 Neural Female
878
+ English (United States) en-US en-US-16 Neural Female
879
+ English (United States) en-US en-US-17 Standard Female
880
+ English (United States) en-US en-US-18 Standard Male
881
+ English (United States) en-US en-US-19 Standard Male
882
+ English (United States) en-US en-US-20 Standard Female
883
+ English (South Africa) en-ZA en-ZA-1 Neural Female
884
+ English (South Africa) en-ZA en-ZA-2 Neural Male
885
+ Spanish (Argentina) es-AR es-AR-1 Neural Female
886
+ Spanish (Argentina) es-AR es-AR-2 Neural Male
887
+ Spanish (Bolivia) es-BO es-BO-1 Neural Male
888
+ Spanish (Bolivia) es-BO es-BO-2 Neural Female
889
+ Spanish (Chile) es-CL es-CL-1 Neural Female
890
+ Spanish (Chile) es-CL es-CL-2 Neural Male
891
+ Spanish (Colombia) es-CO es-CO-1 Neural Male
892
+ Spanish (Colombia) es-CO es-CO-2 Neural Female
893
+ Spanish (Costa Rica) es-CR es-CR-1 Neural Male
894
+ Spanish (Costa Rica) es-CR es-CR-2 Neural Female
895
+ Spanish (Cuba) es-CU es-CU-1 Neural Female
896
+ Spanish (Cuba) es-CU es-CU-2 Neural Male
897
+ Spanish (Dominican Republic) es-DO es-DO-1 Neural Male
898
+ Spanish (Dominican Republic) es-DO es-DO-2 Neural Female
899
+ Spanish (Ecuador) es-EC es-EC-1 Neural Female
900
+ Spanish (Ecuador) es-EC es-EC-2 Neural Male
901
+ Spanish (Spain) es-ES es-ES-1 Neural Male
902
+ Spanish (Spain) es-ES es-ES-2 Neural Female
903
+ Spanish (Spain) es-ES es-ES-3 Standard Female
904
+ Spanish (Spain) es-ES es-ES-4 Standard Female
905
+ Spanish (Spain) es-ES es-ES-5 Standard Male
906
+ Spanish (Equatorial Guinea) es-GQ es-GQ-1 Neural Male
907
+ Spanish (Equatorial Guinea) es-GQ es-GQ-2 Neural Female
908
+ Spanish (Guatemala) es-GT es-GT-1 Neural Male
909
+ Spanish (Guatemala) es-GT es-GT-2 Neural Female
910
+ Spanish (Honduras) es-HN es-HN-1 Neural Male
911
+ Spanish (Honduras) es-HN es-HN-2 Neural Female
912
+ Spanish (Mexico) es-MX es-MX-1 Neural Female
913
+ Spanish (Mexico) es-MX es-MX-2 Neural Male
914
+ Spanish (Mexico) es-MX es-MX-3 Standard Female
915
+ Spanish (Mexico) es-MX es-MX-4 Standard Male
916
+ Spanish (Nicaragua) es-NI es-NI-1 Neural Male
917
+ Spanish (Nicaragua) es-NI es-NI-2 Neural Female
918
+ Spanish (Panama) es-PA es-PA-1 Neural Female
919
+ Spanish (Panama) es-PA es-PA-2 Neural Male
920
+ Spanish (Peru) es-PE es-PE-1 Neural Male
921
+ Spanish (Peru) es-PE es-PE-2 Neural Female
922
+ Spanish (Puerto Rico) es-PR es-PR-1 Neural Female
923
+ Spanish (Puerto Rico) es-PR es-PR-2 Neural Male
924
+ Spanish (Paraguay) es-PY es-PY-1 Neural Male
925
+ Spanish (Paraguay) es-PY es-PY-2 Neural Female
926
+ Spanish (El Salvador) es-SV es-SV-1 Neural Female
927
+ Spanish (El Salvador) es-SV es-SV-2 Neural Male
928
+ Spanish (United States) es-US es-US-1 Neural Male
929
+ Spanish (United States) es-US es-US-2 Neural Female
930
+ Spanish (Uruguay) es-UY es-UY-1 Neural Male
931
+ Spanish (Uruguay) es-UY es-UY-2 Neural Female
932
+ Spanish (Venezuela) es-VE es-VE-1 Neural Female
933
+ Spanish (Venezuela) es-VE es-VE-2 Neural Male
934
+ Estonian (Estonia) et-EE et-EE-1 Neural Female
935
+ Estonian (Estonia) et-EE et-EE-2 Neural Male
936
+ Persian (Iran) fa-IR fa-IR-1 Neural Female
937
+ Persian (Iran) fa-IR fa-IR-2 Neural Male
938
+ Finnish (Finland) fi-FI fi-FI-1 Neural Female
939
+ Finnish (Finland) fi-FI fi-FI-2 Neural Male
940
+ Finnish (Finland) fi-FI fi-FI-3 Neural Female
941
+ Finnish (Finland) fi-FI fi-FI-4 Standard Female
942
+ Filipino (Philippines) fil-PH fil-PH-1 Neural Male
943
+ Filipino (Philippines) fil-PH fil-PH-2 Neural Female
944
+ French (Belgium) fr-BE fr-BE-1 Neural Female
945
+ French (Belgium) fr-BE fr-BE-2 Neural Male
946
+ French (Canada) fr-CA fr-CA-1 Neural Female
947
+ French (Canada) fr-CA fr-CA-2 Neural Male
948
+ French (Canada) fr-CA fr-CA-3 Neural Male
949
+ French (Canada) fr-CA fr-CA-4 Standard Female
950
+ French (Canada) fr-CA fr-CA-5 Standard Female
951
+ French (Switzerland) fr-CH fr-CH-1 Neural Female
952
+ French (Switzerland) fr-CH fr-CH-2 Neural Male
953
+ French (Switzerland) fr-CH fr-CH-3 Standard Male
954
+ French (France) fr-FR fr-FR-1 Neural Female
955
+ French (France) fr-FR fr-FR-2 Neural Male
956
+ French (France) fr-FR fr-FR-3 Standard Female
957
+ French (France) fr-FR fr-FR-4 Standard Female
958
+ French (France) fr-FR fr-FR-5 Standard Male
959
+ Irish (Ireland) ga-IE ga-IE-1 Neural Male
960
+ Irish (Ireland) ga-IE ga-IE-2 Neural Female
961
+ Galician (Spain) gl-ES gl-ES-1 Neural Male
962
+ Galician (Spain) gl-ES gl-ES-2 Neural Female
963
+ Gujarati (India) gu-IN gu-IN-1 Neural Female
964
+ Gujarati (India) gu-IN gu-IN-2 Neural Male
965
+ Hebrew (Israel) he-IL he-IL-1 Neural Male
966
+ Hebrew (Israel) he-IL he-IL-2 Neural Female
967
+ Hebrew (Israel) he-IL he-IL-3 Standard Male
968
+ Hindi (India) hi-IN hi-IN-1 Neural Male
969
+ Hindi (India) hi-IN hi-IN-2 Neural Female
970
+ Hindi (India) hi-IN hi-IN-3 Standard Male
971
+ Hindi (India) hi-IN hi-IN-4 Standard Female
972
+ Croatian (Croatia) hr-HR hr-HR-1 Neural Female
973
+ Croatian (Croatia) hr-HR hr-HR-2 Neural Male
974
+ Croatian (Croatia) hr-HR hr-HR-3 Standard Male
975
+ Hungarian (Hungary) hu-HU hu-HU-1 Neural Female
976
+ Hungarian (Hungary) hu-HU hu-HU-2 Neural Male
977
+ Hungarian (Hungary) hu-HU hu-HU-3 Standard Male
978
+ Indonesian (Indonesia) id-ID id-ID-1 Neural Male
979
+ Indonesian (Indonesia) id-ID id-ID-2 Neural Female
980
+ Indonesian (Indonesia) id-ID id-ID-3 Standard Male
981
+ Italian (Italy) it-IT it-IT-1 Neural Female
982
+ Italian (Italy) it-IT it-IT-2 Neural Male
983
+ Italian (Italy) it-IT it-IT-3 Neural Female
984
+ Italian (Italy) it-IT it-IT-4 Standard Male
985
+ Italian (Italy) it-IT it-IT-5 Standard Female
986
+ Japanese (Japan) ja-JP ja-JP-1 Neural Female
987
+ Japanese (Japan) ja-JP ja-JP-2 Neural Male
988
+ Japanese (Japan) ja-JP ja-JP-3 Standard Female
989
+ Japanese (Japan) ja-JP ja-JP-4 Standard Female
990
+ Japanese (Japan) ja-JP ja-JP-5 Standard Male
991
+ Javanese (Indonesia) jv-ID jv-ID-1 Neural Male
992
+ Javanese (Indonesia) jv-ID jv-ID-2 Neural Female
993
+ Khmer (Cambodia) km-KH km-KH-1 Neural Male
994
+ Khmer (Cambodia) km-KH km-KH-2 Neural Female
995
+ Korean (Korea) ko-KR ko-KR-1 Neural Female
996
+ Korean (Korea) ko-KR ko-KR-2 Neural Male
997
+ Korean (Korea) ko-KR ko-KR-3 Standard Female
998
+ Lithuanian (Lithuania) lt-LT lt-LT-1 Neural Male
999
+ Lithuanian (Lithuania) lt-LT lt-LT-2 Neural Female
1000
+ Latvian (Latvia) lv-LV lv-LV-1 Neural Female
1001
+ Latvian (Latvia) lv-LV lv-LV-2 Neural Male
1002
+ Marathi (India) mr-IN mr-IN-1 Neural Female
1003
+ Marathi (India) mr-IN mr-IN-2 Neural Male
1004
+ Malay (Malaysia) ms-MY ms-MY-1 Neural Male
1005
+ Malay (Malaysia) ms-MY ms-MY-2 Neural Female
1006
+ Malay (Malaysia) ms-MY ms-MY-3 Standard Male
1007
+ Maltese (Malta) mt-MT mt-MT-1 Neural Female
1008
+ Maltese (Malta) mt-MT mt-MT-2 Neural Male
1009
+ Burmese (Myanmar) my-MM my-MM-1 Neural Female
1010
+ Burmese (Myanmar) my-MM my-MM-2 Neural Male
1011
+ Norwegian (Bokmål, Norway) nb-NO nb-NO-1 Neural Female
1012
+ Norwegian (Bokmål, Norway) nb-NO nb-NO-2 Neural Male
1013
+ Norwegian (Bokmål, Norway) nb-NO nb-NO-3 Neural Female
1014
+ Norwegian (Bokmål, Norway) nb-NO nb-NO-4 Standard Female
1015
+ Dutch (Belgium) nl-BE nl-BE-1 Neural Male
1016
+ Dutch (Belgium) nl-BE nl-BE-2 Neural Female
1017
+ Dutch (Netherlands) nl-NL nl-NL-1 Neural Female
1018
+ Dutch (Netherlands) nl-NL nl-NL-2 Neural Female
1019
+ Dutch (Netherlands) nl-NL nl-NL-3 Neural Male
1020
+ Dutch (Netherlands) nl-NL nl-NL-4 Standard Female
1021
+ Polish (Poland) pl-PL pl-PL-1 Neural Female
1022
+ Polish (Poland) pl-PL pl-PL-2 Neural Male
1023
+ Polish (Poland) pl-PL pl-PL-3 Neural Female
1024
+ Polish (Poland) pl-PL pl-PL-4 Standard Female
1025
+ Portuguese (Brazil) pt-BR pt-BR-1 Neural Female
1026
+ Portuguese (Brazil) pt-BR pt-BR-2 Neural Male
1027
+ Portuguese (Brazil) pt-BR pt-BR-3 Standard Male
1028
+ Portuguese (Brazil) pt-BR pt-BR-4 Standard Female
1029
+ Portuguese (Portugal) pt-PT pt-PT-1 Neural Male
1030
+ Portuguese (Portugal) pt-PT pt-PT-2 Neural Female
1031
+ Portuguese (Portugal) pt-PT pt-PT-3 Neural Female
1032
+ Portuguese (Portugal) pt-PT pt-PT-4 Standard Female
1033
+ Romanian (Romania) ro-RO ro-RO-1 Neural Female
1034
+ Romanian (Romania) ro-RO ro-RO-2 Neural Male
1035
+ Romanian (Romania) ro-RO ro-RO-3 Standard Male
1036
+ Russian (Russia) ru-RU ru-RU-1 Neural Female
1037
+ Russian (Russia) ru-RU ru-RU-2 Neural Female
1038
+ Russian (Russia) ru-RU ru-RU-3 Neural Male
1039
+ Russian (Russia) ru-RU ru-RU-4 Standard Female
1040
+ Russian (Russia) ru-RU ru-RU-5 Standard Female
1041
+ Russian (Russia) ru-RU ru-RU-6 Standard Male
1042
+ Slovak (Slovakia) sk-SK sk-SK-1 Neural Male
1043
+ Slovak (Slovakia) sk-SK sk-SK-2 Neural Female
1044
+ Slovak (Slovakia) sk-SK sk-SK-3 Standard Male
1045
+ Slovenian (Slovenia) sl-SI sl-SI-1 Neural Female
1046
+ Slovenian (Slovenia) sl-SI sl-SI-2 Neural Male
1047
+ Slovenian (Slovenia) sl-SI sl-SI-3 Standard Male
1048
+ Somali (Somalia) so-SO so-SO-1 Neural Male
1049
+ Somali (Somalia) so-SO so-SO-2 Neural Female
1050
+ Sundanese (Indonesia) su-ID su-ID-1 Neural Male
1051
+ Sundanese (Indonesia) su-ID su-ID-2 Neural Female
1052
+ Swedish (Sweden) sv-SE sv-SE-1 Neural Female
1053
+ Swedish (Sweden) sv-SE sv-SE-2 Neural Female
1054
+ Swedish (Sweden) sv-SE sv-SE-3 Neural Male
1055
+ Swedish (Sweden) sv-SE sv-SE-4 Standard Female
1056
+ Swahili (Kenya) sw-KE sw-KE-1 Neural Male
1057
+ Swahili (Kenya) sw-KE sw-KE-2 Neural Female
1058
+ Swahili (Tanzania) sw-TZ sw-TZ-1 Neural Male
1059
+ Swahili (Tanzania) sw-TZ sw-TZ-2 Neural Female
1060
+ Tamil (India) ta-IN ta-IN-1 Neural Female
1061
+ Tamil (India) ta-IN ta-IN-2 Neural Male
1062
+ Tamil (India) ta-IN ta-IN-3 Standard Male
1063
+ Tamil (Sri Lanka) ta-LK ta-LK-1 Neural Male
1064
+ Tamil (Sri Lanka) ta-LK ta-LK-2 Neural Female
1065
+ Tamil (Singapore) ta-SG ta-SG-1 Neural Male
1066
+ Tamil (Singapore) ta-SG ta-SG-2 Neural Female
1067
+ Telugu (India) te-IN te-IN-1 Neural Male
1068
+ Telugu (India) te-IN te-IN-2 Neural Female
1069
+ Telugu (India) te-IN te-IN-3 Standard Female
1070
+ Thai (Thailand) th-TH th-TH-1 Neural Female
1071
+ Thai (Thailand) th-TH th-TH-2 Neural Female
1072
+ Thai (Thailand) th-TH th-TH-3 Neural Male
1073
+ Thai (Thailand) th-TH th-TH-4 Standard Male
1074
+ Turkish (Turkey) tr-TR tr-TR-1 Neural Male
1075
+ Turkish (Turkey) tr-TR tr-TR-2 Neural Female
1076
+ Turkish (Turkey) tr-TR tr-TR-3 Standard Female
1077
+ Ukrainian (Ukraine) uk-UA uk-UA-1 Neural Male
1078
+ Ukrainian (Ukraine) uk-UA uk-UA-2 Neural Female
1079
+ Urdu (India) ur-IN ur-IN-1 Neural Female
1080
+ Urdu (India) ur-IN ur-IN-2 Neural Male
1081
+ Urdu (Pakistan) ur-PK ur-PK-1 Neural Male
1082
+ Urdu (Pakistan) ur-PK ur-PK-2 Neural Female
1083
+ Uzbek (Uzbekistan) uz-UZ uz-UZ-1 Neural Female
1084
+ Uzbek (Uzbekistan) uz-UZ uz-UZ-2 Neural Male
1085
+ Vietnamese (Vietnam) vi-VN vi-VN-1 Neural Female
1086
+ Vietnamese (Vietnam) vi-VN vi-VN-2 Neural Male
1087
+ Vietnamese (Vietnam) vi-VN vi-VN-3 Standard Male
1088
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-1 Neural Female
1089
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-2 Neural Male
1090
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-3 Neural Female
1091
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-4 Neural Female
1092
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-5 Neural Female
1093
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-6 Neural Female
1094
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-7 Neural Female
1095
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-8 Neural Male
1096
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-9 Neural Male
1097
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-10 Neural Female
1098
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-11 Neural Female
1099
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-12 Neural Female
1100
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-13 Neural Female
1101
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-14 Standard Female
1102
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-15 Standard Male
1103
+ Chinese (Mandarin, Simplified) zh-CN zh-CN-16 Standard Female
1104
+ Chinese (Cantonese, Traditional) zh-HK zh-HK-1 Neural Female
1105
+ Chinese (Cantonese, Traditional) zh-HK zh-HK-2 Neural Female
1106
+ Chinese (Cantonese, Traditional) zh-HK zh-HK-3 Neural Male
1107
+ Chinese (Cantonese, Traditional) zh-HK zh-HK-4 Standard Male
1108
+ Chinese (Cantonese, Traditional) zh-HK zh-HK-5 Standard Female
1109
+ Chinese (Taiwanese Mandarin) zh-TW zh-TW-1 Neural Female
1110
+ Chinese (Taiwanese Mandarin) zh-TW zh-TW-2 Neural Female
1111
+ Chinese (Taiwanese Mandarin) zh-TW zh-TW-3 Neural Male
1112
+ Chinese (Taiwanese Mandarin) zh-TW zh-TW-4 Standard Female
1113
+ Chinese (Taiwanese Mandarin) zh-TW zh-TW-5 Standard Female
1114
+ Chinese (Taiwanese Mandarin) zh-TW zh-TW-6 Standard Male
1115
+ Zulu (South Africa) zu-ZA zu-ZA-1 Neural Female
1116
+ Zulu (South Africa) zu-ZA zu-ZA-2 Neural Male
1117
+ </details>