Compare commits

...

2 Commits

Author SHA1 Message Date
3cc1a366b0
print dice expression (#3)
All checks were successful
continuous-integration/drone/tag Build is passing
Reviewed-on: #3
2025-10-05 23:04:16 +02:00
5cf90653bf
Convert to lowercase when checking prefix
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
continuous-integration/drone/tag Build is passing
Return flat modifier in dice roll
Use log.Print instead of log.Fatal where makes sense
2025-04-01 22:36:32 +01:00
5 changed files with 38 additions and 27 deletions

View File

@ -33,23 +33,22 @@ func init() {
return return
} }
messageContent := strings.Split(m.Content, " ") messageContent := strings.Split(m.Content, " ")
if !strings.HasPrefix(messageContent[0], prefix) { if !strings.HasPrefix(strings.ToLower(messageContent[0]), prefix) {
return return
} }
messageContent[0] = messageContent[0][len(prefix):] messageContent[0] = messageContent[0][len(prefix):]
var response string
if fun, ok := dotCommandHandlers[messageContent[0]]; ok { if fun, ok := dotCommandHandlers[messageContent[0]]; ok {
response = fun(messageContent[1:]) response := fun(messageContent[1:])
} _, err := s.ChannelMessageSendComplex(m.ChannelID, &discordgo.MessageSend{
_, err := s.ChannelMessageSendComplex(m.ChannelID, &discordgo.MessageSend{ Content: response,
Content: response, Reference: m.Reference(),
Reference: m.Reference(), AllowedMentions: &discordgo.MessageAllowedMentions{
AllowedMentions: &discordgo.MessageAllowedMentions{ RepliedUser: false,
RepliedUser: false, },
}, })
}) if err != nil {
if err != nil { log.Printf("Error sending message: %v", err)
log.Fatalf("Error sending message: %v", err) }
} }
}) })
} }

View File

@ -33,7 +33,7 @@ var (
}, },
}) })
if err != nil { if err != nil {
log.Fatalf("Error responding to interaction: %s\n", err) log.Printf("Error responding to interaction: %s\n", err)
} }
}, },
} }
@ -67,18 +67,22 @@ func roll(opts optionMap) string {
if err != nil { if err != nil {
return "Error rolling dice: " + err.Error() return "Error rolling dice: " + err.Error()
} }
roll, err := d.Roll() roll, flat, err := d.Roll()
if err != nil { if err != nil {
ret := fmt.Sprintf("Error rolling dice: %s", err) ret := fmt.Sprintf("Error rolling dice: %s", err)
fmt.Println(ret) fmt.Println(ret)
return ret return ret
} }
var ret strings.Builder var ret strings.Builder
_, err = fmt.Fprintf(&ret, "Dice expression: `%s`\n", exp)
if err != nil {
return fmt.Sprintf("Error rolling dice: %s", err)
}
_, err = fmt.Fprint(&ret, "Rolled dice: `") _, err = fmt.Fprint(&ret, "Rolled dice: `")
if err != nil { if err != nil {
return fmt.Sprintf("Error rolling dice: %s", err) return fmt.Sprintf("Error rolling dice: %s", err)
} }
total := d.Add total := flat
for i, die := range roll { for i, die := range roll {
_, err = fmt.Fprintf(&ret, "%v", die.Result) _, err = fmt.Fprintf(&ret, "%v", die.Result)
if err != nil { if err != nil {
@ -100,5 +104,5 @@ func roll(opts optionMap) string {
if ret.Len() < 2000 { if ret.Len() < 2000 {
return ret.String() return ret.String()
} }
return fmt.Sprintf("Too many dice to display. Omitting.\nTotal: %v", total) return fmt.Sprintf("Too many dice to display. Omitting.\nExpression: %s\nTotal: %v", exp, total)
} }

View File

@ -22,14 +22,14 @@ type DieResult struct {
Result int Result int
} }
func (d DieExp) Roll() ([]DieResult, error) { func (d DieExp) Roll() ([]DieResult, int, error) {
results := make([]DieResult, 0) results := make([]DieResult, 0)
var err error var err error
for i := 0; i < d.Count; i++ { for i := 0; i < d.Count; i++ {
results, err = addDice(d, results) results, err = addDice(d, results)
if err != nil { if err != nil {
return nil, err return nil, 0, err
} }
} }
@ -52,7 +52,7 @@ func (d DieExp) Roll() ([]DieResult, error) {
} }
if d.KeepLow > len(results) { if d.KeepLow > len(results) {
return results, errors.New("keep low higher than remaining results") return nil, 0, errors.New("keep low higher than remaining results")
} }
if d.KeepLow != 0 { if d.KeepLow != 0 {
@ -84,7 +84,7 @@ func (d DieExp) Roll() ([]DieResult, error) {
alreadyRolled := len(results) alreadyRolled := len(results)
results, err = addDice(d, results) results, err = addDice(d, results)
if err != nil { if err != nil {
return nil, err return nil, 0, err
} }
for _, result := range results[alreadyRolled:] { for _, result := range results[alreadyRolled:] {
if result.Result == result.Size { if result.Result == result.Size {
@ -93,7 +93,7 @@ func (d DieExp) Roll() ([]DieResult, error) {
} }
} }
} }
return results, nil return results, d.Add, nil
} }
func CreateFromExp(exp string) (DieExp, error) { func CreateFromExp(exp string) (DieExp, error) {

View File

@ -78,7 +78,7 @@ func TestDieExp_roll(t *testing.T) {
KeepLow: tt.fields.KeepLow, KeepLow: tt.fields.KeepLow,
Explode: tt.fields.Explode, Explode: tt.fields.Explode,
} }
got, err := d.Roll() got, _, err := d.Roll()
total := 0 total := 0
for _, v := range got { for _, v := range got {
total += v.Result total += v.Result
@ -102,7 +102,7 @@ func TestDieExp_roll_keep_high(t *testing.T) {
KeepLow: 0, KeepLow: 0,
Explode: false, Explode: false,
} }
got, err := d.Roll() got, _, err := d.Roll()
if err != nil { if err != nil {
t.Errorf("roll() error = %v", err) t.Errorf("roll() error = %v", err)
return return
@ -120,7 +120,7 @@ func TestDieExp_roll_keep_low(t *testing.T) {
KeepLow: 2, KeepLow: 2,
Explode: false, Explode: false,
} }
got, err := d.Roll() got, _, err := d.Roll()
if err != nil { if err != nil {
t.Errorf("roll() error = %v", err) t.Errorf("roll() error = %v", err)
return return
@ -138,7 +138,7 @@ func TestDieExp_roll_keep_high_low(t *testing.T) {
KeepLow: 2, KeepLow: 2,
Explode: false, Explode: false,
} }
got, err := d.Roll() got, _, err := d.Roll()
if err != nil { if err != nil {
t.Errorf("roll() error = %v", err) t.Errorf("roll() error = %v", err)
return return
@ -156,7 +156,7 @@ func TestDieExp_roll_keep_low_too_high(t *testing.T) {
KeepLow: 5, KeepLow: 5,
Explode: false, Explode: false,
} }
_, err := d.Roll() _, _, err := d.Roll()
if err == nil { if err == nil {
t.Errorf("expected roll error, got nil") t.Errorf("expected roll error, got nil")
} }

8
docker-compose.yml Normal file
View File

@ -0,0 +1,8 @@
version: '3'
services:
treerazer:
image: git.malmal200.xyz/malmal200/treerazer:test
environment:
COMMAND_PREFIX: "treereazer-test."
DISCORD_TOKEN: ""