Roll Robot

@rollrobot

Dados de RPG em qualquer conversa — D&D, Pathfinder, World of Darkness, Shadowrun, Fate, Call of Cthulhu.

Abrir no Telegram

Primeiros passos

Abra @rollrobot, toque em Iniciar e envie /roll 2d6+3. Você recebe a expressão como ele a leu e o total.

Joga em grupo? Adicione o bot à conversa. Ele responde à mensagem que o chamou, então várias pessoas podem rolar ao mesmo tempo e cada resposta fica junto da sua pergunta. Ele precisa de permissão para enviar mensagens, senão fica em silêncio.

Em uma conversa onde você não pode adicioná-lo, use o modo inline: digite @rollrobot 2d6+3 e toque no resultado. Nada para adicionar, nenhuma permissão para conceder — a rolagem sai como sua própria mensagem.

Comandos

Cinco comandos, iguais em conversas privadas e em grupos. /roll e /full aceitam notação; envie qualquer um deles sem nada para um d20 simples.

/roll /r

O total, com a expressão normalizada para você conferir o que ele leu.

/roll 2d6+3
2d6 + 3 = 13

/full /f

A mesma rolagem, dado a dado. Descartados riscados, um máximo ou mínimo natural com seta; numa parada de dados que conta sucessos, estes vêm em negrito e as falhas sublinhadas.

/full 4d6kh3
4d6kh3 = 14 [6↑, 5, 3, 1↓]
/full 4d10>=6f1
4d10>=6f1 = 2 successes, 1 failure [10↑, 7, 3, 1↓]

/random

d100 e nada mais, para quando você só precisa de um número de um a cem. Igual a /roll d100.

/roll d100
1d100 = 73

/ask /a

Uma resposta de sim ou não para as decisões que não valem uma rolagem — a porta está armadilhada, o mercador pechincha, chove hoje à noite. Tudo depois do comando é a pergunta, citada acima da resposta.

  • Não precisa de aspas. Pontuação, apóstrofos e notação são seguros dentro da pergunta.
  • Um /ask sozinho também funciona: sem pergunta, só a resposta, para o que já foi dito em voz alta na mesa.
  • A resposta é um d2, ou seja, uma moeda honesta e nada além disso.
  • Yes e No ficam em inglês em todos os idiomas — o idioma da sua interface é um palpite ruim para o idioma da conversa.
/ask Devemos abrir a porta?
Devemos abrir a porta?
Yes ✅
/ask
No ❌

/help

O guia de notação em uma mensagem, com links para o playground e a referência. Esta página resumida, sem sair do Telegram. /start mostra o mesmo.

Recursos em beta

Já funcionam, mas ainda não estão fechados: o que está aqui pode mudar de forma ou sair do bot em uma atualização futura. Os cinco comandos acima, não.

/pick /p

Escolhe uma opção de uma lista que você dá — um encontro aleatório, quem fica no primeiro turno de guarda, qual porta. Um dado sobre as opções, sem pesos a menos que você peça.

  • No mínimo duas opções, no máximo cem.
  • Uma vírgula já basta — Passar sem ser visto, Negociar. | e ; fazem o mesmo, e uma quebra de linha vence os dois, então uma tabela colada se divide linha a linha.
  • Só o primeiro separador presente é usado, nessa ordem: quebra de linha, depois | ou ;, depois vírgula, depois espaços. Use | quando uma opção contiver vírgula — Corda, 15 m | Tocha vira duas opções, não três.
  • Repita uma opção para dar peso a ela: cada cópia ocupa um lugar na lista.
  • Um nome entre aspas no final nomeia a escolha em vez de entrar na lista.
/pick Patrulha de goblins | Sala vazia | Tesouro
Sala vazia
/pick Passar sem ser visto, Negociar, Preparar uma emboscada
Negociar

Recursos especiais

Nada disso é necessário para uma rolagem comum. É o que o bot oferece a quem o usa toda sessão e quer digitar menos.

Nomes entre aspas

Um nome entre aspas duplas no final de uma rolagem aparece acima do resultado, para que uma conversa cheia de números soltos continue legível. Funciona igual em /roll, /full e /pick, e as aspas curvas que o teclado do celular coloca no lugar das retas são aceitas do mesmo jeito.

As aspas não são opcionais. O parser aceita tanta coisa que uma palavra sem aspas não dá para distinguir da notação com nenhuma certeza, então 2d20kh1+7 Percepção é lido como notação e falha, enquanto 2d20kh1+7 "Percepção" rola e assume o nome.

/roll 2d20kh1+7 "Percepção"
Percepção
2d20kh1 + 7 = 26

Forma separada por espaços

Dois ou três números separados por espaços são lidos como uma rolagem: /roll 4 6 é 4d6, e /roll 1 20 -3 é 1d20-3. O terceiro número é o modificador, e ele leva o próprio sinal.

/roll 1 20 -3
1d20 - 3 = 11

Números sozinhos

Um número sozinho é um dado: /roll 20 rola um d20.

/roll 20
1d20 = 12

Letras cirílicas de dado

к e д viram d antes da análise, então 2к6 rola 2d6. A notação russa, ucraniana e bielorrussa funciona igual, e o k latino de kh e kl fica intacto.

/roll 2к6
2d6 = 8

Dígitos persas

۲۰ rola um d20. Os algarismos arábico-índicos e persas viram ASCII antes da análise; um nome entre aspas mantém os próprios algarismos intactos.

/roll ۲۰
1d20 = 17

Modo inline

Digite @rollrobot e a notação em qualquer conversa, inclusive em grupos que nunca ouviram falar do bot. Uma lista abre acima do teclado; toque em um resultado para enviá-lo como sua própria mensagem.

@rollrobot 2d20kh1+7 oferece uma rolagem sob dois títulos, Rolagem e Detalhada. Escolher muda a exibição, não os dados — nunca é uma nova rolagem.

Sem nada depois do nome do bot, você recebe três exemplos prontos: Rolagem e Detalhada em um d20, Aleatória em um d100.

Uma pergunta acrescenta um resultado Pergunta, no topo da lista quando nada rolou e no fim quando algo rolou. Um separador nomeado entre duas coisas que não são notação — Patrulha de goblins | Sala vazia — coloca Escolha no topo. Espaços sozinhos não valem aqui, ao contrário do /pick, senão toda pergunta digitada pela metade ofereceria uma escolha embaixo da resposta. Uma escolha inline leva as opções na própria mensagem, já que não tem um comando acima para responder.

Os resultados são pessoais e não ficam em cache, então cada consulta rola de novo.

Notação

O que você digita de fato. Não diferencia maiúsculas de minúsculas e ignora espaços, então 2 D 20 KH 1 e 2d20kh1 são a mesma rolagem. Cada grupo abaixo para no limite do que é útil; a referência traz o resto, e o playground executa.

Dados e aritmética

2d6Dois dados de seis lados.
d20A quantidade padrão é um.
2d20+5Aritmética: + - * / e parênteses.
(1d6+2)*3Parênteses agrupam o que você colocar dentro.
(1d4)d6Uma quantidade calculada: role 1d4 e depois essa quantidade de d6.

Manter e descartar

4d6kh3Mantém os três maiores — um valor de atributo.
2d20kh1Vantagem: o maior entre dois d20.
2d20kl1Desvantagem: o menor.
4d6dl1Descarta o menor; dh descarta o maior.
{1d8!, 1d6!}kh1Mantém dentro de um grupo — cada sub-rolagem concorre como um dado.

Dados explosivos

d8!Um resultado máximo acrescenta outro dado.
d8!!Composto: o dado extra se soma ao mesmo dado.
d8!pPenetrante: cada dado extra leva −1.
5d10!=10Explode a partir de um limite, não da face máxima.

Novas rolagens e limites

2d6r<3Rola de novo abaixo de 3, quantas vezes for preciso.
2d6ro<3Rola de novo uma vez e fica com o segundo resultado.
4d6min2Eleva cada dado para no mínimo 2.
4d6max5Limita cada dado a 5.

Paradas de dados e testes

12d6>=5Cada 5 e 6 conta como sucesso.
7d10>=6f1Conta sucessos e subtrai cada 1 como falha.
1d20+7 vs 15Teste contra uma CD, respondido como grau de sucesso.

Outros dados e funções

4dFDados Fate, cada um −1, 0 ou +1.
d%Percentual — o mesmo dado que 1d100.
2d6+floor(1d4/2)Funções: floor, ceil, round, abs, min, max, sqrt, pow.

Por sistema de jogo

A rolagem que cada mesa usa primeiro, pronta para copiar.

D&D 5e

Ataque com vantagem: dois d20, mantém o maior, some seu bônus.

/full 2d20kh1+7
2d20kh1 + 7 = 26 [8, 19] + 7

Pathfinder 2e

Um teste contra uma CD. Supere por dez para um sucesso crítico, erre por dez para uma falha crítica; um 20 ou 1 natural desloca o resultado em um grau.

/full 1d20+12 vs 20
1d20 + 12 vs 20 = Critical Success (natural 18) [18] + 12 vs 20

World of Darkness

Uma parada de dados do Storyteller: sucesso em 6 ou mais, e cada 1 cancela um.

/full 7d10>=6f1
7d10>=6f1 = 4 successes, 1 failure [8, 6, 2, 10↑, 1↓, 4, 7]

Shadowrun

Acertos em 5 e 6 em toda a parada de dados.

/full 12d6>=5
12d6>=5 = 5 successes [5, 3, 6↑, 2, 4, 5, 1↓, 6↑, 3, 5, 2, 4]

Savage Worlds

Dado de traço e dado selvagem, ambos explosivos; vale o maior dos dois.

/full {1d8!, 1d6!}kh1
{1d8!, 1d6!}kh1 = 9 {[5], [6, 3]}

Fate

Quatro dados Fudge mais o nível de uma perícia.

/full 4dF+2
4dF + 2 = 3 [1, 0, -1, 1] + 2

Call of Cthulhu

Role abaixo da sua perícia com o dado percentual.

/roll d%
1d100 = 37

Limites

Uma rolagem é limitada a 100 dados e a 100 iterações de explosão ou nova rolagem. Peça mais e o bot avisa em vez de rolar — são esses limites que mantêm a resposta dentro do teto de 4096 caracteres do Telegram.

O detalhe dado a dado que ainda passe de 3500 caracteres é descartado em favor da resposta compacta, então uma parada de dados grande responde com o total em vez de não responder nada.

/pick aceita no máximo 100 opções. Uma lista maior é rejeitada, não cortada: ficar com as cem primeiras enviesaria silenciosamente toda escolha para o topo e ainda pareceria ter funcionado.

Um nome entre aspas é cortado em 100 caracteres, e uma pergunta ao /ask, em 300.

Perguntas frequentes

Preciso adicionar o bot ao meu grupo?

Não. Digite @rollrobot e a notação em qualquer conversa e escolha um resultado — ele é enviado como sua própria mensagem e o bot não entra em lugar nenhum. Só vale a pena adicioná-lo quando a mesa rola com frequência, já que um comando é mais curto de digitar.

O bot lê minhas mensagens?

Ele age só sobre o que é dirigido a ele: comandos que começam com barra e consultas inline que começam com @rollrobot. A conversa normal é ignorada — não existe nada que a trate.

Alguma coisa é armazenada?

Não. Nada do que você envia é guardado: nem o texto de uma pergunta, nem as opções de uma lista, nem um nome que você citou, nem um único resultado. O que fica registrado é o formato da rolagem e nada mais — 2d6, 4d6kh3, o comando de onde veio — com o ID de usuário do Telegram reduzido a um hash com sal, para que o uso repetido possa ser contado sem identificar a conta. Esse conjunto de dados é somente de escrita; ele existe para mostrar qual notação vale a pena suportar, e não pode ser lido de volta para dentro de uma conversa.

As rolagens são justas?

Cada rolagem é sorteada na hora pelo gerador do roll-parser, com uma semente nova a cada vez. Nada é pré-calculado, e nenhum resultado passa de uma rolagem para a seguinte.

Posso dar nome a uma rolagem?

Cite um nome entre aspas no final e ele aparece acima do resultado: /roll 2d20kh1+7 "Percepção". Funciona para /pick também.

Por que 4d6d1 dá erro?

Um d solto depois de uma parada de dados é ambíguo — descartar um, ou rolar essa quantidade de dados de novo? Escreva 4d6dl1 para descartar o menor, ou (4d6)d1 para dados aninhados.

Minha notação foi rejeitada. E agora?

O bot repete o que você enviou com acentos circunflexos sob a parte que não conseguiu ler, então a correção costuma ficar visível na resposta. Casos complicados são mais rápidos de depurar no playground, com link no rodapé desta página.

Que idioma o bot fala?

O menu de comandos, os títulos inline e o guia de notação seguem o idioma da interface do seu Telegram entre inglês, espanhol, português, alemão, russo, ucraniano, bielorrusso e persa; qualquer outro cai no inglês. Os resultados são notação, então se leem igual em qualquer lugar. Yes e No ficam em inglês de propósito — o idioma da sua interface é um palpite ruim para o idioma da conversa em que você está escrevendo.