discord-pager
v1.0.2
Published
A simple way of creating embed page menus for use with discord.js.
Downloads
1
Maintainers
Readme
Create multi-page discord embeds with ease. Compatible with discord.js.
Example Code:
let {Client, Intents, MessageEmbed} = require('discord.js')
let Pager = require('discord-pager')
require('dotenv').config()
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_REACTIONS] });
// Emote name and ID for example: :next:123456789012345678 - Bot has to be a member of the guild containing the emotes
let pager = new Pager({
next: ':name:id',
prev: ':name:id'
})
// basic embeds
const exampleEmbed = new MessageEmbed().setTitle('page 1').setFooter({text: ''})
const exampleEmbed2 = new MessageEmbed().setTitle('page 2').setFooter({text: ''})
// basic embeds into array
let testArray = [exampleEmbed, exampleEmbed2]
client.on('messageCreate', (message) =>{
if(message.content !== 'test!test') return
let menu = new pager.menu(testArray, message.author.id, false) // create menu
message.reply({embeds: [menu.embeds[menu.currentEmbed]]}).then((msg)=>{
pager.save(msg, menu) // save page into pages map
})
})
client.on('messageReactionAdd', async (reaction,clicker) => {
if(!reaction.message) return; // Error checking nonsense
let menu = pager.fetch(reaction.message.id) // Try to fetch the menu for the message
if(!menu) return; // If no menu found then the bot just idles
if(clicker.id !== client.user.id) await reaction.users.remove(clicker.id); // Removes all reactions not by the bot regardless of if any code runs
if(clicker.bot) return; // Bots are not allowed to run any code XD
if(menu.authorOnly && menu.author !== clicker.id) return; // If menu is locked to author then the menu will not update for random presses
let emote = `:${reaction.emoji.name}:${reaction.emoji.id}` // formatting the emoji to check against the config versions
if(emote === pager.emotes.next){
let updatedEmbed = await menu.nextEmbed() // fetches the next embed in the menu and updates the currentEmbed index
if(updatedEmbed){
await reaction.message.edit({embeds: [updatedEmbed]}) // update the message to the new embed
}
}
else if (emote === pager.emotes.prev){
let updatedEmbed = await menu.prevEmbed() // fetches the previous embed in the menu and updates the currentEmbed index
if(updatedEmbed){
await reaction.message.edit({embeds: [updatedEmbed]}) // update the message to the new embed
}
}
})
client.on('ready', () =>{
console.log(`Ready as ${client.user.tag}!`) // sign in woo
})
client.login(process.env.TOKEN)
M1nx 2022 <3 for reading.