How to store member profiles, IGNs and alt characters in Discord
To store member profiles, IGNs or alt characters in Discord, make one table with a row per member (IGN, rank, alts and a Discord member field) that members fill in with a slash command. Anyone can then look a profile up by member, IGN or alt name. CordBase, which we build, does this on the Free plan.
Guilds usually keep this in a pinned message, officer notes or a spreadsheet nobody opens, and "whose alt is Kaelmage?" gets asked in chat every week. This guide puts the list inside Discord. One caveat first: there is no sign-up form. Members run /profile add and pick the options to fill in.
What you'll end up with
- A
/profilecommand withadd,query,view,updateanddeleteactions. - A row per member: IGN, Discord member, rank, alts, role and notes.
- Lookups by member, by IGN or by alt name.
- Permissions for who can add, edit and delete profiles.
Step 1: Create the table
No ready-made template has IGN or alt columns. The closest is Member Directory, but its first text column is timezone, and that is the column the row picker searches. So build this one from scratch.
- Sign in at cordbase.gg with Discord, pick your server, and add the bot when the dashboard asks.
- Create a new table named "Profile". The command name fills in as
profile. - Add the columns below, in this order. Save when done.
- IGN: Text, required. Put it first. The
rowoption autocompletes on the first text column, so members find a profile by typing the IGN. - Member: User, required. Members pick themselves from Discord's member picker.
- Rank: Select, with your own ranks as the options (for example Officer, Raider, Trial).
- Alts: Text. Pick one format and stick to it, such as
Name (Class), Name (Class). - Role: Select, with Tank, Healer and DPS or whatever your game uses.
- Notes: Text.
Order matters because query results show only the first four columns, and columns you add later go at the end. A column's key and type are locked once the table exists, but you can add columns and rename labels (see the tables docs).
Step 2: Set permissions
Permissions live on the table's Edit page, so open it after saving. Until a table has any role set, every member can run every action, including delete. Set roles like this:
- Give the role all members have (for example
@Member, since@everyonecan't be selected) write. Members can thenaddandupdate. - Give your officer role admin, which adds
delete. - If you want only officers to enter data, give members read and officers write.
Once any role is set, members without one of the listed roles can't use the table at all. People with Discord's Administrator permission always have full access.
Be clear about what write means: it covers every row, not just a member's own. Anyone with write can edit anyone's profile, and nothing stops one member adding two profiles.
Step 3: Members add their profile
/profile add ign:Kaelith member:@Mara rank:Raider role:Healer alts:Kaelmage (Mage), Kaelstab (Rogue)
Discord asks for the required options first (IGN and Member), then members add any optional ones. Nothing walks them through the fields, so pin the exact command in a channel. To change a profile, start typing in the row option and pick it from the list:
/profile update row:Kaelith alts:Kaelmage (Mage), Kaelstab (Rogue), Kaeltank (Warrior)
Update replaces the whole value, so retype the full alts list with the new alt included. The Increment and Decrement modes exist only for number columns, and this table has none.
Step 4: Look people up
/profile view row:Kaelithshows every column, plus who created the row and when it was last updated./profile query member:@Marafinds the profile for a Discord member./profile query alts:Kaelmagefinds who owns an alt. Text filters match any row that contains the text, ignoring case./profile query rank:Officer limit:25lists up to 25 officers. Filters combine, sorank:Raider role:Healerworks too.
Query lists the newest rows first, 10 by default and 25 at most. Replies are posted in the channel, so run lookups where others can see them.
Variation: one row per character
If you want each alt to carry its own class, level or gear, make the table one row per character instead: IGN, Member, Class and a Main yes/no column. Adding an alt is then a plain add, and /profile query member:@Mara limit:25 lists everything Mara plays. The cost is rows: a Free table holds 100, and alts use them up.
When something else fits better
A spreadsheet is better if you need sorting, formulas or bulk edits by officers. CordBase has no CSV import and no Google Sheets sync.
A forum channel with one post per member suits profiles with screenshots and long write-ups that people read rather than search. A table holds short text, not images.
If you want character data pulled from the game and kept current without anyone typing, use a tool that reads your guild roster from the game. CordBase never reads game data and has no API.
Limits worth knowing
- Free: 2 tables, 100 rows each. Pro ($8/month) raises that to unlimited tables and 10,000 rows per table and adds CSV/JSON export, saved views and bulk edits.
- Up to 25 columns per table. The table has no number column, so no
leaderboardaction exists. Add a Number column such as level if you want one. - No sign-up forms or step-by-step prompts for members, and no check that an IGN is real or belongs to that member.
- Any member can run
/delete-my-datato delete the rows they created through the bot, in every server.
Questions people ask
Can the bot walk members through each field?
No. There is no form or step-by-step prompt. Members run /profile add and Discord shows one option per column. Only the columns you mark required (IGN and Member here) must be filled in, and the rest can be skipped.
Can I limit members to editing their own profile, or one profile each?
Not as a permission. Permissions apply to the whole table, so anyone with write access can update any row, and a member can add more than one. Give members read access and officers write access if you want tight control, and use /profile view to see who created a row.
How do members find out who owns an alt?
Run /profile query alts:<name>. The filter matches any profile whose alts text contains that name, ignoring case. It only works for alts someone has typed into the alts column, since CordBase doesn't read data from the game.