aboutsummaryrefslogtreecommitdiff
path: root/examples/example.go
diff options
context:
space:
mode:
Diffstat (limited to 'examples/example.go')
-rw-r--r--examples/example.go53
1 files changed, 53 insertions, 0 deletions
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)
+ }
+ }
+}