From 94c96cef29cd83bc60b2eabb8bb89c9fd8c7059b Mon Sep 17 00:00:00 2001 From: Alexander Kiryukhin Date: Fri, 9 Aug 2019 02:02:05 +0300 Subject: 0.1.8 Release --- examples/example.go | 53 ++++++++++++++++++++++++++++++ examples/example_1.go | 54 ------------------------------- examples/example_2.go | 72 ----------------------------------------- examples/example_longpolling.go | 62 +++++++++++++++++++++++++++++++++++ examples/example_webhook.go | 53 ++++++++++++++++++++++++++++++ 5 files changed, 168 insertions(+), 126 deletions(-) create mode 100644 examples/example.go delete mode 100644 examples/example_1.go delete mode 100644 examples/example_2.go create mode 100644 examples/example_longpolling.go create mode 100644 examples/example_webhook.go (limited to 'examples') diff --git a/examples/example.go b/examples/example.go new file mode 100644 index 0000000..b4e84ac --- /dev/null +++ b/examples/example.go @@ -0,0 +1,53 @@ +// +build ignore + +package main + +import ( + "context" + "fmt" + "log" + "os" + + "github.com/neonxp/tamtam" +) + +func main() { + api := tamtam.New(os.Getenv("TOKEN")) + + info, err := api.Bots.GetBot() // Простой метод + log.Printf("Get me: %#v %#v", info, err) + go api.UpdatesLoop(context.Background()) // Запуск цикла получения обновлений + for upd := range api.GetUpdates() { // Чтение из канала с обновлениями + log.Printf("Received: %#v", upd) + switch upd := upd.(type) { // Определение типа пришедшего обновления + case *tamtam.MessageCreatedUpdate: + // Создание клавиатуры + keyboard := api.Messages.NewKeyboardBuilder() + keyboard. + AddRow(). + AddGeolocation("Прислать геолокацию", true). + AddContact("Прислать контакт") + keyboard. + AddRow(). + AddLink("Библиотека", tamtam.POSITIVE, "https://github.com/neonxp/tamtam"). + AddCallback("Колбек 1", tamtam.NEGATIVE, "callback_1"). + AddCallback("Колбек 2", tamtam.NEGATIVE, "callback_2") + + // Отправка сообщения с клавиатурой + res, err := api.Messages.SendMessage(0, upd.Message.Sender.UserId, &tamtam.NewMessageBody{ + Text: fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text), + Attachments: []interface{}{ + tamtam.NewInlineKeyboardAttachmentRequest(keyboard.Build()), + }, + }) + log.Printf("Answer: %#v %#v", res, err) + case *tamtam.MessageCallbackUpdate: + res, err := api.Messages.SendMessage(0, upd.Callback.User.UserId, &tamtam.NewMessageBody{ + Text: "Callback: " + upd.Callback.Payload, + }) + log.Printf("Answer: %#v %#v", res, err) + default: + log.Printf("Unknown type: %#v", upd) + } + } +} diff --git a/examples/example_1.go b/examples/example_1.go deleted file mode 100644 index 5c03063..0000000 --- a/examples/example_1.go +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Webhook example - */ -package main - -import ( - "fmt" - "github.com/neonxp/tamtam" - "log" - "net/http" - "os" -) - -func main() { - // Initialisation - api := tamtam.New(os.Getenv("TOKEN")) - - // Some methods demo: - info, err := api.GetMe() - log.Printf("Get me: %#v %#v", info, err) - chats, err := api.GetChats(0, 0) - log.Printf("Get chats: %#v %#v", chats, err) - chat, err := api.GetChat(chats.Chats[0].ChatId) - log.Printf("Get chat: %#v %#v", chat, err) - msgs, err := api.GetMessages(chats.Chats[0].ChatId, nil, 0, 0, 0) - log.Printf("Get messages: %#v %#v", msgs, err) - subs, _ := api.GetSubscriptions() - for _, s := range subs.Subscriptions { - _, _ = api.Unsubscribe(s.Url) - } - subscriptionResp, err := api.Subscribe("https://576df2ec.ngrok.io/webhook", []string{}) - log.Printf("Subscription: %#v %#v", subscriptionResp, err) - - ch := make(chan interface{}) // Channel with updates from TamTam - - http.HandleFunc("/webhook", api.GetHandler(ch)) - go func() { - for { - upd := <-ch - log.Printf("Received: %#v", upd) - switch upd := upd.(type) { - case tamtam.UpdateMessageCreated: - res, err := api.SendMessage(0, upd.Message.Sender.UserId, &tamtam.NewMessageBody{ - Text: fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text), - }) - log.Printf("Answer: %#v %#v", res, err) - default: - log.Printf("Unknown type: %#v", upd) - } - } - }() - - http.ListenAndServe(":10888", nil) -} diff --git a/examples/example_2.go b/examples/example_2.go deleted file mode 100644 index 74547fa..0000000 --- a/examples/example_2.go +++ /dev/null @@ -1,72 +0,0 @@ -// +build ignore - -/** - * Updates loop example - */ -package main - -import ( - "context" - "fmt" - "github.com/neonxp/tamtam" - "log" - "os" - "os/signal" -) - -func main() { - // Initialisation - api := tamtam.New(os.Getenv("TOKEN")) - - // Some methods demo: - info, err := api.GetMe() - log.Printf("Get me: %#v %#v", info, err) - chats, err := api.GetChats(0, 0) - log.Printf("Get chats: %#v %#v", chats, err) - chat, err := api.GetChat(chats.Chats[0].ChatId) - log.Printf("Get chat: %#v %#v", chat, err) - subs, _ := api.GetSubscriptions() - for _, s := range subs.Subscriptions { - _, _ = api.Unsubscribe(s.Url) - } - ch := make(chan interface{}, 1) // Channel with updates from TamTam - - ctx, cancel := context.WithCancel(context.Background()) - - go func() { - for { - select { - case upd := <-ch: - log.Printf("Received: %#v", upd) - switch upd := upd.(type) { - case tamtam.UpdateMessageCreated: - res, err := api.SendMessage(0, upd.Message.Sender.UserId, &tamtam.NewMessageBody{ - Text: fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text), - }) - log.Printf("Answer: %#v %#v", res, err) - default: - log.Printf("Unknown type: %#v", upd) - } - case <-ctx.Done(): - return - } - - } - }() - - go func() { - exit := make(chan os.Signal) - signal.Notify(exit, os.Kill, os.Interrupt) - select { - case <-exit: - cancel() - case <-ctx.Done(): - return - } - }() - - if err := api.GetUpdatesLoop(ctx, ch); err != nil { - log.Fatalln(err) - } - -} diff --git a/examples/example_longpolling.go b/examples/example_longpolling.go new file mode 100644 index 0000000..67a0d7c --- /dev/null +++ b/examples/example_longpolling.go @@ -0,0 +1,62 @@ +// +build ignore + +/** + * Updates loop example + */ +package main + +import ( + "context" + "fmt" + "log" + "os" + "os/signal" + + "github.com/neonxp/tamtam" +) + +func main() { + // Initialisation + api := tamtam.New(os.Getenv("TOKEN")) + + // Some methods demo: + info, err := api.Bots.GetBot() + log.Printf("Get me: %#v %#v", info, err) + + ctx, cancel := context.WithCancel(context.Background()) + go func() { + for { + select { + case upd := <-api.GetUpdates(): + log.Printf("Received: %#v", upd) + switch upd := upd.(type) { + case *tamtam.MessageCreatedUpdate: + res, err := api.Messages.SendMessage(0, upd.Message.Sender.UserId, &tamtam.NewMessageBody{ + Text: fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text), + }) + log.Printf("Answer: %#v %#v", res, err) + default: + log.Printf("Unknown type: %#v", upd) + } + case <-ctx.Done(): + return + } + + } + }() + go func() { + exit := make(chan os.Signal) + signal.Notify(exit, os.Kill, os.Interrupt) + select { + case <-exit: + cancel() + case <-ctx.Done(): + return + } + }() + + if err := api.UpdatesLoop(ctx); err != nil { + log.Fatalln(err) + } + +} diff --git a/examples/example_webhook.go b/examples/example_webhook.go new file mode 100644 index 0000000..ad1bdae --- /dev/null +++ b/examples/example_webhook.go @@ -0,0 +1,53 @@ +// +build ignore + +/** + * Webhook example + */ +package main + +import ( + "fmt" + "log" + "net/http" + "os" + + "github.com/neonxp/tamtam" +) + +func main() { + // Initialisation + api := tamtam.New(os.Getenv("TOKEN")) + host := os.Getenv("HOST") + + // Some methods demo: + info, err := api.Bots.GetBot() + log.Printf("Get me: %#v %#v", info, err) + + subs, _ := api.Subscriptions.GetSubscriptions() + for _, s := range subs.Subscriptions { + _, _ = api.Subscriptions.Unsubscribe(s.Url) + } + subscriptionResp, err := api.Subscriptions.Subscribe(host+"/webhook", []string{}) + log.Printf("Subscription: %#v %#v", subscriptionResp, err) + + ch := make(chan interface{}) // Channel with updates from TamTam + + http.HandleFunc("/webhook", api.GetHandler(ch)) + go func() { + for { + upd := <-ch + log.Printf("Received: %#v", upd) + switch upd := upd.(type) { + case tamtam.MessageCreatedUpdate: + res, err := api.Messages.SendMessage(0, upd.Message.Sender.UserId, &tamtam.NewMessageBody{ + Text: fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text), + }) + log.Printf("Answer: %#v %#v", res, err) + default: + log.Printf("Unknown type: %#v", upd) + } + } + }() + + http.ListenAndServe(":10888", nil) +} -- cgit v1.2.3