From d0ecb3c9f3ea2e30ebc81f823d9020849377d154 Mon Sep 17 00:00:00 2001 From: Vincent Date: Mon, 2 Jul 2018 23:43:07 +0200 Subject: [PATCH] add GetCommands() test --- bot_test.go | 2 +- helpers_test.go | 3 ++- types.go | 9 +++++---- types_test.go | 35 ++++++++++++++++++++++++++++++++++- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/bot_test.go b/bot_test.go index e7aa7ac..abea6d1 100644 --- a/bot_test.go +++ b/bot_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/go-telegram-bot-api/telegram-bot-api" + "github.com/TheMysteriousVincent/telegram-bot-api" ) const ( diff --git a/helpers_test.go b/helpers_test.go index 9542f02..4f29427 100644 --- a/helpers_test.go +++ b/helpers_test.go @@ -1,8 +1,9 @@ package tgbotapi_test import ( - "github.com/go-telegram-bot-api/telegram-bot-api" "testing" + + "github.com/TheMysteriousVincent/telegram-bot-api" ) func TestNewInlineQueryResultArticle(t *testing.T) { diff --git a/types.go b/types.go index caa5ccd..dd46738 100644 --- a/types.go +++ b/types.go @@ -204,15 +204,16 @@ func (m *Message) GetCommands() (*Commands, error) { var cmds Commands text := []rune(m.Text) + textLen := len(text) for i := 0; i < len(botCmdsEntries); i++ { e := botCmdsEntries[i] - nOff := len(text) - if i+1 >= len(botCmdsEntries) { + nOff := textLen + if i+1 < len(botCmdsEntries) { nOff = (botCmdsEntries[i+1]).Offset } cmd := Command{ - Name: string(text[e.Offset : e.Offset+e.Length]), - Arguments: strings.Split(string(text[e.Offset+e.Length:nOff]), " "), + Name: string(text[e.Offset+1 : e.Offset+e.Length]), + Arguments: strings.Fields(string(text[e.Offset+e.Length : nOff])), } cmds = append(cmds, cmd) } diff --git a/types_test.go b/types_test.go index bb7bb64..c18860f 100644 --- a/types_test.go +++ b/types_test.go @@ -1,10 +1,11 @@ package tgbotapi_test import ( + "fmt" "testing" "time" - "github.com/go-telegram-bot-api/telegram-bot-api" + "github.com/TheMysteriousVincent/telegram-bot-api" ) func TestUserStringWith(t *testing.T) { @@ -45,6 +46,38 @@ func TestMessageTime(t *testing.T) { } } +func TestGetCommands(t *testing.T) { + message := tgbotapi.Message{Text: "/test t\n/testCommandsWith2Arguments TestArgument1 TestArgument2"} + message.Entities = &[]tgbotapi.MessageEntity{ + { + Type: "bot_command", + Offset: 0, + Length: 5, + }, + { + Type: "bot_command", + Offset: 8, + Length: 27, + }, + } + + cmds, _ := message.GetCommands() + fmt.Println(*cmds) + + if len(*cmds) != 2 { + t.Fatal("there have to be exactly two entries") + } + + cmd := (*cmds)[0] + if cmd.Name != "test" { + t.Fatal("name of cmd 1 is '", cmd.Name, "' (test)") + } + cmd = (*cmds)[1] + if cmd.Name != "testCommandsWith2Arguments" { + t.Fatal("name of cmd 1 is '", cmd.Name, "' (testCommandsWith2Arguments)") + } +} + func TestMessageIsCommandWithCommand(t *testing.T) { message := tgbotapi.Message{Text: "/command"} message.Entities = &[]tgbotapi.MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}}