Skip to content

Instantly share code, notes, and snippets.

@TeamDman
Created February 12, 2019 00:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TeamDman/8cbf3f7cc08e7d9e0117d4b0590e09dc to your computer and use it in GitHub Desktop.
Save TeamDman/8cbf3f7cc08e7d9e0117d4b0590e09dc to your computer and use it in GitHub Desktop.
A basic paginator for Discord.js
createPaginator = async (sourceMessage, message, next, prev) => {
const emojinext = "▶";
const emojiprev = "◀";
const emojistop = "❌";
try {
await message.react(emojiprev);
await message.react(emojinext);
// await message.react(emojistop);
let handle = (reaction, user) => {
if (reaction.message.id !== message.id)
return;
if (user.id !== sourceMessage.author.id ||
reaction.emoji.name !== emojinext &&
reaction.emoji.name !== emojiprev &&
reaction.emoji.name !== emojistop)
return;
switch (reaction.emoji.name) {
case emojinext:
next();
break;
case emojiprev:
prev();
break;
case emojistop:
message.delete().catch(e => console.log(e));
sourceMessage.delete().catch(e => console.log(e));
break;
default:
console.log('Something went processing emoji reactions.');
break;
}
};
client.on("messageReactionAdd", handle);
client.on("messageReactionRemove", handle);
} catch (error) {
console.log('Error involving reaction collector.');
}
};
let items = ["howdy","partner","how","are","you","?"];
let i, j, chunk, chunkSize = 10;
let pages = [];
for (i = 0, j = items.length; i < j; i += chunkSize) {
chunk = items.slice(i, i + chunkSize);
let embed = new discord.RichEmbed()
.setTitle("Items")
.setColor("BLACK")
.setDescription("")
.setFooter(`Page ${pages.length + 1} of ${Math.floor(items.length / chunkSize) + 1}`);
for (let item of chunk)
embed.description += `Item is "${item}"\n`;
pages.push(embed);
}
let index = 1;
let msg = await message.channel.send(pages[index]);
createPaginator(message, msg,
() => {
index = ++index >= pages.length ? 0 : index;
msg.edit(pages[index]);
},
() => {
index = --index < 0 ? pages.length - 1 : index;
msg.edit(pages[index]);
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment