-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtelegram.go
73 lines (63 loc) · 1.58 KB
/
telegram.go
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
63
64
65
66
67
68
69
70
71
72
73
package main
import (
"fmt"
"io"
"time"
tb "gopkg.in/tucnak/telebot.v2"
)
var bot *Telegram
type Telegram struct {
bot *tb.Bot
}
func NewTelegram(api, token string) (*Telegram, error) {
bot, err := tb.NewBot(tb.Settings{
URL: api,
Token: token,
Poller: &tb.LongPoller{Timeout: 5 * time.Second},
})
if err != nil {
return nil, err
} else {
return &Telegram{bot: bot}, nil
}
}
func (tg *Telegram) ID() {
tg.bot.Handle("/id", func(m *tb.Message) {
if m.Private() {
_, err := tg.bot.Send(m.Sender, fmt.Sprintf("`User ID: %d`", m.Sender.ID), &tb.SendOptions{ParseMode: tb.ModeMarkdown})
if err != nil {
logger.Errorf("[bot] request user id: %s", err)
}
} else {
_, err := tg.bot.Send(m.Chat, fmt.Sprintf("`Chat ID: %d`", m.Chat.ID), &tb.SendOptions{ParseMode: tb.ModeMarkdown})
if err != nil {
logger.Errorf("[bot] request chat id: %s", err)
}
}
})
tg.bot.Start()
}
func (tg *Telegram) SendMessage(msg string, to int64, markdown bool) error {
opt := &tb.SendOptions{}
if markdown {
opt.ParseMode = tb.ModeMarkdown
}
_, err := tg.bot.Send(tb.ChatID(to), msg, opt)
return err
}
func (tg *Telegram) SendFile(file io.Reader, fileName, mime, caption string, to int64) error {
_, err := tg.bot.Send(tb.ChatID(to), &tb.Document{
File: tb.File{FileReader: file},
Caption: caption,
MIME: mime,
FileName: fileName,
})
return err
}
func (tg *Telegram) SendImage(image io.Reader, caption string, to int64) error {
_, err := tg.bot.Send(tb.ChatID(to), &tb.Photo{
File: tb.File{FileReader: image},
Caption: caption,
})
return err
}