We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 3466ee3 commit 6a131d2Copy full SHA for 6a131d2
4 files changed
codec_misc.go
@@ -32,6 +32,16 @@ func (s *MessageEntity) Encode(e *jx.Encoder) {
32
e.Str(s.CustomEmojiID)
33
}
34
35
+ if s.UnixTime != 0 {
36
+ e.FieldStart("unix_time")
37
+ e.Int(s.UnixTime)
38
+ }
39
+
40
+ if s.DateTimeFormat != "" {
41
+ e.FieldStart("date_time_format")
42
+ e.Str(s.DateTimeFormat)
43
44
45
e.ObjEnd()
46
47
@@ -88,6 +98,20 @@ func (s *MessageEntity) Decode(d *jx.Decoder) error {
88
98
89
99
90
100
s.CustomEmojiID = v
101
+ case "unix_time":
102
+ v, err := d.Int()
103
+ if err != nil {
104
+ return err
105
106
107
+ s.UnixTime = v
108
+ case "date_time_format":
109
+ v, err := d.Str()
110
111
112
113
114
+ s.DateTimeFormat = v
91
115
default:
92
116
return d.Skip()
93
117
entities.go
@@ -2,6 +2,7 @@ package botapi
2
3
import (
4
"strconv"
5
+ "strings"
6
7
"github.com/gotd/td/tg"
8
)
@@ -130,6 +131,33 @@ func entitiesFromTg(entities []tg.MessageEntityClass) []MessageEntity {
130
131
case *tg.MessageEntityCustomEmoji:
132
me.Type = EntityCustomEmoji
133
me.CustomEmojiID = strconv.FormatInt(e.DocumentID, 10)
134
+ case *tg.MessageEntityFormattedDate:
135
+ me.Type = EntityDateTime
136
+ me.UnixTime = e.Date
137
138
+ if e.Relative {
139
+ me.DateTimeFormat = "r"
140
+ } else {
141
+ var dateTimeFormat strings.Builder
142
143
+ if e.DayOfWeek {
144
+ dateTimeFormat.WriteString("w")
145
146
147
+ if e.ShortDate {
148
+ dateTimeFormat.WriteString("d")
149
+ } else if e.LongDate {
150
+ dateTimeFormat.WriteString("D")
151
152
153
+ if e.ShortTime {
154
+ dateTimeFormat.WriteString("t")
155
+ } else if e.LongTime {
156
+ dateTimeFormat.WriteString("T")
157
158
159
+ me.DateTimeFormat = dateTimeFormat.String()
160
161
162
// Unknown or bot-irrelevant entity (e.g. unknown future types): skip.
163
continue
enums.go
@@ -73,6 +73,7 @@ const (
73
EntityTextLink MessageEntityType = "text_link"
74
EntityTextMention MessageEntityType = "text_mention"
75
EntityCustomEmoji MessageEntityType = "custom_emoji"
76
+ EntityDateTime MessageEntityType = "date_time"
77
78
79
// ChatMemberStatus is a member's status in a chat.
types_message.go
@@ -5,13 +5,15 @@ import "github.com/gotd/td/tg"
// MessageEntity represents one special entity in a text message (e.g. a
// hashtag, link, or formatted run).
type MessageEntity struct {
- Type MessageEntityType `json:"type"`
9
- Offset int `json:"offset"`
10
- Length int `json:"length"`
11
- URL string `json:"url,omitempty"`
12
- User *User `json:"user,omitempty"`
13
- Language string `json:"language,omitempty"`
14
- CustomEmojiID string `json:"custom_emoji_id,omitempty"`
+ Type MessageEntityType `json:"type"`
+ Offset int `json:"offset"`
+ Length int `json:"length"`
+ URL string `json:"url,omitempty"`
+ User *User `json:"user,omitempty"`
+ Language string `json:"language,omitempty"`
+ CustomEmojiID string `json:"custom_emoji_id,omitempty"`
15
+ UnixTime int `json:"unix_time,omitempty"`
16
+ DateTimeFormat string `json:"date_time_format,omitempty"`
17
18
19
// Contact represents a phone contact.
0 commit comments