How Our Slack Bot "Dicebot" Will Work
Our first lambda function is going to give us a fully functional back-end for a basic chat bot. We're going to develop this for Slack, since Slack is widely used and available for free.
Dicebot Project Description#
Our first lambda function is going to give us a fully functional back-end for a basic chat bot. We're going to develop this for Slack, since Slack is widely used and available for free.
The use case is as follows:
Dicebot should provide users in a slack channel the ability to roll one or more dice by invoking a slash command /roll
. The dice being rolled can have any number of sides, but our bot will default to rolling a single 20-sided die when no parameters are specified. When multiple dice are rolled at the same time, the bot should provide the sum of all rolled values in addition to each individual roll.
We will use the dice rolling terminology standardized by various Role-Playing Games as input for Dicebot. In terms of slack input, that means are command usage will be \roll {NUM_DICE}d{DICE_SIDES}
.
NUM_DICE
is an integer value that denotes the number of dice that we wish to roll. Whenever not specified, NUM_DICE
will default to 1
Directly following NUM_DICE
, the letter d
should be used as a separator between the NUM_DICE
and DICE_SIDES
values.
DICE_SIDES
is another integer, and it the third and final value in the command input. This value represents the number of sides that each dice has. When not specified DICE_SIDES
should default to 20
.
There should be no spaces separating each input value. For example, to roll two 6-sided dice, we would send the command as /roll 2d6
.
Edge case:
If the character d
is not included, and the input is only a single integer (eg, /roll 3
), that is taken to mean _roll 3 dice with the default number of sides - aka equivalent to /roll 3d20
.