all repos — telegram-bot-api @ 1cede9cf458b162a92832af661b53b9b2f1ed221

Golang bindings for the Telegram Bot API

Some helper methods added to Message. Some tests added. Small fixes
Gleb Sinyavsky zhulik.gleb@gmail.com
Sun, 13 Dec 2015 20:31:59 +0300
commit

1cede9cf458b162a92832af661b53b9b2f1ed221

parent

eb6b784a5a27882aa5c911db45bfacecc31dad98

3 files changed, 89 insertions(+), 4 deletions(-)

jump to
M configs.goconfigs.go

@@ -93,8 +93,8 @@ FilePath string

File interface{} FileID string UseExisting bool - MimeType string - FileSize int + MimeType string + FileSize int } // Params returns map[string]string representation of BaseFile
M types.gotypes.go

@@ -127,9 +127,25 @@ func (m *Message) IsCommand() bool {

return m.Text != "" && m.Text[0] == '/' } -// Command returns first word from message +// Command if message is command returns first word from message(entire command) +// otherwise returns empty string func (m *Message) Command() string { - return strings.Split(m.Text, " ")[0] + if m.IsCommand() { + return strings.SplitN(m.Text, " ", 2)[0] + } + return "" +} + +// CommandArguments if message is command, returns all text after command, excluding the command itself +// otherwise returns empty string +func (m *Message) CommandArguments() string { + if m.IsCommand() { + split := strings.SplitN(m.Text, " ", 2) + if len(split) == 2 { + return strings.SplitN(m.Text, " ", 2)[1] + } + } + return "" } // PhotoSize contains information about photos, including ID and Width and Height.
M types_test.gotypes_test.go

@@ -31,6 +31,75 @@ t.Fail()

} } +func TestMessageIsCommandWithCommand(t *testing.T) { + message := tgbotapi.Message{Text: "/command"} + + if message.IsCommand() != true { + t.Fail() + } +} + +func TestIsCommandWithText(t *testing.T) { + message := tgbotapi.Message{Text: "some text"} + + if message.IsCommand() != false { + t.Fail() + } +} + +func TestIsCommandWithEmptyText(t *testing.T) { + message := tgbotapi.Message{Text: ""} + + if message.IsCommand() != false { + t.Fail() + } +} + +func TestCommandWithCommand(t *testing.T) { + message := tgbotapi.Message{Text: "/command"} + + if message.Command() != "/command" { + t.Fail() + } +} + +func TestCommandWithEmptyText(t *testing.T) { + message := tgbotapi.Message{Text: ""} + + if message.Command() != "" { + t.Fail() + } +} + +func TestCommandWithNonCommand(t *testing.T) { + message := tgbotapi.Message{Text: "test text"} + + if message.Command() != "" { + t.Fail() + } +} + +func TestMessageCommandArgumentsWithArguments(t *testing.T) { + message := tgbotapi.Message{Text: "/command with arguments"} + if message.CommandArguments() != "with arguments" { + t.Fail() + } +} + +func TestMessageCommandArgumentsWithoutArguments(t *testing.T) { + message := tgbotapi.Message{Text: "/command"} + if message.CommandArguments() != "" { + t.Fail() + } +} + +func TestMessageCommandArgumentsForNonCommand(t *testing.T) { + message := tgbotapi.Message{Text: "test text"} + if message.CommandArguments() != "" { + t.Fail() + } +} + func TestChatIsPrivate(t *testing.T) { chat := tgbotapi.Chat{ID: 10, Type: "private"}