Merge branch 'master' into master

pull/216/head
Ali Error 7 years ago committed by GitHub
commit f1ca3f538e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      .gitignore
  2. 5
      .travis.yml
  3. 27
      README.md
  4. 16
      bot.go
  5. 19
      bot_test.go
  6. 3
      helpers.go
  7. 27
      log.go

1
.gitignore vendored

@ -1,2 +1,3 @@
.idea/
coverage.out
tmp/

@ -1,5 +1,6 @@
language: go
go:
- 1.4
- tip
- '1.10'
- '1.11'
- tip

@ -3,10 +3,6 @@
[![GoDoc](https://godoc.org/github.com/go-telegram-bot-api/telegram-bot-api?status.svg)](http://godoc.org/github.com/go-telegram-bot-api/telegram-bot-api)
[![Travis](https://travis-ci.org/go-telegram-bot-api/telegram-bot-api.svg)](https://travis-ci.org/go-telegram-bot-api/telegram-bot-api)
All methods have been added, and all features should be available.
If you want a feature that hasn't been added yet or something is broken,
open an issue and I'll see what I can do.
All methods are fairly self explanatory, and reading the godoc page should
explain everything. If something isn't clear, open an issue or submit
a pull request.
@ -16,14 +12,14 @@ without any additional features. There are other projects for creating
something with plugins and command handlers without having to design
all that yourself.
Use `github.com/go-telegram-bot-api/telegram-bot-api` for the latest
version, or use `gopkg.in/telegram-bot-api.v4` for the stable build.
Join [the development group](https://telegram.me/go_telegram_bot_api) if
you want to ask questions or discuss development.
## Example
First, ensure the library is installed and up to date by running
`go get -u github.com/go-telegram-bot-api/telegram-bot-api`.
This is a very simple bot that just displays any gotten updates,
then replies it to that chat.
@ -32,7 +28,8 @@ package main
import (
"log"
"gopkg.in/telegram-bot-api.v4"
"github.com/go-telegram-bot-api/telegram-bot-api"
)
func main() {
@ -51,7 +48,7 @@ func main() {
updates, err := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil {
if update.Message == nil { // ignore any non-Message Updates
continue
}
@ -65,6 +62,11 @@ func main() {
}
```
There are more examples on the [wiki](https://github.com/go-telegram-bot-api/telegram-bot-api/wiki)
with detailed information on how to do many differen kinds of things.
It's a great place to get started on using keyboards, commands, or other
kinds of reply markup.
If you need to use webhooks (if you wish to run on Google App Engine),
you may use a slightly different method.
@ -72,9 +74,10 @@ you may use a slightly different method.
package main
import (
"gopkg.in/telegram-bot-api.v4"
"log"
"net/http"
"github.com/go-telegram-bot-api/telegram-bot-api"
)
func main() {
@ -96,7 +99,7 @@ func main() {
log.Fatal(err)
}
if info.LastErrorDate != 0 {
log.Printf("[Telegram callback failed]%s", info.LastErrorMessage)
log.Printf("Telegram callback failed: %s", info.LastErrorMessage)
}
updates := bot.ListenForWebhook("/" + bot.Token)
go http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil)
@ -114,5 +117,5 @@ properly signed.
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3560 -subj "//O=Org\CN=Test" -nodes
Now that [Let's Encrypt](https://letsencrypt.org) has entered public beta,
Now that [Let's Encrypt](https://letsencrypt.org) is available,
you may wish to generate your free TLS certificate there.

@ -9,7 +9,6 @@ import (
"fmt"
"io"
"io/ioutil"
"log"
"net/http"
"net/url"
"os"
@ -26,8 +25,13 @@ type BotAPI struct {
Debug bool `json:"debug"`
Buffer int `json:"buffer"`
master
Self User `json:"-"`
Client *http.Client `json:"-"`
=======
Self User `json:"-"`
Client *http.Client `json:"-"`
master
shutdownChannel chan interface{}
}
@ -44,9 +48,15 @@ func NewBotAPI(token string) (*BotAPI, error) {
// It requires a token, provided by @BotFather on Telegram.
func NewBotAPIWithClient(token string, client *http.Client) (*BotAPI, error) {
bot := &BotAPI{
master
Token: token,
Client: client,
Buffer: 100,
=======
Token: token,
Client: client,
Buffer: 100,
master
shutdownChannel: make(chan interface{}),
}
@ -489,7 +499,11 @@ func (bot *BotAPI) GetUpdatesChan(config UpdateConfig) (UpdatesChannel, error) {
return
default:
}
master
=======
master
updates, err := bot.GetUpdates(config)
if err != nil {
log.Println(err)

@ -473,13 +473,10 @@ func TestSetWebhookWithCert(t *testing.T) {
t.Error(err)
t.Fail()
}
info, err := bot.GetWebhookInfo()
_, err = bot.GetWebhookInfo()
if err != nil {
t.Error(err)
}
if info.LastErrorDate != 0 {
t.Errorf("[Telegram callback failed]%s", info.LastErrorMessage)
}
bot.RemoveWebhook()
}
@ -519,6 +516,20 @@ func TestUpdatesChan(t *testing.T) {
}
}
func TestSendWithMediaGroup(t *testing.T) {
bot, _ := getBot(t)
cfg := tgbotapi.NewMediaGroup(ChatID, []interface{}{
tgbotapi.NewInputMediaPhoto("https://i.imgur.com/unQLJIb.jpg"),
tgbotapi.NewInputMediaPhoto("https://i.imgur.com/J5qweNZ.jpg"),
tgbotapi.NewInputMediaVideo("https://i.imgur.com/F6RmI24.mp4"),
})
_, err := bot.Send(cfg)
if err != nil {
t.Error(err)
}
}
func ExampleNewBotAPI() {
bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
if err != nil {

@ -1,7 +1,6 @@
package tgbotapi
import (
"log"
"net/url"
)
@ -14,7 +13,7 @@ func NewMessage(chatID int64, text string) MessageConfig {
ChatID: chatID,
ReplyToMessageID: 0,
},
Text: text,
Text: text,
DisableWebPagePreview: false,
}
}

@ -0,0 +1,27 @@
package tgbotapi
import (
"errors"
stdlog "log"
"os"
)
// BotLogger is an interface that represents the required methods to log data.
//
// Instead of requiring the standard logger, we can just specify the methods we
// use and allow users to pass anything that implements these.
type BotLogger interface {
Println(v ...interface{})
Printf(format string, v ...interface{})
}
var log BotLogger = stdlog.New(os.Stderr, "", stdlog.LstdFlags)
// SetLogger specifies the logger that the package should use.
func SetLogger(logger BotLogger) error {
if logger == nil {
return errors.New("logger is nil")
}
log = logger
return nil
}