Skip to content

Commit

Permalink
Quickstart update and test (#421)
Browse files Browse the repository at this point in the history
Quickstart update and test
  • Loading branch information
twonirwana authored Jan 22, 2024
1 parent 5e63ae2 commit ac33c87
Show file tree
Hide file tree
Showing 21 changed files with 4,457 additions and 552 deletions.
264 changes: 98 additions & 166 deletions README.adoc

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
public class CustomDiceCommand extends AbstractCommand<CustomDiceConfig, StateData> {

static final String BUTTONS_OPTION_NAME = "buttons";
private static final String COMMAND_NAME = "custom_dice";
public static final String COMMAND_NAME = "custom_dice";
private static final String CONFIG_TYPE_ID = "CustomDiceConfig";
private final DiceSystemAdapter diceSystemAdapter;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,8 @@ public class CustomParameterCommand extends AbstractCommand<CustomParameterConfi

//todo button label, pagination for buttons

public static final String COMMAND_NAME = "custom_parameter";
static final String EXPRESSION_OPTION_NAME = "expression";

private static final String COMMAND_NAME = "custom_parameter";
private static final String CLEAR_BUTTON_ID = "clear";
private final static Pattern PARAMETER_VARIABLE_PATTERN = Pattern.compile("\\Q{\\E.*?\\Q}\\E");
private static final String SELECTED_PARAMETER_DELIMITER = "\t";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,12 @@ public static Config createConfig(PresetId presetId, Locale userLocale) {
case PBTA ->
new CustomDiceConfig(null, ButtonHelper.parseString(I18n.getMessage("rpg.system.command.preset.PBTA.expression", userLocale)),
DiceParserSystem.DICE_EVALUATOR, AnswerFormatType.without_expression, null, new DiceStyleAndColor(DiceImageStyle.polyhedral_RdD, DiceImageStyle.polyhedral_RdD.getDefaultColor()), userLocale);
case THE_ONE_RING ->
new CustomParameterConfig(null, I18n.getMessage("rpg.system.command.preset.THE_ONE_RING.expression", userLocale), DiceParserSystem.DICE_EVALUATOR, AnswerFormatType.without_expression, null, new DiceStyleAndColor(DiceImageStyle.polyhedral_RdD, DiceImageStyle.polyhedral_RdD.getDefaultColor()), userLocale);
case EZD6 ->
new CustomDiceConfig(null, ButtonHelper.parseString(I18n.getMessage("rpg.system.command.preset.EZD6.expression", userLocale)),
DiceParserSystem.DICE_EVALUATOR, AnswerFormatType.without_expression, null, new DiceStyleAndColor(DiceImageStyle.polyhedral_RdD, DiceImageStyle.polyhedral_RdD.getDefaultColor()), userLocale);

};
}

Expand All @@ -190,26 +196,27 @@ public EmbedOrMessageDefinition createMessage(PresetId presetId, UUID newConfigU
throw new IllegalStateException("Could not create valid config for: " + presetId);
}

private AbstractCommand<?, ?> getCommandForConfig(Config config) {
private static String getCommandIdForConfig(Config config) {
if (config instanceof CustomDiceConfig) {
return customDiceCommand;
return CustomDiceCommand.COMMAND_NAME;
} else if (config instanceof SumCustomSetConfig) {
return sumCustomSetCommand;
return SumCustomSetCommand.COMMAND_NAME;
} else if (config instanceof CustomParameterConfig) {
return customParameterCommand;
return CustomParameterCommand.COMMAND_NAME;
}
throw new IllegalStateException("Could not find command for config: " + config);
throw new IllegalStateException("Could not find command id for config: " + config);
}


private <C extends Config> EmbedOrMessageDefinition startPreset(C config, AbstractCommand<C, ?> command, UUID newConfigUUID, long guildId, long channelId) {
command.createMessageConfig(newConfigUUID, guildId, channelId, config).ifPresent(persistenceManager::saveMessageConfig);
return command.createNewButtonMessage(newConfigUUID, config);
}

public String getCommandString(PresetId presetId, Locale locale) {
public static String getCommandString(PresetId presetId, Locale locale) {
Config config = createConfig(presetId, locale);
AbstractCommand<?, ?> command = getCommandForConfig(config);
return "/%s %s".formatted(command.getCommandId(), config.toCommandOptionsString());
String commandId = getCommandIdForConfig(config);
return "/%s start %s".formatted(commandId, config.toCommandOptionsString());
}

@AllArgsConstructor
Expand Down Expand Up @@ -252,7 +259,9 @@ public enum PresetId {
HEROES_OF_CERULEA,
MARVEL,
DND5_CALC2,
PBTA;
PBTA,
THE_ONE_RING,
EZD6;

public String getName(Locale locale) {
return I18n.getMessage("rpg.system.command.preset.%s.name".formatted(name()), locale);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@

@Slf4j
public class SumCustomSetCommand extends AbstractCommand<SumCustomSetConfig, SumCustomSetStateDataV2> {
public static final String COMMAND_NAME = "sum_custom_set";
static final String BUTTONS_COMMAND_OPTIONS_NAME = "buttons";
static final String ALWAYS_SUM_RESULTS_COMMAND_OPTIONS_NAME = "always_sum_result";
static final String HIDE_EXPRESSION_IN_ANSWER_OPTIONS_NAME = "hide_expression_in_answer";
static final String PREFIX_OPTIONS_NAME = "prefix";
static final String POSTFIX_OPTIONS_NAME = "postfix";
private static final String COMMAND_NAME = "sum_custom_set";
private static final String ROLL_BUTTON_ID = "roll";
private static final String NO_ACTION = "no action";
private static final String CLEAR_BUTTON_ID = "clear";
Expand Down
14 changes: 10 additions & 4 deletions bot/src/main/resources/botMessages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,8 @@ base.option.dice_color.d6_marvel.red=red
#Rpg presets expressions
rpg.system.command.preset.FATE.expression=replace(4d[+,▢,−],'+',1,'▢',0,'−',-1)+{Modifier:-4<=>10}=
rpg.system.command.preset.FATE_IMAGE.expression=4d[-1,0,1]+{Modifier:-4<=>10}=
rpg.system.command.preset.DND5.expression=1d4;1d6;1d8;1d10;1d12;1d20;1d100;2d20k1@D20 Advantage;2d20L1@D20 Disadvantage;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.DND5_IMAGE.expression=1d4;1d6;1d8;1d10;1d12;1d20;1d100;2d20k1@D20 Advantage;2d20L1@D20 Disadvantage;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.DND5.expression=D20;2d20k1@D20 Advantage;2d20L1@D20 Disadvantage;;1d4;1d6;1d8;1d10;1d12;1d100;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.DND5_IMAGE.expression=D20;2d20k1@D20 Advantage;2d20L1@D20 Disadvantage;;1d4;1d6;1d8;1d10;1d12;1d100;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.NWOD.expression={Number of Dice}d!10>=8c
rpg.system.command.preset.OWOD.expression=val('$diceNumber',{Number of Dice}) val('$target', {Target Number:2<=>10}) val('$reroll', {Reroll on 10:0@No/1@Yes}) val('$roll', if('$reroll'=?0, '$diceNumber'd10,'$diceNumber'd!10)) ('$roll'>='$target'c) - ('$roll'==1c)=
rpg.system.command.preset.SHADOWRUN.expression=val('$roll',{number of dice:1<=>20}d6) concat('$roll'>4c, if('$roll'==1c >? '$roll'c/2,' - Glitch!'))
Expand Down Expand Up @@ -271,8 +271,10 @@ rpg.system.command.preset.EXPANSE.expression=2d6 col 'mars_dark' + 1d6 col 'mars
rpg.system.command.preset.ALIEN.expression=groupC((replace({Base Dice:1<=>20}d6,[1,2,3,4,5],[],6,' Success') col 'blue') + (replace({Panic Dice:0<=>10}d6,[2,3,4,5],[],6,' Success',1,' Fear') col 'purple_dark'))
rpg.system.command.preset.HEROES_OF_CERULEA.expression=val('$roll',2d4) replace('$roll',4,':four:') _ ' = ' _ replace('$roll'l1,[1,2],'Fail',3,'Partial Success',4,'Full Success')@Disadvantage; val('$roll',1d4) replace('$roll',4,':four:') _ ' = ' _ replace('$roll'k1,[1,2],'Fail',3,'Partial Success',4,'Full Success')@1d4; val('$roll',2d4) replace('$roll',4,':four:') _ ' = ' _ replace('$roll'k1,[1,2],'Fail',3,'Partial Success',4,'Full Success')@2d4; val('$roll',3d4) replace('$roll',4,':four:') _ ' = ' _ replace('$roll'k1,[1,2],'Fail',3,'Partial Success',4,'Full Success')@3d4; val('$roll',4d4) replace('$roll',4,':four:') _ ' = ' _ replace('$roll'k1,[1,2],'Fail',3,'Partial Success',4,'Full Success')@4d4; val('$roll',5d4) replace('$roll',4,':four:') _ ' = ' _ replace('$roll'k1,[1,2],'Fail',3,'Partial Success',4,'Full Success')@5d4; (1d4*10)+1d4=@d44
rpg.system.command.preset.MARVEL.expression=val('$rRoll',2d6 col 'blue') val('$mRoll',1d6 col 'red') val('$modi',{Modificator:-3<=>9}) if(('$rRoll' + '$mRoll'=) =? 3,val('$res','$mRoll' + '$rRoll'), val('$res',replace('$mRoll',1,6) + '$rRoll')) val('$total', '$res' + '$modi'=) val('$resTotal','$res' _ ' = ' _ '$total') if('$mRoll'=?1, if(('$rRoll'=) =? 12,'$resTotal' _ ' Ultra Fantastic!', ('$rRoll'=) =? 2, '$resTotal' _ ' Botch!', '$resTotal' _' Fantastic!'), '$resTotal')
rpg.system.command.preset.DND5_CALC2.expression=+1d4;+1d6;+1d8;+1d10;+1d12;1d100@%;+(1d20)@d20;+((2d20k1) col 'blue_and_gold')@ADV;+((2d20L1) col 'red_and_gold')@DIS;+((3d20k1) col 'blue_and_gold')@ACC; +1; +2; +3; +4; +5;-1;-2;-3;-4;-5;+10;-10
rpg.system.command.preset.DND5_CALC2.expression=+1d4;+1d6;+1d8;+1d10;+1d12;+1d100@%;+1d20@d20;+((2d20k1) col 'blue_and_gold')@ADV;+((2d20L1) col 'red_and_gold')@DIS;+((3d20k1) col 'blue_and_gold')@ACC; +1; +2; +3; +4; +5;-1;-2;-3;-4;-5;+10;-10
rpg.system.command.preset.PBTA.expression=val('$roll',2d6=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move;; val('$roll',2d6+1=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move +1; val('$roll',2d6+2=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move +2; val('$roll',2d6+3=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move +3; val('$roll',2d6+4=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move +4; val('$roll',2d6+5=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move +5;; val('$roll',2d6-1=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move -1; val('$roll',2d6-2=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move -2; val('$roll',2d6-3=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move -3; val('$roll',2d6-4=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move -4; val('$roll',2d6-5=) if('$roll'>=?10, 'Total Success', '$roll'<=?6, 'Miss', 'Partial Success')@Move -5;;d4;d6;d8;d10;d12;d20
rpg.system.command.preset.THE_ONE_RING.expression=val('$TN', {Target Number: 12/13/14/15/16/17/18/19/20/21/22}) val('$fate', {Fate die: 0@⬟ Fate/1@⬟⬟ Favored/-1@⬠⬠ Ill-Favored}) val('$f', if('$fate'=?-1, (2r(replace(1d12,11,0,12,100)))L1, '$fate'=?1, (2r(replace(1d12,11,0,12,100)))K1, replace(1d12,11,0,12,100))) val('$skill', {Skill: 0@◇/1@◆/2@◆◆/3@◆◆◆/4@◆◆◆◆/5@◆◆◆◆◆/6@◆◆◆◆◆◆/7@7◆/8@8◆/9@9◆/10@10◆} ) val('$sk', '$skill'd6) val('$t', ('$sk'>5)c) val('$total', '$f' + '$sk'=) concat ('$total', if('$total'>=?'$TN', ' +++ SUCCESS ! +++', ' --- FAILURE ! ---'), if('$t'>?0, ' ✦successes: '_'$t', ''))
rpg.system.command.preset.EZD6.expression=1d6@roll; 2d6k1@boon; 2d6l1@bane; 1d!!6@combat; 2d!!6@combat boon; 1d4@D4; 1d6@D6; 1d8@D8; 1d10@D10;1d12@D12;1d20@D20; 1d100@D100; 2d6@2D6; 3d6@3D6; 4d6@4D6; 5d6@5D6; 2d6==6@Not a chance; 3d6==6@Probably not; 4d6==6@Likely
#Rpg presets names
rpg.system.command.preset.FATE.name=Fate
rpg.system.command.preset.FATE_IMAGE.name=Fate with Dice Images
Expand Down Expand Up @@ -313,6 +315,8 @@ rpg.system.command.preset.HEROES_OF_CERULEA.name=Heroes of Cerulea
rpg.system.command.preset.MARVEL.name=The Marvel Multiverse Role-Playing Game
rpg.system.command.preset.DND5_CALC2.name=Dungeon & Dragons 5e Calculator 2
rpg.system.command.preset.PBTA.name=Powered by the Apocalypse
rpg.system.command.preset.THE_ONE_RING.name=The One Ring
rpg.system.command.preset.EZD6.name=EZD6
##Rpg presets aliases separated by ;
rpg.system.command.preset.FATE.aliases=Fudge
rpg.system.command.preset.FATE_IMAGE.aliases=Fudge
Expand Down Expand Up @@ -352,4 +356,6 @@ rpg.system.command.preset.ALIEN.aliases=YZE; Alien; Year Zero Engine
rpg.system.command.preset.HEROES_OF_CERULEA.aliases=
rpg.system.command.preset.MARVEL.aliases=d616
rpg.system.command.preset.DND5_CALC2.aliases=DnD;D&D
rpg.system.command.preset.PBTA.aliases=PbtA;Dungeon World
rpg.system.command.preset.PBTA.aliases=PbtA;Dungeon World
rpg.system.command.preset.THE_ONE_RING.aliases=
rpg.system.command.preset.EZD6.aliases=
4 changes: 2 additions & 2 deletions bot/src/main/resources/botMessages_de.properties
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,8 @@ base.option.dice_color.d6_marvel.red=rot
#Rpg presets expressions
rpg.system.command.preset.FATE.expression=replace(4d[+,▢,−],'+',1,'▢',0,'−',-1)+{Modifikator:-4<=>10}=
rpg.system.command.preset.FATE_IMAGE.expression=4d[-1,0,1]+{Modifikator:-4<=>10}=
rpg.system.command.preset.DND5.expression=d4@W4;d6@W6;d8@W8;d10@W10;d12@w12;d20@W20;1d100@W100;2d20k1@W20 Vorteil;2d20L1@W20 Nachteil;2d4=@2W4;2d6=@2W6;2d8=@2W8;2d10=@2W10;2d12=@2W12;2d20=@2W20
rpg.system.command.preset.DND5_IMAGE.expression=d4@W4;d6@W6;d8@W8;d10@W10;d12@w12;d20@W20;1d100@W100;2d20k1@W20 Vorteil;2d20L1@W20 Nachteil;2d4=@2W4;2d6=@2W6;2d8=@2W8;2d10=@2W10;2d12=@2W12;2d20=@2W20
rpg.system.command.preset.DND5.expression=D20;2d20k1@D20 Vorteil;2d20L1@D20 Nachteil;;1d4;1d6;1d8;1d10;1d12;1d100;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.DND5_IMAGE.expression=D20;2d20k1@D20 Vorteil;2d20L1@D20 Nachteil;;1d4;1d6;1d8;1d10;1d12;1d100;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.NWOD.expression={Würfelanzahl}d!10>=8c
rpg.system.command.preset.OWOD.expression=val('$diceNumber',{Würfelanzahl}) val('$target', {Mindestwurf:2<=>10}) val('$reroll', {Neu würfeln by 10:0@Nein/1@Ja}) val('$roll', if('$reroll'=?0, '$diceNumber'd10,'$diceNumber'd!10)) ('$roll'>='$target'c) - ('$roll'==1c)=
rpg.system.command.preset.SHADOWRUN.expression=val('$roll',{Würfelanzahl:1<=>20}d6) concat('$roll'>4c, if('$roll'==1c >? '$roll'c/2,' - Glitch!'))
Expand Down
2 changes: 2 additions & 0 deletions bot/src/main/resources/botMessages_fr.properties
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ rpg.system.command.preset.COIN.expression=1d[Face 😀/Pile 1️⃣]@Pile ou fac
#Todo rpg.system.command.preset.PROWLERS_PARAGONS.expression=val('$r',{number of dice:1<=>12}d6),val('$total',replace('$r', [1/3/5], 0, [2/4], 1, [6], 2)=), '$total'_' successes'
#Todo rpg.system.command.preset.BLUEBEARD_BRIDE.expression=val('$roll',(2d6)) val('$mod',{Modifier:-1<=>1}) val('$total',('$roll'+'$mod')=) if('$total'>=?10, 'Hit', '$total'<=?6, 'Miss', 'Mitigated Hit')
#Todo rpg.system.command.preset.EXPANSE.expression=2d6 col 'mars_dark' + 1d6 col 'mars_light'@MCRN;2d6 col 'earth_dark' + 1d6 col 'earth_light'@UN;2d6 col 'belt_dark' + 1d6 col 'belt_light'@OPA;
rpg.system.command.preset.THE_ONE_RING.expression=val('$SR', {Seuil de Reussite: 12/13/14/15/16/17/18/19/20/21/22}) val('$destin', {Destin: 0@⬟ Destin/1@⬟⬟ Favorisé/-1@⬠⬠ Défavorisé}) val('$des', if('$destin'=?-1, (2r(replace(1d12,11,0,12,100)))L1, '$destin'=?1, (2r(replace(1d12,11,0,12,100)))K1, replace(1d12,11,0,12,100))) val('$maitrise', {Maitrise: 0@◇/1@◆/2@◆◆/3@◆◆◆/4@◆◆◆◆/5@◆◆◆◆◆/6@◆◆◆◆◆◆/7@7◆/8@8◆/9@9◆/10@10◆} ) val('$res', '$maitrise'd6) val('$t', ('$res'>5)c) val('$total', '$des' + '$res'=) concat ('$total', if('$total'>=?'$SR', ' +++ SUCCES ! +++', ' --- ECHEC ! ---'), if('$t'>?0, ' ✦reussites: '_'$t', ''))
#Rpg presets names
#Todo rpg.system.command.preset.FATE.name=Fate
rpg.system.command.preset.FATE_IMAGE.name=Fate avec des images de dés
Expand Down Expand Up @@ -301,6 +302,7 @@ rpg.system.command.preset.DICE_CALCULATOR.name=Calculatrice de dés
#Todo rpg.system.command.preset.PROWLERS_PARAGONS.name=Prowlers & Paragons Ultimate Edition
#Todo rpg.system.command.preset.BLUEBEARD_BRIDE.name=Bluebeard's Bride
#Todo rpg.system.command.preset.EXPANSE.name=The Expanse
rpg.system.command.preset.THE_ONE_RING.name=L'Anneau unique
##Rpg presets aliases separated by ;
rpg.system.command.preset.FATE.aliases=
rpg.system.command.preset.FATE_IMAGE.aliases=
Expand Down
4 changes: 2 additions & 2 deletions bot/src/main/resources/botMessages_pt_BR.properties
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,8 @@ base.option.dice_color.d6_marvel.red=vermelho
#Rpg presets expressions
rpg.system.command.preset.FATE.expression=replace(4d[+,▢,−],'+',1,'▢',0,'−',-1)+{Modificador:-4<=>10}=
rpg.system.command.preset.FATE_IMAGE.expression=4d[-1,0,1]+{Modificador:-4<=>10}=
rpg.system.command.preset.DND5.expression=1d4;1d6;1d8;1d10;1d12;1d20;1d100;2d20k1@D20 Vantagem;2d20L1@D20 Desvantagem;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.DND5_IMAGE.expression=1d4;1d6;1d8;1d10;1d12;1d20;1d100;2d20k1@D20 Vantagem;2d20L1@D20 Desvantagem;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.DND5.expression=D20;2d20k1@D20 Vantagem;2d20L1@D20 Desvantagem;;1d4;1d6;1d8;1d10;1d12;1d100;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.DND5_IMAGE.expression=D20;2d20k1@D20 Vantagem;2d20L1@D20 Desvantagem;;1d4;1d6;1d8;1d10;1d12;1d100;2d4=@2d4;2d6=@2d6;2d8=@2d8;2d10=@2d10;2d12=@2d12;2d20=@2d20
rpg.system.command.preset.NWOD.expression={Quantidade de Dados}d!10>=8c
rpg.system.command.preset.OWOD.expression=val('$diceNumber',{Quantidade de Dados}) val('$target', {Número Alvo:2<=>10}) val('$reroll', {Rerrolar no 10:0@Não/1@Sim}) val('$roll', if('$reroll'=?0, '$diceNumber'd10,'$diceNumber'd!10)) ('$roll'>='$target'c) - ('$roll'==1c)=
rpg.system.command.preset.SHADOWRUN.expression=val('$roll',{Quantidade de Dados:1<=>20}d6) concat('$roll'>4c, if('$roll'==1c >? '$roll'c/2,' - Glitch!'))
Expand Down
13 changes: 10 additions & 3 deletions bot/src/main/resources/discord/appDirectory/description.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
This bot is for rolling dice in discord.
The bot needs to be configured with a slash command in a channel and then provides a message with buttons.
Upon clicking on a button the bot will roll the stored dice expression for the button, post the result and move the message with the buttons to the bottom of the channel.
Upon clicking on a button the bot will roll the stored dice expression for the button, post the result and move the
message with the buttons to the bottom of the channel.
If the message is pined, then it will only be copied and not moved.
This allows user to roll dice without typing commands and thereby improves usability, especially for touchscreen users.
The bot supports Discord thread (the button message must be added after the thread creation), forum, Text in Voice, and it is possible to send the answer in a different channel.
The bot supports Discord thread (the button message must be added after the thread creation), forum, Text in Voice, and
it is possible to send the answer in a different channel.
It can provide images of the dice roll results and it is possible to configure channel or user specific aliases.

*The bot need the following permission*:
Expand All @@ -16,6 +18,11 @@ It can provide images of the dice roll results and it is possible to configure c

# Quickstart

Type `/quickstart system` and the bot will offer a list of ready to play dice sets. Simple select a system out of the list or keep typing to search and filter in the list.
Type `/quickstart system` and the bot will offer a list of ready to play dice sets. Simple select a system out of the
list or keep typing to search and filter in the list.
Some of the ready to play systems are:

`A Song of Ice and Fire`,`Blades in the Dark`,`Bluebeard's Bride`,`Call of Cthulhu 7th Edition`,`Candela Obscura`,`City of Mist`,`Coin Toss`,`Cyberpunk Red`,`Dice Calculator`,`Dungeon & Dragons 5e`,`Dungeon & Dragons 5e Calculator`,`Dungeon & Dragons 5e Calculator 2`,`Dungeon & Dragons 5e with Dice Images`,`Dungeon Crawl Classics`,`EZD6`,`Exalted 3ed`,`Fate`,`Fate with Dice Images`,`Heroes of Cerulea`,`Hunter 5ed`,`Kids on Brooms`,`OSR`,`One-Roll Engine`,`Paranoia: Red Clearance Edition`,`Powered by the Apocalypse`,`Prowlers & Paragons Ultimate Edition`,`Public Access`,`Risus The Anything RPG "Evens Up"`,`Rêve de Dragon`,`Savage Worlds`,`Shadowrun`,`Shadowrun with Dice Images`,`The Expanse`,`The Marvel Multiverse Role-Playing Game`,`The One Ring`,`Tiny D6`,`Traveller`,`Vampire 5ed`,`Year Zero Engine: Alien`,`nWod / Chronicles of Darkness`,`oWod / Storyteller System`


Many more systems can be mapped with this bot, please visit: https://github.com/twonirwana/DiscordDiceBot
Loading

0 comments on commit ac33c87

Please sign in to comment.