/
types.go
135 lines (105 loc) · 3.16 KB
/
types.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package telebot
// Recipient is basically any possible endpoint you can send
// messages to. It's usually a distinct user or a chat.
type Recipient interface {
// Basically, ID of the endpoint.
Destination() int
}
// User object represents a Telegram user, bot
//
// object represents a group chat if Title is empty.
type User struct {
ID int `json:"id"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Username string `json:"username"`
}
// Destination is internal user ID.
func (u User) Destination() int {
return u.ID
}
// Chat object represents a Telegram user, bot or group chat.
// Title for channels and group chats
// Type of chat, can be either “private”, or “group”, or “channel”
type Chat struct {
ID int `json:"id"`
Type string `json:"type"`
Title string `json:"title"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Username string `json:"username"`
}
// Destination is internal chat ID.
func (c Chat) Destination() int {
return c.ID
}
// IsGroupChat returns true if chat object represents a group chat.
func (c Chat) IsGroupChat() bool {
return c.Type == "group"
}
// Update object represents an incoming update.
type Update struct {
ID int `json:"update_id"`
Payload Message `json:"message"`
}
// Thumbnail object represents a image/sticker of particular size.
type Thumbnail struct {
File
Width int `json:"width"`
Height int `json:"height"`
}
// Photo object represents a photo with caption.
type Photo struct {
Thumbnail
Caption string
}
// Audio object represents an audio file (voice note).
type Audio struct {
File
// Duration of the recording in seconds as defined by sender.
Duration int `json:"duration"`
// MIME type of the file as defined by sender.
Mime string `json:"mime_type"`
}
// Document object represents a general file (as opposed to Photo or Audio).
// Telegram users can send files of any type of up to 1.5 GB in size.
type Document struct {
File
// Document thumbnail as defined by sender.
Preview Thumbnail `json:"thumb"`
// Original filename as defined by sender.
FileName string `json:"file_name"`
// MIME type of the file as defined by sender.
Mime string `json:"mime_type"`
}
// Sticker object represents a WebP image, so-called sticker.
type Sticker struct {
File
Width int `json:"width"`
Height int `json:"height"`
// Sticker thumbnail in .webp or .jpg format.
Preview Thumbnail `json:"thumb"`
}
// Video object represents an MP4-encoded video.
type Video struct {
Audio
Width int `json:"width"`
Height int `json:"height"`
// Text description of the video as defined by sender (usually empty).
Caption string `json:"caption"`
// Video thumbnail.
Preview Thumbnail `json:"thumb"`
}
// Contact object represents a contact to Telegram user
type Contact struct {
PhoneNumber string `json:"phone_number"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
// Contact's username in Telegram (might be empty).
Username string `json:"user_id"`
}
// Location object represents geographic position.
type Location struct {
Longitude float32 `json:"longitude"`
Latitude float32 `json:"latitude"`
}