loading...
Discord is a VoIP application for video game communities. In April 2016, Discord launched its official API, enabling designers and engineers to build chatbots.
This project covers the design and development of Rotom Dex, a chatbot for the Pokémon community targeting casual audiences. Goal: a robust bot that anticipates user intentions and creates a sense of personality.
A personal project worked on during free time to learn app development and launch. No clear end goal—public launch vs. proof-of-concept. Without a benchmark, much of the structured UX process was stripped away, but the project still sheds light on topics like scope creep and designing with development in mind.
Design and develop a robust chatbot that anticipates user intentions and creates a sense of personality.
Each phase was informed by consultation with acquaintances familiar with the subject matter rather than upfront user research. Two goals guided the work:
The next step was examining existing Discord bots. In the Pokémon space, one stood out: Beheeyem, an official bot of the /r/Pokemon Discord server. While an impressive upgrade, Beheeyem still had room to grow in interaction design and robustness.
Whether increasing the number of functions reduces cognitive load compared to showing more data is something to test when the bot reaches wider release.
UX is often miscategorized as UI—chatbots and other low-visual mediums are overlooked. As AI and ML rise, the UX of conversing with technology matters more. Three topics guide Rotom Dex ideation: features and scope creep, robustness, and personality.
Features and Scope
Lack of deadline pressure and learning as the main motivator led to trying to implement everything. That soon slowed the project as attention shifted from MVP toward a polished product.
The MVP was the "dex" function: users type r.dex pikachu to get basic information (ID, type, height, weight, flavor text, 2D sprite) about any of the 800+ Pokémon. Additional features considered:
Robustness
Pokémon terminology is often made-up or fictional—users will make mistakes. Rotom Dex includes features that prevent users from encountering errors they cannot act upon:
Spellcheck — Using the npm meant spellcheck package and dictionary tables, Rotom Dex suggests the closest result for invalid queries. Common misspellings reduce errors. Async/await lets users reply "yes" or "no" directly without re-typing.
Multiple Input Parameters and Input Leniency — The "type" function accepts Pokémon, type, or move arguments and produces meaningful output. Users can use various delimiters for dual-types (electric-fire, electric/fire, electric fire all work).
Personality
Adding a face and character increases engagement. Rotom Dex is a character from the games and animated series. Approach: script for all functions, backstory for how it arrived on Discord, and consistent speech patterns.
Designing for a Chat Interface
The UI design is dictated by and limited to how Discord's interface works. Even with these limitations, thoughtful formatting is more effective than plain text.
Space, Color, Contrast
Discord's limited UI tools make space, color, and contrast more important. Beheeyem's Fire type layout is hard to scan: (x2) and (x0.5) notations add fluff, no distinction between categories and members, the donation footnote breaks immersion, and the blue accent doesn't match "Fire." Rotom Dex improves on this with thumbnail icon, color, and hierarchy.
Designing with Development in Mind
The dual designer-developer role enabled concurrent design and development. Code could be changed and tested immediately—no wireframes, limitations considered during design. Technical constraints (e.g., Discord's single-embed-per-message limit) shaped how information is displayed and how users initiate conversations.
Designing Interactions
Rotom Dex uses a prefix convention (r.) to distinguish bot messages. Three scenarios: (1) valid command with valid arguments—Rotom Dex returns the info; (2) valid command with invalid arguments—spellcheck asks for clarification, user replies yes/no; (3) invalid command—Rotom Dex fails silently to avoid spam.
Dealing with Exceptions
Rotom Dex handles edge cases where information deviates from normal game mechanics. For example, Electric-type Pokémon with Levitate are immune to Ground-type moves. The ※ footnote informs users of these exceptions.
Rotom Dex was tested by a small group from its target demographic throughout design and development. As a personal project, it has enough core functionality to be considered fully featured.