12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package initdata
- import (
- "time"
- )
- // InitData contains init data.
- // https://docs.telegram-mini-apps.com/launch-parameters/init-data#parameters-list
- type InitData struct {
- // The date the initialization data was created. Is a number representing a
- // Unix timestamp.
- AuthDateRaw int `json:"auth_date"`
- // Optional. The number of seconds after which a message can be sent via
- // the method answerWebAppQuery.
- // https://core.telegram.org/bots/api#answerwebappquery
- CanSendAfterRaw int `json:"can_send_after"`
- // Optional. An object containing information about the chat with the bot in
- // which the Mini Apps was launched. It is returned only for Mini Apps
- // opened through the attachment menu.
- Chat Chat `json:"chat"`
- // Optional. The type of chat from which the Mini Apps was opened.
- // Returned only for applications opened by direct link.
- ChatType ChatType `json:"chat_type"`
- // Optional. A global identifier indicating the chat from which the Mini
- // Apps was opened. Returned only for applications opened by direct link.
- ChatInstance int64 `json:"chat_instance"`
- // Initialization data signature.
- // https://core.telegram.org/bots/webapps#validating-data-received-via-the-web-app
- Hash string `json:"hash"`
- // Optional. The unique session ID of the Mini App. Used in the process of
- // sending a message via the method answerWebAppQuery.
- // https://core.telegram.org/bots/api#answerwebappquery
- QueryID string `json:"query_id"`
- // Optional. An object containing data about the chat partner of the current
- // user in the chat where the bot was launched via the attachment menu.
- // Returned only for private chats and only for Mini Apps launched via the
- // attachment menu.
- Receiver User `json:"receiver"`
- // Optional. The value of the startattach or startapp query parameter
- // specified in the link. It is returned only for Mini Apps opened through
- // the attachment menu.
- StartParam string `json:"start_param"`
- // Optional. An object containing information about the current user.
- User User `json:"user"`
- }
- // AuthDate returns AuthDateRaw as time.Time.
- func (d *InitData) AuthDate() time.Time {
- return time.Unix(int64(d.AuthDateRaw), 0)
- }
- // CanSendAfter returns computed time which depends on CanSendAfterRaw and
- // AuthDate. Originally, CanSendAfterRaw means time in seconds, after which
- // `answerWebAppQuery` method can be called and that's why this value could
- // be computed as time.
- func (d *InitData) CanSendAfter() time.Time {
- return d.AuthDate().Add(time.Duration(d.CanSendAfterRaw) * time.Second)
- }
|