DiscordSimpleTable provides a way to create and format tables for Emebed messages in Discord. It allows customization of column headers, row data, and table appearance, including options for adding index columns and vertical bars.
const DiscordSimpleTable = require('discord-simpletable');
const data = [
{ name: "Nicusch", sizetype: "Big", count: 20 },
{ name: "Noner", sizetype: "Medium", count: 13 },
{ name: "Don", sizetype: "Extralarge", count: 55 },
{ name: "Han", sizetype: "ExtraMediumLarge", count: 33 },
];
const columns = [
{ label: 'Username', key: 'name' },
{ label: 'Bucket Size', key: 'sizetype' },
{ label: 'Count', key: 'count' }
];
const tableString = new DiscordSimpleTable(columns)
.setJsonArrayInputs(data) // Set the data for the table
.setStringOffset(2) // Add an offset to align column headers
.addVerticalBar() // Add a vertical bar between columns
.setIndexLabel('#') // Set the label for the index column (default is "#")
.addIndex(1) // Add an index column starting at 1
.build(); // Build the table
// "const tableString" is now ready to be used
// as an example in Discord.js Api
const { EmbedBuilder } = require('discord.js'); // Import the EmbedBuilder
const exampleEmbed = new EmbedBuilder()
.setColor(0x0099FF) // Set your color
.setTitle('Discord Simple Table') // Set your title
.setDescription(tableString) // use our new custom made table
Final Discord Embed:
You can also leave out the ".addVerticalBar()" and ".addIndex(1)"
//...
const tableString = new DiscordSimpleTable(columns)
.setJsonArrayInputs(data)
.setStringOffset(2)
.build();
// Note: .setIndexLabel('#') can also be removed since it wont be added when no .addIndex(1) exists
//...
The rows and columns will have proper spacing, regardless of word length. For Discord.js, very long rows may not display well on all devices due to differences in screen sizes.
Example to change empty space to '-'
//...
const tableString = new DiscordSimpleTable(columns, '-')
//...
npm install discord-simpletable
const DiscordSimpleTable = require('discord-simpletable');
const data = [
{ name: "Nicusch", sizetype: "Big", count: 20 }
]
const columns = [
{ label: 'Username', key: 'name' },
{ label: 'Bucket Size', key: 'sizetype' },
{ label: 'Count', key: 'count' }
];
const tableString = new DiscordSimpleTable(columns)
.setJsonArrayInputs(data)
.setStringOffset(1) // only using one space
.build();
const DiscordSimpleTable = require('discord-simpletable');
const data = [
{ name: "Nicusch", sizetype: "Big", count: 20 },
{ name: "Noner", sizetype: "Medium", count: 13 },
{ name: "Don", sizetype: "Extralarge", count: 55 },
{ name: "Han", sizetype: "ExtraMediumLarge", count: 33 },
];
const columns = [
{ label: 'Username', key: 'name' },
{ label: 'Bucket Size', key: 'sizetype' },
{ label: 'Count', key: 'count' }
];
const tableString = new DiscordSimpleTable(columns, '-') // you can add other spacing chars like '-'
.setJsonArrayInputs(data)
.setStringOffset(2)
.build();