Dice for tabletop RPGs in any chat — D&D, Pathfinder, World of Darkness, Shadowrun, Fate, Call of Cthulhu.
Open the bot · Manual · Playground
Add @rollrobot to a group, or type @rollrobot in any chat to
roll without adding it anywhere:
/full 2d20+5
2d20 + 5 = 32
[20↑, 7] + 5
The command menu, inline titles, and the manual follow your Telegram language across eight locales. Results are notation, so they read the same everywhere.
| Command | Shortcut | Result |
|---|---|---|
/roll [notation] |
/r |
The normalized expression and its total |
/full [notation] |
/f |
The same, plus a die-by-die breakdown |
/random |
A d100 roll, total only |
|
/ask [question] |
/a |
The question quoted, and Yes or No under it |
/pick [options] |
/p |
One option out of the list, chosen at random (beta) |
/help |
Notation guide and links |
Omitting the notation rolls d20. In groups the bot replies to the message it was called from,
so several people can roll at once without the thread coming apart.
Parsed by roll-parser — keep/drop, exploding dice, rerolls, clamps, success pools, grouped rolls, and checks against a DC:
| Example | Meaning |
|---|---|
2d20+5 |
Dice and arithmetic |
4d6kh3 |
Keep the highest 3 |
d8! |
Exploding dice |
7d10>=6f1 |
Count successes, subtract 1s as failures |
1d20+12 vs 20 |
Check against a DC, reported as a degree of success |
The manual has the full reference; the playground runs notation live.
Cloudflare Workers, TypeScript, Bun, and grammY in webhook mode. The
Worker holds no state: it answers GET /health and authenticated Telegram updates at
POST /webhook, and nothing else. The landing page is a separate Cloudflare Pages deploy of
prerendered locales, so neither deploy can break the other.
Bun is the only toolchain. Install, then run the full check before committing:
bun install
bun run validate # typecheck + lint + format check + tests + site build
bun run test:watchThe manual at rollrobot.edloidas.io is built from site/ and
runs on its own:
bun run site:dev # build and serve on :4173
bun run site:preview # serve the last build without rebuilding
bun run site:build # emit site/dist/
bun run site:check # verify the tree Cloudflare Pages would publish| Document | Covers |
|---|---|
| DEPLOYMENT.md | Worker secrets, first deploy, webhook registration, releases |
| SITE.md | The Cloudflare Pages landing page and its build |
| ANALYTICS.md | What is recorded, and how to read the report |
Bug reports, notation gaps, and pull requests are welcome — open an issue to start.