Update to TDLib master

This commit is contained in:
c0re100 2022-05-09 19:35:19 +08:00
parent 94b077458b
commit 1011dc13ae
No known key found for this signature in database
GPG key ID: 7C3B3004FE745AAF
4 changed files with 871 additions and 13 deletions

View file

@ -8098,7 +8098,7 @@ type SendCallDebugInformationRequest struct {
DebugInformation string `json:"debug_information"` DebugInformation string `json:"debug_information"`
} }
// Sends debug information for a call // Sends debug information for a call to Telegram servers
func (client *Client) SendCallDebugInformation(req *SendCallDebugInformationRequest) (*Ok, error) { func (client *Client) SendCallDebugInformation(req *SendCallDebugInformationRequest) (*Ok, error) {
result, err := client.Send(Request{ result, err := client.Send(Request{
meta: meta{ meta: meta{
@ -8120,6 +8120,35 @@ func (client *Client) SendCallDebugInformation(req *SendCallDebugInformationRequ
return UnmarshalOk(result.Data) return UnmarshalOk(result.Data)
} }
type SendCallLogRequest struct {
// Call identifier
CallId int32 `json:"call_id"`
// Call log file. Only inputFileLocal and inputFileGenerated are supported
LogFile InputFile `json:"log_file"`
}
// Sends log file for a call to Telegram servers
func (client *Client) SendCallLog(req *SendCallLogRequest) (*Ok, error) {
result, err := client.Send(Request{
meta: meta{
Type: "sendCallLog",
},
Data: map[string]interface{}{
"call_id": req.CallId,
"log_file": req.LogFile,
},
})
if err != nil {
return nil, err
}
if result.Type == "error" {
return nil, buildResponseError(result.Data)
}
return UnmarshalOk(result.Data)
}
type GetVideoChatAvailableParticipantsRequest struct { type GetVideoChatAvailableParticipantsRequest struct {
// Chat identifier // Chat identifier
ChatId int64 `json:"chat_id"` ChatId int64 `json:"chat_id"`
@ -9299,7 +9328,7 @@ type SearchUserByPhoneNumberRequest struct {
PhoneNumber string `json:"phone_number"` PhoneNumber string `json:"phone_number"`
} }
// Searches a user by their phone number // Searches a user by their phone number. Returns a 404 error if the user can't be found
func (client *Client) SearchUserByPhoneNumber(req *SearchUserByPhoneNumberRequest) (*User, error) { func (client *Client) SearchUserByPhoneNumber(req *SearchUserByPhoneNumberRequest) (*User, error) {
result, err := client.Send(Request{ result, err := client.Send(Request{
meta: meta{ meta: meta{

View file

@ -77,6 +77,7 @@ const (
ClassJsonValue = "JsonValue" ClassJsonValue = "JsonValue"
ClassUserPrivacySettingRule = "UserPrivacySettingRule" ClassUserPrivacySettingRule = "UserPrivacySettingRule"
ClassUserPrivacySetting = "UserPrivacySetting" ClassUserPrivacySetting = "UserPrivacySetting"
ClassSessionType = "SessionType"
ClassChatReportReason = "ChatReportReason" ClassChatReportReason = "ChatReportReason"
ClassInternalLinkType = "InternalLinkType" ClassInternalLinkType = "InternalLinkType"
ClassFileType = "FileType" ClassFileType = "FileType"
@ -1088,6 +1089,23 @@ const (
TypeUserPrivacySettingAllowPeerToPeerCalls = "userPrivacySettingAllowPeerToPeerCalls" TypeUserPrivacySettingAllowPeerToPeerCalls = "userPrivacySettingAllowPeerToPeerCalls"
TypeUserPrivacySettingAllowFindingByPhoneNumber = "userPrivacySettingAllowFindingByPhoneNumber" TypeUserPrivacySettingAllowFindingByPhoneNumber = "userPrivacySettingAllowFindingByPhoneNumber"
TypeAccountTtl = "accountTtl" TypeAccountTtl = "accountTtl"
TypeSessionTypeAndroid = "sessionTypeAndroid"
TypeSessionTypeApple = "sessionTypeApple"
TypeSessionTypeBrave = "sessionTypeBrave"
TypeSessionTypeChrome = "sessionTypeChrome"
TypeSessionTypeEdge = "sessionTypeEdge"
TypeSessionTypeFirefox = "sessionTypeFirefox"
TypeSessionTypeIpad = "sessionTypeIpad"
TypeSessionTypeIphone = "sessionTypeIphone"
TypeSessionTypeLinux = "sessionTypeLinux"
TypeSessionTypeMac = "sessionTypeMac"
TypeSessionTypeOpera = "sessionTypeOpera"
TypeSessionTypeSafari = "sessionTypeSafari"
TypeSessionTypeUbuntu = "sessionTypeUbuntu"
TypeSessionTypeUnknown = "sessionTypeUnknown"
TypeSessionTypeVivaldi = "sessionTypeVivaldi"
TypeSessionTypeWindows = "sessionTypeWindows"
TypeSessionTypeXbox = "sessionTypeXbox"
TypeSession = "session" TypeSession = "session"
TypeSessions = "sessions" TypeSessions = "sessions"
TypeConnectedWebsite = "connectedWebsite" TypeConnectedWebsite = "connectedWebsite"
@ -1692,6 +1710,11 @@ type UserPrivacySetting interface {
UserPrivacySettingType() string UserPrivacySettingType() string
} }
// Represents the type of a session
type SessionType interface {
SessionTypeType() string
}
// Describes the reason why a chat is reported // Describes the reason why a chat is reported
type ChatReportReason interface { type ChatReportReason interface {
ChatReportReasonType() string ChatReportReasonType() string
@ -18907,6 +18930,8 @@ type CallStateDiscarded struct {
NeedRating bool `json:"need_rating"` NeedRating bool `json:"need_rating"`
// True, if the call debug information must be sent to the server // True, if the call debug information must be sent to the server
NeedDebugInformation bool `json:"need_debug_information"` NeedDebugInformation bool `json:"need_debug_information"`
// True, if the call log must be sent to the server
NeedLog bool `json:"need_log"`
} }
func (entity *CallStateDiscarded) MarshalJSON() ([]byte, error) { func (entity *CallStateDiscarded) MarshalJSON() ([]byte, error) {
@ -18934,6 +18959,7 @@ func (callStateDiscarded *CallStateDiscarded) UnmarshalJSON(data []byte) error {
Reason json.RawMessage `json:"reason"` Reason json.RawMessage `json:"reason"`
NeedRating bool `json:"need_rating"` NeedRating bool `json:"need_rating"`
NeedDebugInformation bool `json:"need_debug_information"` NeedDebugInformation bool `json:"need_debug_information"`
NeedLog bool `json:"need_log"`
} }
err := json.Unmarshal(data, &tmp) err := json.Unmarshal(data, &tmp)
@ -18943,6 +18969,7 @@ func (callStateDiscarded *CallStateDiscarded) UnmarshalJSON(data []byte) error {
callStateDiscarded.NeedRating = tmp.NeedRating callStateDiscarded.NeedRating = tmp.NeedRating
callStateDiscarded.NeedDebugInformation = tmp.NeedDebugInformation callStateDiscarded.NeedDebugInformation = tmp.NeedDebugInformation
callStateDiscarded.NeedLog = tmp.NeedLog
fieldReason, _ := UnmarshalCallDiscardReason(tmp.Reason) fieldReason, _ := UnmarshalCallDiscardReason(tmp.Reason)
callStateDiscarded.Reason = fieldReason callStateDiscarded.Reason = fieldReason
@ -25381,8 +25408,8 @@ type Notification struct {
Id int32 `json:"id"` Id int32 `json:"id"`
// Notification date // Notification date
Date int32 `json:"date"` Date int32 `json:"date"`
// Identifier of the notification sound to be played; 0 if sound is disabled // True, if the notification was explicitly sent without sound
SoundId JsonInt64 `json:"sound_id"` IsSilent bool `json:"is_silent"`
// Notification type // Notification type
Type NotificationType `json:"type"` Type NotificationType `json:"type"`
} }
@ -25407,7 +25434,7 @@ func (notification *Notification) UnmarshalJSON(data []byte) error {
var tmp struct { var tmp struct {
Id int32 `json:"id"` Id int32 `json:"id"`
Date int32 `json:"date"` Date int32 `json:"date"`
SoundId JsonInt64 `json:"sound_id"` IsSilent bool `json:"is_silent"`
Type json.RawMessage `json:"type"` Type json.RawMessage `json:"type"`
} }
@ -25418,7 +25445,7 @@ func (notification *Notification) UnmarshalJSON(data []byte) error {
notification.Id = tmp.Id notification.Id = tmp.Id
notification.Date = tmp.Date notification.Date = tmp.Date
notification.SoundId = tmp.SoundId notification.IsSilent = tmp.IsSilent
fieldType, _ := UnmarshalNotificationType(tmp.Type) fieldType, _ := UnmarshalNotificationType(tmp.Type)
notification.Type = fieldType notification.Type = fieldType
@ -26278,6 +26305,431 @@ func (*AccountTtl) GetType() string {
return TypeAccountTtl return TypeAccountTtl
} }
// The session is running on an Android device
type SessionTypeAndroid struct{
meta
}
func (entity *SessionTypeAndroid) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeAndroid
return json.Marshal((*stub)(entity))
}
func (*SessionTypeAndroid) GetClass() string {
return ClassSessionType
}
func (*SessionTypeAndroid) GetType() string {
return TypeSessionTypeAndroid
}
func (*SessionTypeAndroid) SessionTypeType() string {
return TypeSessionTypeAndroid
}
// The session is running on a generic Apple device
type SessionTypeApple struct{
meta
}
func (entity *SessionTypeApple) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeApple
return json.Marshal((*stub)(entity))
}
func (*SessionTypeApple) GetClass() string {
return ClassSessionType
}
func (*SessionTypeApple) GetType() string {
return TypeSessionTypeApple
}
func (*SessionTypeApple) SessionTypeType() string {
return TypeSessionTypeApple
}
// The session is running on the Brave browser
type SessionTypeBrave struct{
meta
}
func (entity *SessionTypeBrave) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeBrave
return json.Marshal((*stub)(entity))
}
func (*SessionTypeBrave) GetClass() string {
return ClassSessionType
}
func (*SessionTypeBrave) GetType() string {
return TypeSessionTypeBrave
}
func (*SessionTypeBrave) SessionTypeType() string {
return TypeSessionTypeBrave
}
// The session is running on the Chrome browser
type SessionTypeChrome struct{
meta
}
func (entity *SessionTypeChrome) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeChrome
return json.Marshal((*stub)(entity))
}
func (*SessionTypeChrome) GetClass() string {
return ClassSessionType
}
func (*SessionTypeChrome) GetType() string {
return TypeSessionTypeChrome
}
func (*SessionTypeChrome) SessionTypeType() string {
return TypeSessionTypeChrome
}
// The session is running on the Edge browser
type SessionTypeEdge struct{
meta
}
func (entity *SessionTypeEdge) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeEdge
return json.Marshal((*stub)(entity))
}
func (*SessionTypeEdge) GetClass() string {
return ClassSessionType
}
func (*SessionTypeEdge) GetType() string {
return TypeSessionTypeEdge
}
func (*SessionTypeEdge) SessionTypeType() string {
return TypeSessionTypeEdge
}
// The session is running on the Firefox browser
type SessionTypeFirefox struct{
meta
}
func (entity *SessionTypeFirefox) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeFirefox
return json.Marshal((*stub)(entity))
}
func (*SessionTypeFirefox) GetClass() string {
return ClassSessionType
}
func (*SessionTypeFirefox) GetType() string {
return TypeSessionTypeFirefox
}
func (*SessionTypeFirefox) SessionTypeType() string {
return TypeSessionTypeFirefox
}
// The session is running on an iPad device
type SessionTypeIpad struct{
meta
}
func (entity *SessionTypeIpad) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeIpad
return json.Marshal((*stub)(entity))
}
func (*SessionTypeIpad) GetClass() string {
return ClassSessionType
}
func (*SessionTypeIpad) GetType() string {
return TypeSessionTypeIpad
}
func (*SessionTypeIpad) SessionTypeType() string {
return TypeSessionTypeIpad
}
// The session is running on an iPhone device
type SessionTypeIphone struct{
meta
}
func (entity *SessionTypeIphone) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeIphone
return json.Marshal((*stub)(entity))
}
func (*SessionTypeIphone) GetClass() string {
return ClassSessionType
}
func (*SessionTypeIphone) GetType() string {
return TypeSessionTypeIphone
}
func (*SessionTypeIphone) SessionTypeType() string {
return TypeSessionTypeIphone
}
// The session is running on a Linux device
type SessionTypeLinux struct{
meta
}
func (entity *SessionTypeLinux) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeLinux
return json.Marshal((*stub)(entity))
}
func (*SessionTypeLinux) GetClass() string {
return ClassSessionType
}
func (*SessionTypeLinux) GetType() string {
return TypeSessionTypeLinux
}
func (*SessionTypeLinux) SessionTypeType() string {
return TypeSessionTypeLinux
}
// The session is running on a Mac device
type SessionTypeMac struct{
meta
}
func (entity *SessionTypeMac) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeMac
return json.Marshal((*stub)(entity))
}
func (*SessionTypeMac) GetClass() string {
return ClassSessionType
}
func (*SessionTypeMac) GetType() string {
return TypeSessionTypeMac
}
func (*SessionTypeMac) SessionTypeType() string {
return TypeSessionTypeMac
}
// The session is running on the Opera browser
type SessionTypeOpera struct{
meta
}
func (entity *SessionTypeOpera) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeOpera
return json.Marshal((*stub)(entity))
}
func (*SessionTypeOpera) GetClass() string {
return ClassSessionType
}
func (*SessionTypeOpera) GetType() string {
return TypeSessionTypeOpera
}
func (*SessionTypeOpera) SessionTypeType() string {
return TypeSessionTypeOpera
}
// The session is running on the Safari browser
type SessionTypeSafari struct{
meta
}
func (entity *SessionTypeSafari) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeSafari
return json.Marshal((*stub)(entity))
}
func (*SessionTypeSafari) GetClass() string {
return ClassSessionType
}
func (*SessionTypeSafari) GetType() string {
return TypeSessionTypeSafari
}
func (*SessionTypeSafari) SessionTypeType() string {
return TypeSessionTypeSafari
}
// The session is running on an Ubuntu device
type SessionTypeUbuntu struct{
meta
}
func (entity *SessionTypeUbuntu) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeUbuntu
return json.Marshal((*stub)(entity))
}
func (*SessionTypeUbuntu) GetClass() string {
return ClassSessionType
}
func (*SessionTypeUbuntu) GetType() string {
return TypeSessionTypeUbuntu
}
func (*SessionTypeUbuntu) SessionTypeType() string {
return TypeSessionTypeUbuntu
}
// The session is running on an unknown type of device
type SessionTypeUnknown struct{
meta
}
func (entity *SessionTypeUnknown) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeUnknown
return json.Marshal((*stub)(entity))
}
func (*SessionTypeUnknown) GetClass() string {
return ClassSessionType
}
func (*SessionTypeUnknown) GetType() string {
return TypeSessionTypeUnknown
}
func (*SessionTypeUnknown) SessionTypeType() string {
return TypeSessionTypeUnknown
}
// The session is running on the Vivaldi browser
type SessionTypeVivaldi struct{
meta
}
func (entity *SessionTypeVivaldi) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeVivaldi
return json.Marshal((*stub)(entity))
}
func (*SessionTypeVivaldi) GetClass() string {
return ClassSessionType
}
func (*SessionTypeVivaldi) GetType() string {
return TypeSessionTypeVivaldi
}
func (*SessionTypeVivaldi) SessionTypeType() string {
return TypeSessionTypeVivaldi
}
// The session is running on a Windows device
type SessionTypeWindows struct{
meta
}
func (entity *SessionTypeWindows) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeWindows
return json.Marshal((*stub)(entity))
}
func (*SessionTypeWindows) GetClass() string {
return ClassSessionType
}
func (*SessionTypeWindows) GetType() string {
return TypeSessionTypeWindows
}
func (*SessionTypeWindows) SessionTypeType() string {
return TypeSessionTypeWindows
}
// The session is running on an Xbox console
type SessionTypeXbox struct{
meta
}
func (entity *SessionTypeXbox) MarshalJSON() ([]byte, error) {
entity.meta.Type = entity.GetType()
type stub SessionTypeXbox
return json.Marshal((*stub)(entity))
}
func (*SessionTypeXbox) GetClass() string {
return ClassSessionType
}
func (*SessionTypeXbox) GetType() string {
return TypeSessionTypeXbox
}
func (*SessionTypeXbox) SessionTypeType() string {
return TypeSessionTypeXbox
}
// Contains information about one session in a Telegram application used by the current user. Sessions must be shown to the user in the returned order // Contains information about one session in a Telegram application used by the current user. Sessions must be shown to the user in the returned order
type Session struct { type Session struct {
meta meta
@ -26291,6 +26743,8 @@ type Session struct {
CanAcceptSecretChats bool `json:"can_accept_secret_chats"` CanAcceptSecretChats bool `json:"can_accept_secret_chats"`
// True, if incoming calls can be accepted by the session // True, if incoming calls can be accepted by the session
CanAcceptCalls bool `json:"can_accept_calls"` CanAcceptCalls bool `json:"can_accept_calls"`
// Session type based on the system and application version, which can be used to display a corresponding icon
Type SessionType `json:"type"`
// Telegram API identifier, as provided by the application // Telegram API identifier, as provided by the application
ApiId int32 `json:"api_id"` ApiId int32 `json:"api_id"`
// Name of the application, as provided by the application // Name of the application, as provided by the application
@ -26333,6 +26787,57 @@ func (*Session) GetType() string {
return TypeSession return TypeSession
} }
func (session *Session) UnmarshalJSON(data []byte) error {
var tmp struct {
Id JsonInt64 `json:"id"`
IsCurrent bool `json:"is_current"`
IsPasswordPending bool `json:"is_password_pending"`
CanAcceptSecretChats bool `json:"can_accept_secret_chats"`
CanAcceptCalls bool `json:"can_accept_calls"`
Type json.RawMessage `json:"type"`
ApiId int32 `json:"api_id"`
ApplicationName string `json:"application_name"`
ApplicationVersion string `json:"application_version"`
IsOfficialApplication bool `json:"is_official_application"`
DeviceModel string `json:"device_model"`
Platform string `json:"platform"`
SystemVersion string `json:"system_version"`
LogInDate int32 `json:"log_in_date"`
LastActiveDate int32 `json:"last_active_date"`
Ip string `json:"ip"`
Country string `json:"country"`
Region string `json:"region"`
}
err := json.Unmarshal(data, &tmp)
if err != nil {
return err
}
session.Id = tmp.Id
session.IsCurrent = tmp.IsCurrent
session.IsPasswordPending = tmp.IsPasswordPending
session.CanAcceptSecretChats = tmp.CanAcceptSecretChats
session.CanAcceptCalls = tmp.CanAcceptCalls
session.ApiId = tmp.ApiId
session.ApplicationName = tmp.ApplicationName
session.ApplicationVersion = tmp.ApplicationVersion
session.IsOfficialApplication = tmp.IsOfficialApplication
session.DeviceModel = tmp.DeviceModel
session.Platform = tmp.Platform
session.SystemVersion = tmp.SystemVersion
session.LogInDate = tmp.LogInDate
session.LastActiveDate = tmp.LastActiveDate
session.Ip = tmp.Ip
session.Country = tmp.Country
session.Region = tmp.Region
fieldType, _ := UnmarshalSessionType(tmp.Type)
session.Type = fieldType
return nil
}
// Contains a list of sessions // Contains a list of sessions
type Sessions struct { type Sessions struct {
meta meta

View file

@ -3614,6 +3614,85 @@ func UnmarshalListOfUserPrivacySetting(dataList []json.RawMessage) ([]UserPrivac
return list, nil return list, nil
} }
func UnmarshalSessionType(data json.RawMessage) (SessionType, error) {
var meta meta
err := json.Unmarshal(data, &meta)
if err != nil {
return nil, err
}
switch meta.Type {
case TypeSessionTypeAndroid:
return UnmarshalSessionTypeAndroid(data)
case TypeSessionTypeApple:
return UnmarshalSessionTypeApple(data)
case TypeSessionTypeBrave:
return UnmarshalSessionTypeBrave(data)
case TypeSessionTypeChrome:
return UnmarshalSessionTypeChrome(data)
case TypeSessionTypeEdge:
return UnmarshalSessionTypeEdge(data)
case TypeSessionTypeFirefox:
return UnmarshalSessionTypeFirefox(data)
case TypeSessionTypeIpad:
return UnmarshalSessionTypeIpad(data)
case TypeSessionTypeIphone:
return UnmarshalSessionTypeIphone(data)
case TypeSessionTypeLinux:
return UnmarshalSessionTypeLinux(data)
case TypeSessionTypeMac:
return UnmarshalSessionTypeMac(data)
case TypeSessionTypeOpera:
return UnmarshalSessionTypeOpera(data)
case TypeSessionTypeSafari:
return UnmarshalSessionTypeSafari(data)
case TypeSessionTypeUbuntu:
return UnmarshalSessionTypeUbuntu(data)
case TypeSessionTypeUnknown:
return UnmarshalSessionTypeUnknown(data)
case TypeSessionTypeVivaldi:
return UnmarshalSessionTypeVivaldi(data)
case TypeSessionTypeWindows:
return UnmarshalSessionTypeWindows(data)
case TypeSessionTypeXbox:
return UnmarshalSessionTypeXbox(data)
default:
return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type)
}
}
func UnmarshalListOfSessionType(dataList []json.RawMessage) ([]SessionType, error) {
list := []SessionType{}
for _, data := range dataList {
entity, err := UnmarshalSessionType(data)
if err != nil {
return nil, err
}
list = append(list, entity)
}
return list, nil
}
func UnmarshalChatReportReason(data json.RawMessage) (ChatReportReason, error) { func UnmarshalChatReportReason(data json.RawMessage) (ChatReportReason, error) {
var meta meta var meta meta
@ -10712,6 +10791,142 @@ func UnmarshalAccountTtl(data json.RawMessage) (*AccountTtl, error) {
return &resp, err return &resp, err
} }
func UnmarshalSessionTypeAndroid(data json.RawMessage) (*SessionTypeAndroid, error) {
var resp SessionTypeAndroid
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeApple(data json.RawMessage) (*SessionTypeApple, error) {
var resp SessionTypeApple
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeBrave(data json.RawMessage) (*SessionTypeBrave, error) {
var resp SessionTypeBrave
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeChrome(data json.RawMessage) (*SessionTypeChrome, error) {
var resp SessionTypeChrome
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeEdge(data json.RawMessage) (*SessionTypeEdge, error) {
var resp SessionTypeEdge
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeFirefox(data json.RawMessage) (*SessionTypeFirefox, error) {
var resp SessionTypeFirefox
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeIpad(data json.RawMessage) (*SessionTypeIpad, error) {
var resp SessionTypeIpad
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeIphone(data json.RawMessage) (*SessionTypeIphone, error) {
var resp SessionTypeIphone
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeLinux(data json.RawMessage) (*SessionTypeLinux, error) {
var resp SessionTypeLinux
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeMac(data json.RawMessage) (*SessionTypeMac, error) {
var resp SessionTypeMac
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeOpera(data json.RawMessage) (*SessionTypeOpera, error) {
var resp SessionTypeOpera
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeSafari(data json.RawMessage) (*SessionTypeSafari, error) {
var resp SessionTypeSafari
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeUbuntu(data json.RawMessage) (*SessionTypeUbuntu, error) {
var resp SessionTypeUbuntu
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeUnknown(data json.RawMessage) (*SessionTypeUnknown, error) {
var resp SessionTypeUnknown
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeVivaldi(data json.RawMessage) (*SessionTypeVivaldi, error) {
var resp SessionTypeVivaldi
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeWindows(data json.RawMessage) (*SessionTypeWindows, error) {
var resp SessionTypeWindows
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSessionTypeXbox(data json.RawMessage) (*SessionTypeXbox, error) {
var resp SessionTypeXbox
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalSession(data json.RawMessage) (*Session, error) { func UnmarshalSession(data json.RawMessage) (*Session, error) {
var resp Session var resp Session
@ -14984,6 +15199,57 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypeAccountTtl: case TypeAccountTtl:
return UnmarshalAccountTtl(data) return UnmarshalAccountTtl(data)
case TypeSessionTypeAndroid:
return UnmarshalSessionTypeAndroid(data)
case TypeSessionTypeApple:
return UnmarshalSessionTypeApple(data)
case TypeSessionTypeBrave:
return UnmarshalSessionTypeBrave(data)
case TypeSessionTypeChrome:
return UnmarshalSessionTypeChrome(data)
case TypeSessionTypeEdge:
return UnmarshalSessionTypeEdge(data)
case TypeSessionTypeFirefox:
return UnmarshalSessionTypeFirefox(data)
case TypeSessionTypeIpad:
return UnmarshalSessionTypeIpad(data)
case TypeSessionTypeIphone:
return UnmarshalSessionTypeIphone(data)
case TypeSessionTypeLinux:
return UnmarshalSessionTypeLinux(data)
case TypeSessionTypeMac:
return UnmarshalSessionTypeMac(data)
case TypeSessionTypeOpera:
return UnmarshalSessionTypeOpera(data)
case TypeSessionTypeSafari:
return UnmarshalSessionTypeSafari(data)
case TypeSessionTypeUbuntu:
return UnmarshalSessionTypeUbuntu(data)
case TypeSessionTypeUnknown:
return UnmarshalSessionTypeUnknown(data)
case TypeSessionTypeVivaldi:
return UnmarshalSessionTypeVivaldi(data)
case TypeSessionTypeWindows:
return UnmarshalSessionTypeWindows(data)
case TypeSessionTypeXbox:
return UnmarshalSessionTypeXbox(data)
case TypeSession: case TypeSession:
return UnmarshalSession(data) return UnmarshalSession(data)

View file

@ -2346,8 +2346,8 @@ callStateReady protocol:callProtocol servers:vector<callServer> config:string en
//@description The call is hanging up after discardCall has been called //@description The call is hanging up after discardCall has been called
callStateHangingUp = CallState; callStateHangingUp = CallState;
//@description The call has ended successfully @reason The reason, why the call has ended @need_rating True, if the call rating must be sent to the server @need_debug_information True, if the call debug information must be sent to the server //@description The call has ended successfully @reason The reason, why the call has ended @need_rating True, if the call rating must be sent to the server @need_debug_information True, if the call debug information must be sent to the server @need_log True, if the call log must be sent to the server
callStateDiscarded reason:CallDiscardReason need_rating:Bool need_debug_information:Bool = CallState; callStateDiscarded reason:CallDiscardReason need_rating:Bool need_debug_information:Bool need_log:Bool = CallState;
//@description The call has ended with an error @error Error. An error with the code 4005000 will be returned if an outgoing call is missed because of an expired timeout //@description The call has ended with an error @error Error. An error with the code 4005000 will be returned if an outgoing call is missed because of an expired timeout
callStateError error:error = CallState; callStateError error:error = CallState;
@ -3180,8 +3180,8 @@ notificationSounds notification_sounds:vector<notificationSound> = NotificationS
//@description Contains information about a notification @id Unique persistent identifier of this notification @date Notification date //@description Contains information about a notification @id Unique persistent identifier of this notification @date Notification date
//@sound_id Identifier of the notification sound to be played; 0 if sound is disabled @type Notification type //@is_silent True, if the notification was explicitly sent without sound @type Notification type
notification id:int32 date:int32 sound_id:int64 type:NotificationType = Notification; notification id:int32 date:int32 is_silent:Bool type:NotificationType = Notification;
//@description Describes a group of notifications @id Unique persistent auto-incremented from 1 identifier of the notification group @type Type of the group //@description Describes a group of notifications @id Unique persistent auto-incremented from 1 identifier of the notification group @type Type of the group
//@chat_id Identifier of a chat to which all notifications in the group belong //@chat_id Identifier of a chat to which all notifications in the group belong
@ -3288,18 +3288,73 @@ userPrivacySettingAllowFindingByPhoneNumber = UserPrivacySetting;
accountTtl days:int32 = AccountTtl; accountTtl days:int32 = AccountTtl;
//@class SessionType @description Represents the type of a session
//@description The session is running on an Android device
sessionTypeAndroid = SessionType;
//@description The session is running on a generic Apple device
sessionTypeApple = SessionType;
//@description The session is running on the Brave browser
sessionTypeBrave = SessionType;
//@description The session is running on the Chrome browser
sessionTypeChrome = SessionType;
//@description The session is running on the Edge browser
sessionTypeEdge = SessionType;
//@description The session is running on the Firefox browser
sessionTypeFirefox = SessionType;
//@description The session is running on an iPad device
sessionTypeIpad = SessionType;
//@description The session is running on an iPhone device
sessionTypeIphone = SessionType;
//@description The session is running on a Linux device
sessionTypeLinux = SessionType;
//@description The session is running on a Mac device
sessionTypeMac = SessionType;
//@description The session is running on the Opera browser
sessionTypeOpera = SessionType;
//@description The session is running on the Safari browser
sessionTypeSafari = SessionType;
//@description The session is running on an Ubuntu device
sessionTypeUbuntu = SessionType;
//@description The session is running on an unknown type of device
sessionTypeUnknown = SessionType;
//@description The session is running on the Vivaldi browser
sessionTypeVivaldi = SessionType;
//@description The session is running on a Windows device
sessionTypeWindows = SessionType;
//@description The session is running on an Xbox console
sessionTypeXbox = SessionType;
//@description Contains information about one session in a Telegram application used by the current user. Sessions must be shown to the user in the returned order //@description Contains information about one session in a Telegram application used by the current user. Sessions must be shown to the user in the returned order
//@id Session identifier @is_current True, if this session is the current session //@id Session identifier @is_current True, if this session is the current session
//@is_password_pending True, if a password is needed to complete authorization of the session //@is_password_pending True, if a password is needed to complete authorization of the session
//@can_accept_secret_chats True, if incoming secret chats can be accepted by the session //@can_accept_secret_chats True, if incoming secret chats can be accepted by the session
//@can_accept_calls True, if incoming calls can be accepted by the session //@can_accept_calls True, if incoming calls can be accepted by the session
//@type Session type based on the system and application version, which can be used to display a corresponding icon
//@api_id Telegram API identifier, as provided by the application @application_name Name of the application, as provided by the application //@api_id Telegram API identifier, as provided by the application @application_name Name of the application, as provided by the application
//@application_version The version of the application, as provided by the application @is_official_application True, if the application is an official application or uses the api_id of an official application //@application_version The version of the application, as provided by the application @is_official_application True, if the application is an official application or uses the api_id of an official application
//@device_model Model of the device the application has been run or is running on, as provided by the application @platform Operating system the application has been run or is running on, as provided by the application //@device_model Model of the device the application has been run or is running on, as provided by the application @platform Operating system the application has been run or is running on, as provided by the application
//@system_version Version of the operating system the application has been run or is running on, as provided by the application @log_in_date Point in time (Unix timestamp) when the user has logged in //@system_version Version of the operating system the application has been run or is running on, as provided by the application @log_in_date Point in time (Unix timestamp) when the user has logged in
//@last_active_date Point in time (Unix timestamp) when the session was last used @ip IP address from which the session was created, in human-readable format //@last_active_date Point in time (Unix timestamp) when the session was last used @ip IP address from which the session was created, in human-readable format
//@country A two-letter country code for the country from which the session was created, based on the IP address @region Region code from which the session was created, based on the IP address //@country A two-letter country code for the country from which the session was created, based on the IP address @region Region code from which the session was created, based on the IP address
session id:int64 is_current:Bool is_password_pending:Bool can_accept_secret_chats:Bool can_accept_calls:Bool api_id:int32 application_name:string application_version:string is_official_application:Bool device_model:string platform:string system_version:string log_in_date:int32 last_active_date:int32 ip:string country:string region:string = Session; session id:int64 is_current:Bool is_password_pending:Bool can_accept_secret_chats:Bool can_accept_calls:Bool type:SessionType api_id:int32 application_name:string application_version:string is_official_application:Bool device_model:string platform:string system_version:string log_in_date:int32 last_active_date:int32 ip:string country:string region:string = Session;
//@description Contains a list of sessions @sessions List of sessions @inactive_session_ttl_days Number of days of inactivity before sessions will automatically be terminated; 1-366 days //@description Contains a list of sessions @sessions List of sessions @inactive_session_ttl_days Number of days of inactivity before sessions will automatically be terminated; 1-366 days
sessions sessions:vector<session> inactive_session_ttl_days:int32 = Sessions; sessions sessions:vector<session> inactive_session_ttl_days:int32 = Sessions;
@ -5428,9 +5483,12 @@ discardCall call_id:int32 is_disconnected:Bool duration:int32 is_video:Bool conn
//@description Sends a call rating @call_id Call identifier @rating Call rating; 1-5 @comment An optional user comment if the rating is less than 5 @problems List of the exact types of problems with the call, specified by the user //@description Sends a call rating @call_id Call identifier @rating Call rating; 1-5 @comment An optional user comment if the rating is less than 5 @problems List of the exact types of problems with the call, specified by the user
sendCallRating call_id:int32 rating:int32 comment:string problems:vector<CallProblem> = Ok; sendCallRating call_id:int32 rating:int32 comment:string problems:vector<CallProblem> = Ok;
//@description Sends debug information for a call @call_id Call identifier @debug_information Debug information in application-specific format //@description Sends debug information for a call to Telegram servers @call_id Call identifier @debug_information Debug information in application-specific format
sendCallDebugInformation call_id:int32 debug_information:string = Ok; sendCallDebugInformation call_id:int32 debug_information:string = Ok;
//@description Sends log file for a call to Telegram servers @call_id Call identifier @log_file Call log file. Only inputFileLocal and inputFileGenerated are supported
sendCallLog call_id:int32 log_file:InputFile = Ok;
//@description Returns list of participant identifiers, on whose behalf a video chat in the chat can be joined @chat_id Chat identifier //@description Returns list of participant identifiers, on whose behalf a video chat in the chat can be joined @chat_id Chat identifier
getVideoChatAvailableParticipants chat_id:int53 = MessageSenders; getVideoChatAvailableParticipants chat_id:int53 = MessageSenders;
@ -5596,7 +5654,7 @@ changeImportedContacts contacts:vector<contact> = ImportedContacts;
clearImportedContacts = Ok; clearImportedContacts = Ok;
//@description Searches a user by their phone number @phone_number Phone number to search for //@description Searches a user by their phone number. Returns a 404 error if the user can't be found @phone_number Phone number to search for
searchUserByPhoneNumber phone_number:string = User; searchUserByPhoneNumber phone_number:string = User;
//@description Shares the phone number of the current user with a mutual contact. Supposed to be called when the user clicks on chatActionBarSharePhoneNumber @user_id Identifier of the user with whom to share the phone number. The user must be a mutual contact //@description Shares the phone number of the current user with a mutual contact. Supposed to be called when the user clicks on chatActionBarSharePhoneNumber @user_id Identifier of the user with whom to share the phone number. The user must be a mutual contact