djs-menu-v13
Version:
A module for create simple and complex menu for your Discord Bot
136 lines (103 loc) • 3.39 kB
Markdown
# djs-menu-v13
## Create menu for your Discord Bot very easly
- Make for Discord.js V13
- Work with Interaction
- Create simple and complex Menu
- with button and select menu
- Support event and callbacks
- For do whatever you want
## Usefull link
- [Documentation](https://shizey.github.io/djs-menu-v13/)
- [GitHub Page](https://github.com/Shizey/djs-menu-v13)
- [NPM Page](https://www.npmjs.com/package/djs-menu-v13)
## How to use it ?
### First step
First you need to install the module with
```js
npm i djs-menu-v13
```
Then, import the module in your code
```js
import {Menu, MenuPage} from 'djs-menu-v13';
// Or with require
const {Menu, MenuPage} = require('djs-menu-v13');
```
**For this example, we gonna make two pages :**
- The first one with a basic embed and a button to go to the second page
- The second one with a button to return to the first page and a button to exit the menu
First we need to create all the buttons we need :
```js
const nextPageBtn = {
label: 'Go to second page',
target: 'secondPage', // The target is the ID of the page that we need to display when this button is clicked
style: 'PRIMARY',
};
const previousPageBtn = {
label: 'Go to first page',
target: 'firstPage',
style: 'PRIMARY',
};
const exitBtn = {
label: 'Exit',
// You can also put a function to execute when the button is clicked
target: (page, interaction, menu) => {
menu.stop();
interaction.editReply({
content: 'The menu has just been closed',
embeds: [],
components: [],
});
},
style: 'DANGER',
};
```
Then we need to create two embeds for our pages.
**You don't have to use an embed to make a page, just a content is enough.**
```js
const firstEmbed = new MessageEmbed()
.setColor('GREEN')
.setDescription('FIRST PAGE');
const secondEmbed = new MessageEmbed()
.setColor('YELLOW')
.setDescription('SECOND PAGE');
```
Now we can create our pages.
```js
const firstPage = new MenuPage()
.addEmbed(firstEmbed)
.addButton(nextPageBtn)
.setId('secondPage'); // The id that the target in the button will use
const secondPage = new MenuPage()
.addEmbed(secondEmbed)
.addButton(previousPageBtn)
.addButton(exitBtn)
.setId('secondPage');
```
And finaly create the menu and start it
```js
const menu = new Menu(interaction)
.addPage(firstPage)
.addPage(secondPage)
.start('firstPage');
```
**GG** you just start your first menu !
Now, you can listen to events emit by your menu
```js
menu.on('stop', (interaction, reason) => {
if (reason === 'noReply' ) {
// Don't forget to clear embeds and components generated by the menu
interaction.editReply({
embeds: [],
components: [],
content: 'You did not respond quickly enough',
});
}
});
menu.on('pageChanged', (page, interaction, pages) => {
console.log('the page just changed');
});
```
[Full code example here](https://github.com/Shizey/djs-menu-v13/blob/main/examples/firstStep.js)
### Menu with Select Menu
**You can also use select menu with buttons.**
[Check this example to know how](https://github.com/Shizey/djs-menu-v13/blob/main/examples/selectMenu.js)