Skip to content

Commit b110cbb

Browse files
committed
chore: migrate to discord.js 14
1 parent d32d5bd commit b110cbb

27 files changed

+3026
-2666
lines changed

.eslintrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@
213213
],
214214
"@typescript-eslint/no-explicit-any": "off",
215215
"@typescript-eslint/ban-ts-comment": "off",
216-
"@typescript-eslint/no-non-null-assertion": "off"
216+
"@typescript-eslint/no-non-null-assertion": "off",
217+
"@typescript-eslint/no-non-null-asserted-optional-chain": "off"
217218
}
218219
}

README.md

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</a>
1111

1212
| 📖 [Documentation](https://mrzillagold.github.io/discord.js-pages/index.html) | [🤖 Examples](https://github.com/MrZillaGold/discord.js-pages/tree/master/examples) |
13-
| --- | --- |
13+
|-------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
1414

1515
</p>
1616

@@ -20,44 +20,66 @@
2020
### Usage 📦
2121
```js
2222
import { PagesBuilder, PagesManager } from 'discord.js-pages';
23-
import { Client, MessageEmbed } from 'discord.js';
23+
import { Client, EmbedBuilder } from 'discord.js';
2424

2525
const client = new Client({
2626
intents: [
27-
'GUILDS'
27+
'Guilds'
2828
]
2929
});
3030

3131
const pagesManager = new PagesManager();
3232

3333
// Middleware is useful in bots with modular commands
3434
client.on('interactionCreate', (interaction) => {
35+
if (!interaction.isCommand()) {
36+
return;
37+
}
38+
3539
pagesManager.middleware(interaction);
3640

37-
message.pagesBuilder()
41+
interaction.pagesBuilder()
3842
.setTitle('Global title')
3943
.setPages([
40-
new MessageEmbed()
44+
new EmbedBuilder()
4145
.setDescription('First page'),
42-
new MessageEmbed()
46+
new EmbedBuilder()
4347
.setDescription('Second page')
4448
])
45-
.addField('Global field', 'discord.js-pages', true)
46-
.setColor('GREEN')
49+
.addFields([
50+
{
51+
name: 'Global field',
52+
value: 'discord.js-pages',
53+
inline: true
54+
}
55+
])
56+
.setColor('Green')
57+
.setPaginationFormat()
4758
.build();
4859
});
4960

61+
// Also you can create PagesBuilder instance directly
5062
client.on('interactionCreate', (interaction) => {
63+
if (!interaction.isCommand()) {
64+
return;
65+
}
66+
5167
new PagesBuilder(interaction)
5268
.setTitle('Global title')
5369
.setPages([
54-
new MessageEmbed()
70+
new EmbedBuilder()
5571
.setDescription('First page'),
56-
new MessageEmbed()
72+
new EmbedBuilder()
5773
.setDescription('Second page')
5874
])
59-
.addField('Global field', 'discord.js-pages', true)
60-
.setColor('GREEN')
75+
.addFields([
76+
{
77+
name: 'Global field',
78+
value: 'discord.js-pages',
79+
inline: true
80+
}
81+
])
82+
.setColor('Green')
6183
.build();
6284
});
6385

examples/buttons/customButtons.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,43 @@
1-
import { Client, MessageEmbed, MessageButton, MessageActionRow } from 'discord.js';
1+
import { Client, EmbedBuilder, ButtonBuilder, ActionRowBuilder, ButtonStyle } from 'discord.js';
22
import { PagesBuilder } from 'discord.js-pages';
33

44
const client = new Client({
55
intents: [
6-
'GUILDS'
6+
'Guilds'
77
]
88
});
99

1010
client.on('interactionCreate', (interaction) => {
11+
if (!interaction.isCommand()) {
12+
return;
13+
}
14+
1115
// Custom buttons & select
1216
new PagesBuilder(interaction)
1317
.setTitle('Global title')
1418
.setPages([
15-
new MessageEmbed()
19+
new EmbedBuilder()
1620
.setDescription('First page'),
17-
new MessageEmbed()
21+
new EmbedBuilder()
1822
.setDescription('Second page')
1923
])
2024
.setComponents([
21-
new MessageActionRow()
25+
new ActionRowBuilder()
2226
.setComponents(
23-
new MessageButton()
27+
new ButtonBuilder()
2428
.setCustomId('custom')
2529
.setLabel('Custom button')
26-
.setStyle('PRIMARY')
30+
.setStyle(ButtonStyle.Primary)
2731
)
2832
])
2933
// You can add buttons/selects to the end of the list.
3034
// The library itself will find the component in which there is a place or create new for the element and add it.
3135
// Support array.
3236
.addComponents(
33-
new MessageButton()
37+
new ButtonBuilder()
3438
.setCustomId('awesome')
3539
.setLabel('Awesome button')
36-
.setStyle('SECONDARY')
40+
.setStyle(ButtonStyle.Secondary)
3741
)
3842
// Add triggers for handling interactions with buttons/selects.
3943
// Support array.
@@ -61,4 +65,4 @@ client.on('interactionCreate', (interaction) => {
6165
.build();
6266
});
6367

64-
client.login(process.env.TOKEN);
68+
client.login(process.env.TOKEN);

examples/buttons/dynamicUpdate.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { Client, MessageEmbed, MessageButton, MessageActionRow } from 'discord.js';
1+
import { Client, EmbedBuilder, ButtonBuilder, ActionRowBuilder } from 'discord.js';
22
import { PagesBuilder } from 'discord.js-pages';
33

44
const client = new Client({
55
intents: [
6-
'GUILDS'
6+
'Guilds'
77
]
88
});
99

1010
client.on('interactionCreate', (interaction) => {
11-
const link = new MessageButton()
11+
const link = new ButtonBuilder()
1212
.setLabel('Dynamic link')
1313
.setStyle('LINK');
1414

@@ -21,25 +21,25 @@ client.on('interactionCreate', (interaction) => {
2121
link.setURL('https://google.com/');
2222

2323
builder.setComponents(
24-
new MessageActionRow()
24+
new ActionRowBuilder()
2525
.addComponents(link)
2626
);
2727

28-
return new MessageEmbed()
28+
return new EmbedBuilder()
2929
.setDescription('First page');
3030
},
3131
() => {
3232
link.setURL('https://discord.com/');
3333

3434
builder.setComponents(
35-
new MessageActionRow()
35+
new ActionRowBuilder()
3636
.addComponents(link)
3737
);
3838

39-
return new MessageEmbed()
39+
return new EmbedBuilder()
4040
.setDescription('Second page');
4141
}
4242
]);
4343
});
4444

45-
client.login(process.env.TOKEN);
45+
client.login(process.env.TOKEN);

examples/buttons/quickActions.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Client, MessageEmbed, MessageButton } from 'discord.js';
1+
import { Client, EmbedBuilder, ButtonBuilder } from 'discord.js';
22
import { PagesBuilder } from 'discord.js-pages';
33

44
const client = new Client({
@@ -12,19 +12,19 @@ client.on('interactionCreate', (interaction) => {
1212
new PagesBuilder(interaction)
1313
.setTitle('Global title')
1414
.setPages([
15-
new MessageEmbed()
15+
new EmbedBuilder()
1616
.setDescription('First page'),
17-
new MessageEmbed()
17+
new EmbedBuilder()
1818
.setDescription('Second page')
1919
])
2020
// Add buttons with quick pagination actions, also you can customize it.
2121
// There is no need to set customId, the library does it for you.
2222
.setDefaultButtons(['first', {
23-
stop: new MessageButton()
23+
stop: new ButtonBuilder()
2424
.setLabel('Stop')
2525
.setStyle('PRIMARY')
2626
}])
2727
.build();
2828
});
2929

30-
client.login(process.env.TOKEN);
30+
client.login(process.env.TOKEN);

examples/files.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
1-
import { Client, MessageAttachment, MessageEmbed } from 'discord.js';
1+
import { Client, AttachmentBuilder, EmbedBuilder } from 'discord.js';
22
import { PagesBuilder } from 'discord.js-pages';
33

44
const client = new Client({
55
intents: [
6-
'GUILDS'
6+
'Guilds'
77
]
88
});
99

1010
client.on('interactionCreate', (interaction) => {
1111
// To start using the files, you must add them to PagesBuilder, after adding you can use them on each page.
12+
if (!interaction.isCommand()) {
13+
return;
14+
}
15+
1216
new PagesBuilder(interaction)
1317
.setPages([
14-
new MessageEmbed()
18+
new EmbedBuilder()
1519
.setDescription('First page')
1620
.setThumbnail('attachment://discord.png'),
17-
new MessageEmbed()
21+
new EmbedBuilder()
1822
.setDescription('Second page')
1923
])
2024
// Supports array.
2125
.setFiles(
22-
new MessageAttachment(
23-
Buffer.from('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANUAAADwCAYAAACXISEGAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA6sSURBVHgB7d3xfdRGFsDxZz73P3AFHCINBK6Ai7gCLiQFXJYUcEAKONYpIEADsbkCLtAAXhoIpoGgNBBMA6eb53nC8rLe1e6OpJnR7/v5DLvYZs1KenpvRrMjEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIz4FgrbquC/dwx7Vb9lgdHBwcykS49/9E/Pt+59pC/PuvBFciqFrcAXTDPZTWbtnjjRU/es8dWAvJnNsepXs4WfGtM9dOXXsjPtBO3fY4E5ybdFBZFipd+8oei47/dOEOonuSObd93kv3bXJq7ZX4IKsE+dNM5NrMtSM9YOr9lJIx2077eF/77Xy/9hXAZGSfqezgbzJRKeFkna3q7bJUFwuxcnEKpXNWap+N7ttZ8kPdr1IyVO+fpTZ5X1sWkwxlkalqX17oDvpO/EjVUOVGltmqDp+l1tEBjoVrL117xYDHiGqfkUrXTur+M9I6pWTEtulYdD8e1YlnsOQyVe0P4iYrxdABzipbue2rQ+iljK8Sn8FepNYHSyKoal/ePXRtJsOVJdsIdt3K3us2J4uzUCVT7S8xvJf4VK7NXXuTwlB91EFlWUmv6JcSt5XZqhUgTT+vsMfrrefttq9qxeNH8f2Wytr581WB6P6/x+IrgJgdS+TZK7qgamWlRxJHedfVA/HBc90eC4n7/98OtHf2eCTpqCTS7BVNULlg0gNxJvH0lZAGPTnoyOFhLME1elBZMD2V+Es8xO9YIgiuUYPKOsY62lQIEEbl2t0xr3ddk3HNhYBCWIX4wa3RjJapXJaaSVodY6RltI/njBJUlH0YQCUjlYFjlX9zIaDQr0JGKgMHz1Q2r+sXAYYxeBk4RlANOQMaqGTgMnDQ8q/2i4gUAgynED87ZzCDZaqIJ2sif5ql7g51UXjITDUXYBw67W2wyzeDBJVdk4p99jPyVtYDfaB0kPKPwQlEopIBBi16z1QMTiAihQwwaNFrpmLmBCLU+6BF35lqLgQU4qKDFr3OtOgtUzGEjsj1NtOiz0w1FyBevWWrXjJVffXdIoCY9JKt+goqhtCRAr07yV0JLHj5Zxd6CwHid8cdr8EnJQTPVGQpJEbXQLwtAQXNVGQpJKhwx23QC8JBMxVZConSC8K3Q01fCpapyFJImF4QDpatgmUqshQSFyxbBclUZClkQLPVTAIIkqnIUshEkJHAvTOVrY5UCJC+IsR1qxDl30MB8jGTPe1V/tkdO94KkJe95gTum6kGXfoJGMheM9h3zlR8XgqZ2zlb7ZOp5gLk677saJ9MxTA6crbzxeCdMhUXezEBO09d2ilTuaDSEb87AuRtp4vBW2cqG0YnoDAFxS6r2u5S/jGMjinZenh9q/LPRa3WmTpAcUOA6bi5zYDFtplKhxkJKEzNVtXZtkHFnTswRV9t88Odyz9mUGDiOs+w2CZTMUCBKes8w2KbTMUMCkzZmctUN7v8YKdMZWP1hQDTdaPrNauu5d9MAHQaqOtU/lH6Aec6TbLdmKko/YBP9Brtxil6Xcq/mQBobCwBN5Z/lH7AJRtHAddmKpuRXgiAxsZRwE3l30wALFt7IXhTUG015wmYiK/XffPKPhVz/YC1dGi9WvWNP635R6VMh153WFh751olvkN6ZicXHUrVR037X8m0+pm6bV669sa1U/HbpdJv2LbR9qVreu/cKW0bPRaerfrGukz1i+yxTFMiFuIPmBfbfAjNOqozyfujMAvXDrdd+87W1telwEvJ28Jtm3urvrEuqD5Ivh9IrFx77DbKS9mDnannkldwLWSHYFpmJ54jyTdzXTm7YuVAhW2QXAPqhWt39w0opWWQazP39IH4jZw6DaZ7+waU0tewlYgOJU9Xzq64avQv19WS9KCZhbq3a8O93rH4PkUladLtocE0l8DsNb+RPE46y1Z2j64KqrVDhok67OOgaVjnXWvsStLSBNRCemJVwT3JL7C+XPXFlX2qDPtTvQZUm/WzTiSdvoSWwqcyAOtWnEhePltp6bNMlWF/6niogFKWsR5IGg6HCihl2fCx5OWzrtK1Lj+UsEpG2Il28MTeQR/0ZNNwv1Ov7SwkH+XyF1YFVU5Tk+ahByW6sgO2kjjpNhkz6HMZLVWfxcuqoColDy/dgf1CxhVrGfj8qik2Q7Df/VzysL78s4965NKfGn2nWRm4kLhUrh3L+LQMzCFb3bDBqU+WM1UheVj0OUS8pVcSl8WYWaphZfnYlUQoZfsv19Z9M2HHEo9jieuMHFPZtfeslkhcKgGXg+pLycMbiYSdkWPJVtWQQ+ibWDVRSfouDVYsB1UOw+lRlDdLFhKH2EpRFeP/aVtF+y+fgiqjQYp3Ep+FxCHG2QzRZM49XBqsaGeqQvIQ3YFjmTOGftXvEp8cgkqVzZN2UOUyk+KjxGn0oIqpP9VSSR6K5kk7qHIZpKgkTpWMq5IIjTXjpQe3mic5ln+x7qQcP08USiXpK5sn2ZV/EZ/5xi5LCep+Fc2T86BanmaRMvdeYh3BvCXjinlkN4upcU0cNZmqkHzk9Fmwqchln52PSzRBldNnqGLdQYWMq5AIRVxZ7EIXuvkUVDm9sVhPEIWMLNIyP6cTeqF/NEGVy3C6im4n2WyVGJQSn5yC6rr+kWOmivGTy6XEIcYDOKdPmp9v3xwHKu7EVKe7/4s+xLLkW4xLz2XXn79mO72QvMwkHoXEk6mKTTcsG1KG95Mu9I9rkuda11/bySIGpcTlvsRjJpnRwaCDTBc4VL2uutqFBXZs90y+cmH9IWV8/7O7Xe5On6onY2Yr+90zia8S0Lr/kYxvLnm6lWv5p0rXvhkxsPTgfSJxejjmNSv73bne2+tmzkGlfnLtpgzMAlkDqpA4acAfyXjG/N19K3Iu/1Th2s9DZiv7XXrrmBhKrHVK938dPJPa7ywlXzdyz1RKR7vmQwSW/Q6d//WTpEG3y2BlmN26dC55u65BdV3yp2fHXgOrFVCvJa0T1bMhplHZ78i57PtEg2oqH5VoAusgdHDZ6+mdFFMLKKX7/617D72Vq5YNT2Qax1r2faplGlj/de12iMDS19AgFd9/SjGg2p720cdyr/lU/Cq9k/mc25QyVUPreg2AWZO1tg2wVjA15Z4eODlsR83k70NMZdLXcO2txD9gE1oxxaBShfj6/jfxF2hvtgOsHWTtr9nPaDDda/37UvJSuHbi3ueJDSxsxYJJSz1tOU2W7UwPktim0YxBp+wsxK/BrivcVnKxwo+edArxB4h+7uxrmdb2qsRvG226GGfVLKttF3F1++i20Y9w3BeWM6gOMrxpNjCmMw2qaKZzAzmY2ugf0DuCCgiMoAICI6iAwAgqIDCCCgiMoAICI6iAwDSoRl1VB8jMGUEFhHVG+QcERlABYVH+AYERVEBoBBUQ1kcNqo8CIJQPZCogrI8EFRBWlgMVuuYGSwSkQffTB8lLlVNQ6Q565toXrv1V/AKOBFecNJB0X+l+0v31i+TjvE9VSfo0eH44ODh4rHcIdO3UtQfid9ix+Dv2EWDjarLSoWtf2L46tf31rX09h3308cAWjn8r6apc+0Z30Lofcu9z5h7+KX7xywPBUDRQFq79uOl2sbZ4py5SmvKSebebTJXyvVcr137ftNKa26HHrv1dyF5DaGelP+t27xBQ+qCLmabcHXmvC41esxsqp9wHKV37VVpro6+jb1pLQ9c0uDTIjoXBjRCaQNK+kgaRBtN80w27W+vSz8Uvo11Iepr+vMbR5TLISqRRbukZSCX+7PjCtdrt0M7/0EoPXdJZly8uhBKxCz2YNGheuvYf10673vXeTn66jXW76zFXSJr0RPK9e98vmy98duDY+th6u5m7kq6Faz/a41bBpeyuF3pPpSbAFEF2kc0r115p21TWffYCF8FUuvZvSfcGD01f8ftmbfnGlQeKe/Nz8W865YNpIXsEl7KTTOnaP+yx6URPIciaINLsowNBTSBVsqWMgklpdtKBl2ervrn2wLADSu+/dFvSthBfEm5dFi6z0dKvrOnzwr6VQ5C1g2ghdheUbbPRpxe76N82Zd6/JO1gujI7tXU6EDLJWqqSiz6X2ivAzl/An3juWPubPbaHhGPcZu1BmSYLvbO22CUTXXrxi6yk2+GhtdTvLLM2O7V13uF28PwseVznqeSiNNTnewdXm9tWzT2b9H5WhT0297laPrj62JarRjIr8cHzuz3Xx9N9A+jSL71c4umgj/ZLUw+mTtmpbesdaiOEmrVSLwkbC9f0GtYLGYAFXCEXQVbYt/5iX2sOwvbzq1T2eGbto7XK/n7+GDJwrmIB9Uh8MJWSB81Oj7c9NnY6S1rWeiL+TJRDX0KvXeVykhiFnSxymRyrZ4jnrh12vUTQttPCL80FVPEXu3KYmTBIlsqZHXzHkjY9jk/EX7x+vEtAqSBZJvGSsHLt3hAlUu6sgtF5pCn2ozoPRGwSZIkynVcnF1N+UstaLwioMGw7Ppe0tGfO7x1QKnh/KLH+1nubA4hArG+lc/hin+qmJ3+dWvRD6JNq8MU0l/pbWp/GnLkOBUFZP+RHiVe73/RtklWK9rdc+821/9Vx+U3Qm9rv85jo8fe69vM681DHF1yFoDdu+5Z1HPILpmV1HMF1JOidHcxjyT+YltX+TPa6Hj64NKALQe90O7v2Rz2s6QXTstoH11E9XHB9JxiM296P6mHo8fNzPeVgWlb7s9pR3W9p+FowOLfdf637oceJZsJ57YfysYpunLq/flchGJzb7nfqsJoS72FNMG2nvlwa7htgc8Foap9N9tFkpac1Jd7+al8a7pO9uCY1stpXILtcuyIr9a32pcTRFgGmZ7dCMDrbd132WbuvVAqGU1+Uh3+s2VmPBNGorx4NpLyLjdsR91cEGBd5I1RfXBQmkFJhAfaUsi9Ote8jE0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI1/8BF5/tuAkCIRIAAAAASUVORK5CYII=', 'base64'),
24-
'discord.png'
26+
new AttachmentBuilder(
27+
'test.png',
28+
{
29+
name: 'discord.png'
30+
}
2531
)
2632
)
2733
.build();
2834
});
2935

30-
client.login(process.env.TOKEN);
36+
client.login(process.env.TOKEN);

examples/initialization.js

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,65 @@
1-
import { Client, MessageEmbed } from 'discord.js';
1+
import { Client, EmbedBuilder } from 'discord.js';
22
import { PagesBuilder, PagesManager } from 'discord.js-pages';
33

44
const client = new Client({
55
intents: [
6-
'GUILDS'
6+
'Guilds'
77
]
88
});
99

1010
const pagesManager = new PagesManager();
1111

1212
// Middleware is useful in bots with modular commands
1313
client.on('interactionCreate', (interaction) => {
14+
if (!interaction.isCommand()) {
15+
return;
16+
}
17+
1418
pagesManager.middleware(interaction);
1519

1620
interaction.pagesBuilder()
1721
.setTitle('Global title')
1822
.setPages([
19-
new MessageEmbed()
23+
new EmbedBuilder()
2024
.setDescription('First page'),
21-
new MessageEmbed()
25+
new EmbedBuilder()
2226
.setDescription('Second page')
2327
])
24-
.addField('Global field', 'discord.js-pages', true)
25-
.setColor('GREEN')
28+
.addFields([
29+
{
30+
name: 'Global field',
31+
value: 'discord.js-pages',
32+
inline: true
33+
}
34+
])
35+
.setColor('Green')
36+
.setPaginationFormat()
2637
.build();
2738
});
2839

2940
// Also you can create PagesBuilder instance directly
3041
client.on('interactionCreate', (interaction) => {
42+
if (!interaction.isCommand()) {
43+
return;
44+
}
45+
3146
new PagesBuilder(interaction)
3247
.setTitle('Global title')
3348
.setPages([
34-
new MessageEmbed()
49+
new EmbedBuilder()
3550
.setDescription('First page'),
36-
new MessageEmbed()
51+
new EmbedBuilder()
3752
.setDescription('Second page')
3853
])
39-
.addField('Global field', 'discord.js-pages', true)
40-
.setColor('GREEN')
54+
.addFields([
55+
{
56+
name: 'Global field',
57+
value: 'discord.js-pages',
58+
inline: true
59+
}
60+
])
61+
.setColor('Green')
4162
.build();
4263
});
4364

44-
client.login(process.env.TOKEN);
65+
client.login(process.env.TOKEN);

0 commit comments

Comments
 (0)