From 4a14c4d05924223e3617c7a5faffe272234a8450 Mon Sep 17 00:00:00 2001 From: "diamondburned (Forefront)" Date: Sun, 3 May 2020 21:22:19 -0700 Subject: [PATCH] Bot: Allow variadic functions to have empty trailing arguments --- bot/ctx_call.go | 6 ++++++ bot/ctx_plumb_test.go | 4 +--- bot/ctx_test.go | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/bot/ctx_call.go b/bot/ctx_call.go index 0e8ba9f..0479bb2 100644 --- a/bot/ctx_call.go +++ b/bot/ctx_call.go @@ -277,6 +277,12 @@ func (ctx *Context) callMessageCreate(mc *gateway.MessageCreateEvent) error { if argdelta := len(arguments) - len(cmd.Arguments); argdelta != 0 { var err error // no err if nil + // If the function is variadic, then we can allow the last argument to + // be empty. + if cmd.Variadic { + argdelta++ + } + switch { // If there aren't enough arguments given. case argdelta < 0: diff --git a/bot/ctx_plumb_test.go b/bot/ctx_plumb_test.go index ddb71a1..96f3c5d 100644 --- a/bot/ctx_plumb_test.go +++ b/bot/ctx_plumb_test.go @@ -20,9 +20,7 @@ func (h *hasPlumb) Normal(_ *gateway.MessageCreateEvent) error { return nil } -func (h *hasPlumb) PーPlumber( - _ *gateway.MessageCreateEvent, c Content) error { - +func (h *hasPlumb) PーPlumber(_ *gateway.MessageCreateEvent, c RawArguments) error { h.Plumbed = string(c) return nil } diff --git a/bot/ctx_test.go b/bot/ctx_test.go index fef2652..5e690e5 100644 --- a/bot/ctx_test.go +++ b/bot/ctx_test.go @@ -214,9 +214,9 @@ func TestContext(t *testing.T) { t.Run("call command custom trailing manual parser", func(t *testing.T) { ctx.HasPrefix = NewPrefix("!") - expects := []string{"arikawa"} + expects := []string{} - if err := testReturn(expects, "!trailCustom hime arikawa"); err != nil { + if err := testReturn(expects, "!trailCustom hime_arikawa"); err != nil { t.Fatal("Unexpected call error:", err) } })