aboutsummaryrefslogtreecommitdiff
path: root/examples/example.go
blob: d6b7ab4f976b5a9159da089c9b8e93721acac268 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package main

import (
	"context"
	"log"
	"os"
	"os/signal"

	"github.com/neonxp/tamtam"
	"github.com/neonxp/tamtam/schemes"
)

func main() {
	api := tamtam.New(os.Getenv("TOKEN"))

	info, err := api.Bots.GetBot() // Простой метод
	log.Printf("Get me: %#v %#v", info, err)
	ctx, cancel := context.WithCancel(context.Background())
	go func() {
		exit := make(chan os.Signal)
		signal.Notify(exit, os.Kill, os.Interrupt)
		<-exit
		cancel()
	}()
	for upd := range api.GetUpdates(ctx) { // Чтение из канала с обновлениями
		log.Printf("Received: %#v", upd)
		switch upd := upd.(type) { // Определение типа пришедшего обновления
		case *schemes.MessageCreatedUpdate:
			// Создание клавиатуры
			keyboard := api.Messages.NewKeyboardBuilder()
			keyboard.
				AddRow().
				AddGeolocation("Прислать геолокацию", true).
				AddContact("Прислать контакт")
			keyboard.
				AddRow().
				AddLink("Библиотека", schemes.POSITIVE, "https://github.com/neonxp/tamtam").
				AddCallback("Колбек 1", schemes.NEGATIVE, "callback_1").
				AddCallback("Колбек 2", schemes.NEGATIVE, "callback_2")
			keyboard.
				AddRow().
				AddCallback("Картинка", schemes.POSITIVE, "picture")

			// Отправка сообщения с клавиатурой
			err := api.Messages.Send(tamtam.NewMessage().SetUser(upd.Message.Sender.UserId).AddKeyboard(keyboard))
			log.Printf("Answer: %#v", err)
		case *schemes.MessageCallbackUpdate:
			// Ответ на коллбек
			if upd.Callback.Payload == "picture" {
				photo, err := api.Uploads.UploadPhotoFromFile("./examples/example.jpg")
				if err != nil {
					log.Fatal(err)
				}
				if err := api.Messages.Send(tamtam.NewMessage().SetUser(upd.Message.Sender.UserId).AddPhoto(photo)); err != nil {
					log.Fatal(err)
				}
			}
		default:
			log.Printf("Unknown type: %#v", upd)
		}
	}
}