This documentation is currently under review due to the changes in version 3 of @RollButler with major changes

@RollButler is a free online service to roll virtually some dice via Twitter, Telegram and of course its own webpage.

@RollButler an Online Dice App
The Online Dice Tool @RollButler

There are two ways to call @RollButler via Twitter: You may send @RollButler a private/direct message with your roll instruction in it. Otherwise also a public Tweet with @RollButler, the command ‘/roll’ and your roll instruction in it will work, too. @RollButler will answer usually within the next ten seconds to your request.

The @RollButlerBot on Telegram will work in the same manner. Send your request within a chat with the Bot using the command ‘/roll’ or with just ‘roll’ at the beginning of your instruction.

On its own webpage of the RollButler roll instructions may be entered in the input field. Additionally there is the optiont o create your own, protected group, so only your group members will see your roll results and messages. On the webpage @RollButler returns the results immediately, so this is the recommended way of use.

Roll Instruction

Basically a roll instruction consists in the kind of the dice to be rolled which is represented by the character ‘D’ (for dice) and a number. The numer represents the amount of sides of the die, e.g. ‘D6’ stands for a six-sided dice. If you would like to roll several dices of the same kind, add the amount in front of the letter ‘D’. ‘3D6’ results in a roll of three six-sided dices.

To roll several different dices use just the regular mathematical operators +, -, *, /, e.g. ‘3D6+D10’.

If you would like to roll some dice without calculating a sum etc., just enter them separated by a blank: ‘3W6 2W10’. In that case each instruction is evaluated separately.

Often you would like to have more than just the sum of your diceresults. Single results may be inte^rpreted as failure, success or trigger. @RollButler will count these results for you to, if you define them in the roll instruction. To do this add the character ‘F’ (failure), ‘S’ (success) and ‘T’ (trigger) to the roll instruction optionally followed by the number from or up to which the result should be handled as failure, success or trigger. Without a number the lowest possible value of the dice is used for failures, the highest number for successes and triggers. ‘3D6E5F’ will let @RollButler roll three six-sided dices and count everything from five and above as result and each one as failure.

To automatically reroll some dices with given values use the exclamation mark ‘!’ option. With ‘3D8!’ all dices with the result eight will be rolled once again and the new result added to the total value. If you would like to use this option infinite (also reroll dices with special values after they already have been reroledl), use a double exclamation mark ‘!!’. The minimal relevant value to start a reroll can be given next to the exlamation mark(s). Without a given number the highest possible value of the dice will be used. For example: ‘4D6!!5’ will roll four six-sided dices. Every time a five or six is rolled the dice will be rolled again until it shows no more five or six.


If you have free successes (or failures or triggers) you may add them to your instruction. ‘+2S’ will add two successes to the total amount of successes from your roll. ‘-F’ reduces your failures by one. Full example: ‘3D6S5+S’ rolls three six-sided dice, counts every five and six as success and adds one success on top.


Some mathematical functions allow more complex instructions:

  • abs(a) – returns the value of a without sign
  • floor(a) – returns the next integer below or equal a
  • ceil(a) – returns the next integer above or equal a
  • round(a) – rounds a to an integer
  • max(a; b;…) – selects the largest number of a, b,…
  • min(a; b;…) – selects the lowest number of a, b,…
  • rand(min; max) – returns a random integer between min and max
  • above(a; b) – returns the difference a-b if a is greater than b, otherwise returns 0
  • below(a; b) – returns the difference b-a i a is smaller than b, otherwise returns 0
  • mod(a; b) – returns the remain after integer division of a and b
  • div(a; b) – result of integer division of a and b
  • if(a; b; c) – if a is true or not zero, this returns b, c otherwise

Sets (Draw with and without cover)

To simulate irregulary dice or lottery wheels the dice description allows also sets instead of numbers. Sets are described within brackets and their values are separated by semicolon and optionally given with a factor. ‘(a;2xb;3xc)’ describes a set with on ‘a’, two ‘b’ and three ‘c’, so: {a, b, b, c, c, c}.

A dice description allows two possibilities for sets: Square brackets ‘[]’ represent a set for drawing with cover. Curved clips ‘{}’ define a set for drawing without cover, so their elements are removed after a draw.

The parameters F, S, T und ! require round brackets ‘()’. The first element of a set will be interpreted as smallest, the last element as largest element of that list.

Mathematicalfunctions can only be used, if the set contains numerical values.

‘D[1;2;3;4;5;6]S(5;6)T(6)’ is the same as ‘D6S5T’. A Fate/Fudge die might be: ‘D[minus;o;plus]F(minus)S(plus)’.

Complex Example


Three six-sided dices will be rolled. Each one is a failure, five and sixes count as success. Additionally each six is a trigger and each six will be rerolled until that dice does not show a six anymore. One success is for free and finally a eight-sided dice will be thrown and its result added to the sum.

Logical and Comparing Operators

@RollButler can compare dice results. If you would like to know, if your dice result is above a given value, so this might be possible ‘D100>48’. This instruction rolls a die with hundered sides and compares the result with 48. The following operators are also possible: less than ‘<‘, less or equal ‘<=’, larger or equal ‘>=’, equal ‘==’ and not equal ‘!=’.

Logical results can also be combined by and ‘&’ and od ‘|’. Example: ‘D6=6&D6>5’ requires the first result of a dice has to be six and the second result has to be at least five. Instead of ‘&’ and ‘|’ also ‘and’ or ‘or’ can be used.


@RollButler understands instructions usually as  roll instruction. You can optional (on public Tweets mandantory) use the command “roll” in the beginning of your instruction. Example:

roll 3D6

Beside this there are more commands:


This will let @RollButler send you a short help regarding the requestet function. For example:

help max

will briefly describe the usage of the max() function.


The create command executes special functions within @RollButler. This might be the generation of a random date or time. But also an autonomous creation of characters for some roleplaysing systems is possible. Add the desired function to the create command with neccessary parameters:

create date()


create time("hour=12")

The first command creates a random date, like Saturday 7. April 1973. The second command generates a random time, where the hour is given with 12. A possible result might be 12:37:12.

Parameters of a create funktionen have to be encapsulated within the brackets in double quotes and have to look like name=value. Parameters are each separated by semicolon (;). The order of the parameters is not relevant. In case of a duplicate definition of a parameter only the last one will be used.

The following example creates a random date for February 1928:

create date("year=1928;month=2")

While the name of a parameter may only accept letters, the value is nearly open for everything. It’s even possible to add a roll instruction if the command roll is used. For example:

create time("hour=roll 2D6")

This command generates a random time with an hour, which is build by the sum of two D6.

As a special feature the create command can be used with the function npc() to randomly generate non-player characters. Call the function like:

create nsc("system=coc7")

The result by @RollButler might look like:

I created nsc("system=coc7") for you which resulted in {"system":"coc7","age":47,"year":2016,"birthday":"Saturday 29. November 1969","strength":41,"constitution":44,"size":85,"dexterity":50,"apperance":70,"intelligence":60,"power":30,"education":55,"luck":55,"damage bonus":0,"build":0,"hit points":12,"move rate":6,"sanity":30}.

The parameter “system” is mandantory to decide, for which roleplay system the character should be generated. In this case “coc7” stands for the 7th edition of Call of Cthulhu. Additional parameters can contain predefined statistics for the character, e.g. “age=27”, if you would like to set the age for your character.

The result is currently given in the JSON format, which is readable as well for human beings as also for machines. This might be changed within one of the next versions of @RollButler.

For the time being the following role playing systems are supportet:

Call of Cthulhu7coc7

Language notes

In this reference are english commands used. @RollButler understands als the germand pendants:

  • Dice: D equals W
  • Success: S equals E
  • Functions:
    • floor() equals abrunden()
    • ceil() equals aufrunden()
    • round() equals runden()
    • rand() equals zufall()
  • Logic:
    • and equals und
    • or equals oder
  • create Functions:
    • date() equals datum()
    • time() equals zeit()
    • npc() equals nsc()

Schreibe einen Kommentar

Nutze dieses Kommentarfeld um deine Meinung oder Ergänzung zu diesem Beitrag kundzutun. Verhalte dich bitte respektvoll und höflich! Kommentare werden vor der Veröffentlichung in der Regel moderiert und bei Verstößen gegen geltendes Recht, die guten Sitten, fehlendem Bezug oder missbräuchlicher Verwendung nicht freigegeben oder gelöscht.
Über die Angabe deines Namens, deiner E-Mail Adresse und deiner Webseite freuen wir uns, doch diese Felder sind optional. Deine E-Mail Adresse wird dabei zu keinem Zeitpunkt veröffentlicht.

Um mit dem Betreiber dieser Seite nicht-öffentlich in Kontakt zu treten, nutze die Möglichkeiten im Impressum.