PokéAssistant
A companion bot for Pokécord, the Pokémon-catching game that ran inside Discord. It answered the questions players kept asking in chat: which stats matter for this Pokémon, which nature to want, and which moves to teach it. Live as “PokéAide” from 2019 to 2020, in servers with over 10,000 users.
Why I built it
I ran a Pokécord community that grew past 2,000 members, and the same questions came up every day: is this one worth keeping, what nature do I want, what moveset do I give it? The answers lived in people's heads and scattered spreadsheets. I wanted one command that gave a reliable answer, with the community's best players writing and checking the data.
What it did
- Pokémon lookups. Type a Pokémon's name and get a card with its type, class (starter, common, legendary, mega), the stats that matter, recommended natures and a viable moveset, each move tagged STAB or coverage with its type, power, accuracy and physical or special.
- Community-sourced data. Cards credited the members who contributed them, and the bot told people to contact an admin when a Pokémon wasn't in the database yet.
- Random type picker.
p?typerolled a type, which my friends and I used for type-themed battles. - Help modules.
p?helplisted Pokémon, Misc, Action and Administrative commands, each with its own help page. - Admin tools. Commands for the bot's owner and moderators, plus a ban list: blocked users were told how to appeal.
- Bot info and invite. A status card with the version, creation date, total users and uptime, and a one-click invite link with a support server.
A lookup card as PokéAide posted it in September 2019 (the Pokédex blurb and artwork are left out here).
Try PokéAide
The bot's original data didn't survive, so I rebuilt its database from the lookup cards it posted in Discord: 30 Pokémon, each with the community member who wrote it. Ask it the way players did in 2019.
What I planned next
In December 2019 I wrote the next version's commands as examples in a DM with the bot: each command, then the exact reply I wanted. That's how I spec'd features before building them.
| Command | Planned reply |
|---|---|
p?type normal | A type cheat-sheet: weaknesses, strengths and immunities, the best moves of that type, and the best Pokémon of that type with the stats to look for |
p?counter Kyogre | Its weaknesses and resistances, then common and legendary counters grouped by type, each with the move to use |
p?evolve staryu | How to evolve it, as the Pokécord command to run (p!buy stone water) |
p?pem starmie | “Pre-evolution moves”: moves to learn as Staryu before evolving, with the level for each |
p?moves Dialga | Numbered alternative movesets, each move tagged STAB or coverage with its type, power, accuracy and category |
How it was built
JavaScript on Node.js with discord.js, using Discord's rich embeds for the cards and a command prefix (p?) that sat alongside Pokécord's own p!. Along the way I also experimented with versions in C# and C++ (Sleepy Discord). It ran as “v0.1 Beta Testing” and is archived now.
Discord · discord.js · Node.js · rich embeds · role-based admin commands.