// Code generated by gotdgen, DO NOT EDIT. package tg import ( "context" "errors" "fmt" "sort" "strings" "go.uber.org/multierr" "go.mau.fi/mautrix-telegram/pkg/gotd/bin" "go.mau.fi/mautrix-telegram/pkg/gotd/tdjson" "go.mau.fi/mautrix-telegram/pkg/gotd/tdp" "go.mau.fi/mautrix-telegram/pkg/gotd/tgerr" ) // No-op definition for keeping imports. var ( _ = bin.Buffer{} _ = context.Background() _ = fmt.Stringer(nil) _ = strings.Builder{} _ = errors.Is _ = multierr.AppendInto _ = sort.Ints _ = tdp.Format _ = tgerr.Error{} _ = tdjson.Encoder{} ) // InputMediaEmpty represents TL type `inputMediaEmpty#9664f57f`. // Empty media content of a message. // // See https://core.telegram.org/constructor/inputMediaEmpty for reference. type InputMediaEmpty struct { } // InputMediaEmptyTypeID is TL type id of InputMediaEmpty. const InputMediaEmptyTypeID = 0x9664f57f // construct implements constructor of InputMediaClass. func (i InputMediaEmpty) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaEmpty. var ( _ bin.Encoder = &InputMediaEmpty{} _ bin.Decoder = &InputMediaEmpty{} _ bin.BareEncoder = &InputMediaEmpty{} _ bin.BareDecoder = &InputMediaEmpty{} _ InputMediaClass = &InputMediaEmpty{} ) func (i *InputMediaEmpty) Zero() bool { if i == nil { return true } return true } // String implements fmt.Stringer. func (i *InputMediaEmpty) String() string { if i == nil { return "InputMediaEmpty(nil)" } type Alias InputMediaEmpty return fmt.Sprintf("InputMediaEmpty%+v", Alias(*i)) } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaEmpty) TypeID() uint32 { return InputMediaEmptyTypeID } // TypeName returns name of type in TL schema. func (*InputMediaEmpty) TypeName() string { return "inputMediaEmpty" } // TypeInfo returns info about TL type. func (i *InputMediaEmpty) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaEmpty", ID: InputMediaEmptyTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{} return typ } // Encode implements bin.Encoder. func (i *InputMediaEmpty) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaEmpty#9664f57f as nil") } b.PutID(InputMediaEmptyTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaEmpty) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaEmpty#9664f57f as nil") } return nil } // Decode implements bin.Decoder. func (i *InputMediaEmpty) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaEmpty#9664f57f to nil") } if err := b.ConsumeID(InputMediaEmptyTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaEmpty#9664f57f: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaEmpty) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaEmpty#9664f57f to nil") } return nil } // InputMediaUploadedPhoto represents TL type `inputMediaUploadedPhoto#7d8375da`. // Photo // // See https://core.telegram.org/constructor/inputMediaUploadedPhoto for reference. type InputMediaUploadedPhoto struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Whether this media should be hidden behind a spoiler warning Spoiler bool // LivePhoto field of InputMediaUploadedPhoto. LivePhoto bool // The uploaded file¹ // // Links: // 1) https://core.telegram.org/api/files File InputFileClass // Attached mask stickers // // Use SetStickers and GetStickers helpers. Stickers []InputDocumentClass // Time to live in seconds of self-destructing photo // // Use SetTTLSeconds and GetTTLSeconds helpers. TTLSeconds int // Video field of InputMediaUploadedPhoto. // // Use SetVideo and GetVideo helpers. Video InputDocumentClass } // InputMediaUploadedPhotoTypeID is TL type id of InputMediaUploadedPhoto. const InputMediaUploadedPhotoTypeID = 0x7d8375da // construct implements constructor of InputMediaClass. func (i InputMediaUploadedPhoto) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaUploadedPhoto. var ( _ bin.Encoder = &InputMediaUploadedPhoto{} _ bin.Decoder = &InputMediaUploadedPhoto{} _ bin.BareEncoder = &InputMediaUploadedPhoto{} _ bin.BareDecoder = &InputMediaUploadedPhoto{} _ InputMediaClass = &InputMediaUploadedPhoto{} ) func (i *InputMediaUploadedPhoto) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.Spoiler == false) { return false } if !(i.LivePhoto == false) { return false } if !(i.File == nil) { return false } if !(i.Stickers == nil) { return false } if !(i.TTLSeconds == 0) { return false } if !(i.Video == nil) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaUploadedPhoto) String() string { if i == nil { return "InputMediaUploadedPhoto(nil)" } type Alias InputMediaUploadedPhoto return fmt.Sprintf("InputMediaUploadedPhoto%+v", Alias(*i)) } // FillFrom fills InputMediaUploadedPhoto from given interface. func (i *InputMediaUploadedPhoto) FillFrom(from interface { GetSpoiler() (value bool) GetLivePhoto() (value bool) GetFile() (value InputFileClass) GetStickers() (value []InputDocumentClass, ok bool) GetTTLSeconds() (value int, ok bool) GetVideo() (value InputDocumentClass, ok bool) }) { i.Spoiler = from.GetSpoiler() i.LivePhoto = from.GetLivePhoto() i.File = from.GetFile() if val, ok := from.GetStickers(); ok { i.Stickers = val } if val, ok := from.GetTTLSeconds(); ok { i.TTLSeconds = val } if val, ok := from.GetVideo(); ok { i.Video = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaUploadedPhoto) TypeID() uint32 { return InputMediaUploadedPhotoTypeID } // TypeName returns name of type in TL schema. func (*InputMediaUploadedPhoto) TypeName() string { return "inputMediaUploadedPhoto" } // TypeInfo returns info about TL type. func (i *InputMediaUploadedPhoto) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaUploadedPhoto", ID: InputMediaUploadedPhotoTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Spoiler", SchemaName: "spoiler", Null: !i.Flags.Has(2), }, { Name: "LivePhoto", SchemaName: "live_photo", Null: !i.Flags.Has(3), }, { Name: "File", SchemaName: "file", }, { Name: "Stickers", SchemaName: "stickers", Null: !i.Flags.Has(0), }, { Name: "TTLSeconds", SchemaName: "ttl_seconds", Null: !i.Flags.Has(1), }, { Name: "Video", SchemaName: "video", Null: !i.Flags.Has(3), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaUploadedPhoto) SetFlags() { if !(i.Spoiler == false) { i.Flags.Set(2) } if !(i.LivePhoto == false) { i.Flags.Set(3) } if !(i.Stickers == nil) { i.Flags.Set(0) } if !(i.TTLSeconds == 0) { i.Flags.Set(1) } if !(i.Video == nil) { i.Flags.Set(3) } } // Encode implements bin.Encoder. func (i *InputMediaUploadedPhoto) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaUploadedPhoto#7d8375da as nil") } b.PutID(InputMediaUploadedPhotoTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaUploadedPhoto) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaUploadedPhoto#7d8375da as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedPhoto#7d8375da: field flags: %w", err) } if i.File == nil { return fmt.Errorf("unable to encode inputMediaUploadedPhoto#7d8375da: field file is nil") } if err := i.File.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedPhoto#7d8375da: field file: %w", err) } if i.Flags.Has(0) { b.PutVectorHeader(len(i.Stickers)) for idx, v := range i.Stickers { if v == nil { return fmt.Errorf("unable to encode inputMediaUploadedPhoto#7d8375da: field stickers element with index %d is nil", idx) } if err := v.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedPhoto#7d8375da: field stickers element with index %d: %w", idx, err) } } } if i.Flags.Has(1) { b.PutInt(i.TTLSeconds) } if i.Flags.Has(3) { if i.Video == nil { return fmt.Errorf("unable to encode inputMediaUploadedPhoto#7d8375da: field video is nil") } if err := i.Video.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedPhoto#7d8375da: field video: %w", err) } } return nil } // Decode implements bin.Decoder. func (i *InputMediaUploadedPhoto) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaUploadedPhoto#7d8375da to nil") } if err := b.ConsumeID(InputMediaUploadedPhotoTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaUploadedPhoto#7d8375da: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaUploadedPhoto) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaUploadedPhoto#7d8375da to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaUploadedPhoto#7d8375da: field flags: %w", err) } } i.Spoiler = i.Flags.Has(2) i.LivePhoto = i.Flags.Has(3) { value, err := DecodeInputFile(b) if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedPhoto#7d8375da: field file: %w", err) } i.File = value } if i.Flags.Has(0) { headerLen, err := b.VectorHeader() if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedPhoto#7d8375da: field stickers: %w", err) } if headerLen > 0 { i.Stickers = make([]InputDocumentClass, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { value, err := DecodeInputDocument(b) if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedPhoto#7d8375da: field stickers: %w", err) } i.Stickers = append(i.Stickers, value) } } if i.Flags.Has(1) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedPhoto#7d8375da: field ttl_seconds: %w", err) } i.TTLSeconds = value } if i.Flags.Has(3) { value, err := DecodeInputDocument(b) if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedPhoto#7d8375da: field video: %w", err) } i.Video = value } return nil } // SetSpoiler sets value of Spoiler conditional field. func (i *InputMediaUploadedPhoto) SetSpoiler(value bool) { if value { i.Flags.Set(2) i.Spoiler = true } else { i.Flags.Unset(2) i.Spoiler = false } } // GetSpoiler returns value of Spoiler conditional field. func (i *InputMediaUploadedPhoto) GetSpoiler() (value bool) { if i == nil { return } return i.Flags.Has(2) } // SetLivePhoto sets value of LivePhoto conditional field. func (i *InputMediaUploadedPhoto) SetLivePhoto(value bool) { if value { i.Flags.Set(3) i.LivePhoto = true } else { i.Flags.Unset(3) i.LivePhoto = false } } // GetLivePhoto returns value of LivePhoto conditional field. func (i *InputMediaUploadedPhoto) GetLivePhoto() (value bool) { if i == nil { return } return i.Flags.Has(3) } // GetFile returns value of File field. func (i *InputMediaUploadedPhoto) GetFile() (value InputFileClass) { if i == nil { return } return i.File } // SetStickers sets value of Stickers conditional field. func (i *InputMediaUploadedPhoto) SetStickers(value []InputDocumentClass) { i.Flags.Set(0) i.Stickers = value } // GetStickers returns value of Stickers conditional field and // boolean which is true if field was set. func (i *InputMediaUploadedPhoto) GetStickers() (value []InputDocumentClass, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.Stickers, true } // SetTTLSeconds sets value of TTLSeconds conditional field. func (i *InputMediaUploadedPhoto) SetTTLSeconds(value int) { i.Flags.Set(1) i.TTLSeconds = value } // GetTTLSeconds returns value of TTLSeconds conditional field and // boolean which is true if field was set. func (i *InputMediaUploadedPhoto) GetTTLSeconds() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(1) { return value, false } return i.TTLSeconds, true } // SetVideo sets value of Video conditional field. func (i *InputMediaUploadedPhoto) SetVideo(value InputDocumentClass) { i.Flags.Set(3) i.Video = value } // GetVideo returns value of Video conditional field and // boolean which is true if field was set. func (i *InputMediaUploadedPhoto) GetVideo() (value InputDocumentClass, ok bool) { if i == nil { return } if !i.Flags.Has(3) { return value, false } return i.Video, true } // MapStickers returns field Stickers wrapped in InputDocumentClassArray helper. func (i *InputMediaUploadedPhoto) MapStickers() (value InputDocumentClassArray, ok bool) { if !i.Flags.Has(0) { return value, false } return InputDocumentClassArray(i.Stickers), true } // InputMediaPhoto represents TL type `inputMediaPhoto#e3af4434`. // Forwarded photo // // See https://core.telegram.org/constructor/inputMediaPhoto for reference. type InputMediaPhoto struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Whether this media should be hidden behind a spoiler warning Spoiler bool // LivePhoto field of InputMediaPhoto. LivePhoto bool // Photo to be forwarded ID InputPhotoClass // Time to live in seconds of self-destructing photo // // Use SetTTLSeconds and GetTTLSeconds helpers. TTLSeconds int // Video field of InputMediaPhoto. // // Use SetVideo and GetVideo helpers. Video InputDocumentClass } // InputMediaPhotoTypeID is TL type id of InputMediaPhoto. const InputMediaPhotoTypeID = 0xe3af4434 // construct implements constructor of InputMediaClass. func (i InputMediaPhoto) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaPhoto. var ( _ bin.Encoder = &InputMediaPhoto{} _ bin.Decoder = &InputMediaPhoto{} _ bin.BareEncoder = &InputMediaPhoto{} _ bin.BareDecoder = &InputMediaPhoto{} _ InputMediaClass = &InputMediaPhoto{} ) func (i *InputMediaPhoto) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.Spoiler == false) { return false } if !(i.LivePhoto == false) { return false } if !(i.ID == nil) { return false } if !(i.TTLSeconds == 0) { return false } if !(i.Video == nil) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaPhoto) String() string { if i == nil { return "InputMediaPhoto(nil)" } type Alias InputMediaPhoto return fmt.Sprintf("InputMediaPhoto%+v", Alias(*i)) } // FillFrom fills InputMediaPhoto from given interface. func (i *InputMediaPhoto) FillFrom(from interface { GetSpoiler() (value bool) GetLivePhoto() (value bool) GetID() (value InputPhotoClass) GetTTLSeconds() (value int, ok bool) GetVideo() (value InputDocumentClass, ok bool) }) { i.Spoiler = from.GetSpoiler() i.LivePhoto = from.GetLivePhoto() i.ID = from.GetID() if val, ok := from.GetTTLSeconds(); ok { i.TTLSeconds = val } if val, ok := from.GetVideo(); ok { i.Video = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaPhoto) TypeID() uint32 { return InputMediaPhotoTypeID } // TypeName returns name of type in TL schema. func (*InputMediaPhoto) TypeName() string { return "inputMediaPhoto" } // TypeInfo returns info about TL type. func (i *InputMediaPhoto) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaPhoto", ID: InputMediaPhotoTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Spoiler", SchemaName: "spoiler", Null: !i.Flags.Has(1), }, { Name: "LivePhoto", SchemaName: "live_photo", Null: !i.Flags.Has(2), }, { Name: "ID", SchemaName: "id", }, { Name: "TTLSeconds", SchemaName: "ttl_seconds", Null: !i.Flags.Has(0), }, { Name: "Video", SchemaName: "video", Null: !i.Flags.Has(2), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaPhoto) SetFlags() { if !(i.Spoiler == false) { i.Flags.Set(1) } if !(i.LivePhoto == false) { i.Flags.Set(2) } if !(i.TTLSeconds == 0) { i.Flags.Set(0) } if !(i.Video == nil) { i.Flags.Set(2) } } // Encode implements bin.Encoder. func (i *InputMediaPhoto) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaPhoto#e3af4434 as nil") } b.PutID(InputMediaPhotoTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaPhoto) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaPhoto#e3af4434 as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPhoto#e3af4434: field flags: %w", err) } if i.ID == nil { return fmt.Errorf("unable to encode inputMediaPhoto#e3af4434: field id is nil") } if err := i.ID.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPhoto#e3af4434: field id: %w", err) } if i.Flags.Has(0) { b.PutInt(i.TTLSeconds) } if i.Flags.Has(2) { if i.Video == nil { return fmt.Errorf("unable to encode inputMediaPhoto#e3af4434: field video is nil") } if err := i.Video.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPhoto#e3af4434: field video: %w", err) } } return nil } // Decode implements bin.Decoder. func (i *InputMediaPhoto) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaPhoto#e3af4434 to nil") } if err := b.ConsumeID(InputMediaPhotoTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaPhoto#e3af4434: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaPhoto) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaPhoto#e3af4434 to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaPhoto#e3af4434: field flags: %w", err) } } i.Spoiler = i.Flags.Has(1) i.LivePhoto = i.Flags.Has(2) { value, err := DecodeInputPhoto(b) if err != nil { return fmt.Errorf("unable to decode inputMediaPhoto#e3af4434: field id: %w", err) } i.ID = value } if i.Flags.Has(0) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaPhoto#e3af4434: field ttl_seconds: %w", err) } i.TTLSeconds = value } if i.Flags.Has(2) { value, err := DecodeInputDocument(b) if err != nil { return fmt.Errorf("unable to decode inputMediaPhoto#e3af4434: field video: %w", err) } i.Video = value } return nil } // SetSpoiler sets value of Spoiler conditional field. func (i *InputMediaPhoto) SetSpoiler(value bool) { if value { i.Flags.Set(1) i.Spoiler = true } else { i.Flags.Unset(1) i.Spoiler = false } } // GetSpoiler returns value of Spoiler conditional field. func (i *InputMediaPhoto) GetSpoiler() (value bool) { if i == nil { return } return i.Flags.Has(1) } // SetLivePhoto sets value of LivePhoto conditional field. func (i *InputMediaPhoto) SetLivePhoto(value bool) { if value { i.Flags.Set(2) i.LivePhoto = true } else { i.Flags.Unset(2) i.LivePhoto = false } } // GetLivePhoto returns value of LivePhoto conditional field. func (i *InputMediaPhoto) GetLivePhoto() (value bool) { if i == nil { return } return i.Flags.Has(2) } // GetID returns value of ID field. func (i *InputMediaPhoto) GetID() (value InputPhotoClass) { if i == nil { return } return i.ID } // SetTTLSeconds sets value of TTLSeconds conditional field. func (i *InputMediaPhoto) SetTTLSeconds(value int) { i.Flags.Set(0) i.TTLSeconds = value } // GetTTLSeconds returns value of TTLSeconds conditional field and // boolean which is true if field was set. func (i *InputMediaPhoto) GetTTLSeconds() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.TTLSeconds, true } // SetVideo sets value of Video conditional field. func (i *InputMediaPhoto) SetVideo(value InputDocumentClass) { i.Flags.Set(2) i.Video = value } // GetVideo returns value of Video conditional field and // boolean which is true if field was set. func (i *InputMediaPhoto) GetVideo() (value InputDocumentClass, ok bool) { if i == nil { return } if !i.Flags.Has(2) { return value, false } return i.Video, true } // InputMediaGeoPoint represents TL type `inputMediaGeoPoint#f9c44144`. // Map. // // See https://core.telegram.org/constructor/inputMediaGeoPoint for reference. type InputMediaGeoPoint struct { // GeoPoint GeoPoint InputGeoPointClass } // InputMediaGeoPointTypeID is TL type id of InputMediaGeoPoint. const InputMediaGeoPointTypeID = 0xf9c44144 // construct implements constructor of InputMediaClass. func (i InputMediaGeoPoint) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaGeoPoint. var ( _ bin.Encoder = &InputMediaGeoPoint{} _ bin.Decoder = &InputMediaGeoPoint{} _ bin.BareEncoder = &InputMediaGeoPoint{} _ bin.BareDecoder = &InputMediaGeoPoint{} _ InputMediaClass = &InputMediaGeoPoint{} ) func (i *InputMediaGeoPoint) Zero() bool { if i == nil { return true } if !(i.GeoPoint == nil) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaGeoPoint) String() string { if i == nil { return "InputMediaGeoPoint(nil)" } type Alias InputMediaGeoPoint return fmt.Sprintf("InputMediaGeoPoint%+v", Alias(*i)) } // FillFrom fills InputMediaGeoPoint from given interface. func (i *InputMediaGeoPoint) FillFrom(from interface { GetGeoPoint() (value InputGeoPointClass) }) { i.GeoPoint = from.GetGeoPoint() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaGeoPoint) TypeID() uint32 { return InputMediaGeoPointTypeID } // TypeName returns name of type in TL schema. func (*InputMediaGeoPoint) TypeName() string { return "inputMediaGeoPoint" } // TypeInfo returns info about TL type. func (i *InputMediaGeoPoint) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaGeoPoint", ID: InputMediaGeoPointTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "GeoPoint", SchemaName: "geo_point", }, } return typ } // Encode implements bin.Encoder. func (i *InputMediaGeoPoint) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaGeoPoint#f9c44144 as nil") } b.PutID(InputMediaGeoPointTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaGeoPoint) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaGeoPoint#f9c44144 as nil") } if i.GeoPoint == nil { return fmt.Errorf("unable to encode inputMediaGeoPoint#f9c44144: field geo_point is nil") } if err := i.GeoPoint.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaGeoPoint#f9c44144: field geo_point: %w", err) } return nil } // Decode implements bin.Decoder. func (i *InputMediaGeoPoint) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaGeoPoint#f9c44144 to nil") } if err := b.ConsumeID(InputMediaGeoPointTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaGeoPoint#f9c44144: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaGeoPoint) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaGeoPoint#f9c44144 to nil") } { value, err := DecodeInputGeoPoint(b) if err != nil { return fmt.Errorf("unable to decode inputMediaGeoPoint#f9c44144: field geo_point: %w", err) } i.GeoPoint = value } return nil } // GetGeoPoint returns value of GeoPoint field. func (i *InputMediaGeoPoint) GetGeoPoint() (value InputGeoPointClass) { if i == nil { return } return i.GeoPoint } // InputMediaContact represents TL type `inputMediaContact#f8ab7dfb`. // Phone book contact // // See https://core.telegram.org/constructor/inputMediaContact for reference. type InputMediaContact struct { // Phone number PhoneNumber string // Contact's first name FirstName string // Contact's last name LastName string // Contact vcard Vcard string } // InputMediaContactTypeID is TL type id of InputMediaContact. const InputMediaContactTypeID = 0xf8ab7dfb // construct implements constructor of InputMediaClass. func (i InputMediaContact) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaContact. var ( _ bin.Encoder = &InputMediaContact{} _ bin.Decoder = &InputMediaContact{} _ bin.BareEncoder = &InputMediaContact{} _ bin.BareDecoder = &InputMediaContact{} _ InputMediaClass = &InputMediaContact{} ) func (i *InputMediaContact) Zero() bool { if i == nil { return true } if !(i.PhoneNumber == "") { return false } if !(i.FirstName == "") { return false } if !(i.LastName == "") { return false } if !(i.Vcard == "") { return false } return true } // String implements fmt.Stringer. func (i *InputMediaContact) String() string { if i == nil { return "InputMediaContact(nil)" } type Alias InputMediaContact return fmt.Sprintf("InputMediaContact%+v", Alias(*i)) } // FillFrom fills InputMediaContact from given interface. func (i *InputMediaContact) FillFrom(from interface { GetPhoneNumber() (value string) GetFirstName() (value string) GetLastName() (value string) GetVcard() (value string) }) { i.PhoneNumber = from.GetPhoneNumber() i.FirstName = from.GetFirstName() i.LastName = from.GetLastName() i.Vcard = from.GetVcard() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaContact) TypeID() uint32 { return InputMediaContactTypeID } // TypeName returns name of type in TL schema. func (*InputMediaContact) TypeName() string { return "inputMediaContact" } // TypeInfo returns info about TL type. func (i *InputMediaContact) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaContact", ID: InputMediaContactTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "PhoneNumber", SchemaName: "phone_number", }, { Name: "FirstName", SchemaName: "first_name", }, { Name: "LastName", SchemaName: "last_name", }, { Name: "Vcard", SchemaName: "vcard", }, } return typ } // Encode implements bin.Encoder. func (i *InputMediaContact) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaContact#f8ab7dfb as nil") } b.PutID(InputMediaContactTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaContact) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaContact#f8ab7dfb as nil") } b.PutString(i.PhoneNumber) b.PutString(i.FirstName) b.PutString(i.LastName) b.PutString(i.Vcard) return nil } // Decode implements bin.Decoder. func (i *InputMediaContact) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaContact#f8ab7dfb to nil") } if err := b.ConsumeID(InputMediaContactTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaContact#f8ab7dfb: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaContact) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaContact#f8ab7dfb to nil") } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaContact#f8ab7dfb: field phone_number: %w", err) } i.PhoneNumber = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaContact#f8ab7dfb: field first_name: %w", err) } i.FirstName = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaContact#f8ab7dfb: field last_name: %w", err) } i.LastName = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaContact#f8ab7dfb: field vcard: %w", err) } i.Vcard = value } return nil } // GetPhoneNumber returns value of PhoneNumber field. func (i *InputMediaContact) GetPhoneNumber() (value string) { if i == nil { return } return i.PhoneNumber } // GetFirstName returns value of FirstName field. func (i *InputMediaContact) GetFirstName() (value string) { if i == nil { return } return i.FirstName } // GetLastName returns value of LastName field. func (i *InputMediaContact) GetLastName() (value string) { if i == nil { return } return i.LastName } // GetVcard returns value of Vcard field. func (i *InputMediaContact) GetVcard() (value string) { if i == nil { return } return i.Vcard } // InputMediaUploadedDocument represents TL type `inputMediaUploadedDocument#37c9330`. // New document // // See https://core.telegram.org/constructor/inputMediaUploadedDocument for reference. type InputMediaUploadedDocument struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Whether to send the file as a video even if it doesn't have an audio track (i.e. if // set, the documentAttributeAnimated¹ attribute will not be set even for videos without // audio) // // Links: // 1) https://core.telegram.org/constructor/documentAttributeAnimated NosoundVideo bool // Force the media file to be uploaded as document ForceFile bool // Whether this media should be hidden behind a spoiler warning Spoiler bool // The uploaded file¹ // // Links: // 1) https://core.telegram.org/api/files File InputFileClass // Thumbnail of the document, uploaded as for the file // // Use SetThumb and GetThumb helpers. Thumb InputFileClass // MIME type of document MimeType string // Attributes that specify the type of the document (video, audio, voice, sticker, etc.) Attributes []DocumentAttributeClass // Attached stickers // // Use SetStickers and GetStickers helpers. Stickers []InputDocumentClass // Start playing the video at the specified timestamp (seconds). // // Use SetVideoCover and GetVideoCover helpers. VideoCover InputPhotoClass // Start playing the video at the specified timestamp (seconds). // // Use SetVideoTimestamp and GetVideoTimestamp helpers. VideoTimestamp int // Time to live in seconds of self-destructing document // // Use SetTTLSeconds and GetTTLSeconds helpers. TTLSeconds int } // InputMediaUploadedDocumentTypeID is TL type id of InputMediaUploadedDocument. const InputMediaUploadedDocumentTypeID = 0x37c9330 // construct implements constructor of InputMediaClass. func (i InputMediaUploadedDocument) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaUploadedDocument. var ( _ bin.Encoder = &InputMediaUploadedDocument{} _ bin.Decoder = &InputMediaUploadedDocument{} _ bin.BareEncoder = &InputMediaUploadedDocument{} _ bin.BareDecoder = &InputMediaUploadedDocument{} _ InputMediaClass = &InputMediaUploadedDocument{} ) func (i *InputMediaUploadedDocument) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.NosoundVideo == false) { return false } if !(i.ForceFile == false) { return false } if !(i.Spoiler == false) { return false } if !(i.File == nil) { return false } if !(i.Thumb == nil) { return false } if !(i.MimeType == "") { return false } if !(i.Attributes == nil) { return false } if !(i.Stickers == nil) { return false } if !(i.VideoCover == nil) { return false } if !(i.VideoTimestamp == 0) { return false } if !(i.TTLSeconds == 0) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaUploadedDocument) String() string { if i == nil { return "InputMediaUploadedDocument(nil)" } type Alias InputMediaUploadedDocument return fmt.Sprintf("InputMediaUploadedDocument%+v", Alias(*i)) } // FillFrom fills InputMediaUploadedDocument from given interface. func (i *InputMediaUploadedDocument) FillFrom(from interface { GetNosoundVideo() (value bool) GetForceFile() (value bool) GetSpoiler() (value bool) GetFile() (value InputFileClass) GetThumb() (value InputFileClass, ok bool) GetMimeType() (value string) GetAttributes() (value []DocumentAttributeClass) GetStickers() (value []InputDocumentClass, ok bool) GetVideoCover() (value InputPhotoClass, ok bool) GetVideoTimestamp() (value int, ok bool) GetTTLSeconds() (value int, ok bool) }) { i.NosoundVideo = from.GetNosoundVideo() i.ForceFile = from.GetForceFile() i.Spoiler = from.GetSpoiler() i.File = from.GetFile() if val, ok := from.GetThumb(); ok { i.Thumb = val } i.MimeType = from.GetMimeType() i.Attributes = from.GetAttributes() if val, ok := from.GetStickers(); ok { i.Stickers = val } if val, ok := from.GetVideoCover(); ok { i.VideoCover = val } if val, ok := from.GetVideoTimestamp(); ok { i.VideoTimestamp = val } if val, ok := from.GetTTLSeconds(); ok { i.TTLSeconds = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaUploadedDocument) TypeID() uint32 { return InputMediaUploadedDocumentTypeID } // TypeName returns name of type in TL schema. func (*InputMediaUploadedDocument) TypeName() string { return "inputMediaUploadedDocument" } // TypeInfo returns info about TL type. func (i *InputMediaUploadedDocument) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaUploadedDocument", ID: InputMediaUploadedDocumentTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "NosoundVideo", SchemaName: "nosound_video", Null: !i.Flags.Has(3), }, { Name: "ForceFile", SchemaName: "force_file", Null: !i.Flags.Has(4), }, { Name: "Spoiler", SchemaName: "spoiler", Null: !i.Flags.Has(5), }, { Name: "File", SchemaName: "file", }, { Name: "Thumb", SchemaName: "thumb", Null: !i.Flags.Has(2), }, { Name: "MimeType", SchemaName: "mime_type", }, { Name: "Attributes", SchemaName: "attributes", }, { Name: "Stickers", SchemaName: "stickers", Null: !i.Flags.Has(0), }, { Name: "VideoCover", SchemaName: "video_cover", Null: !i.Flags.Has(6), }, { Name: "VideoTimestamp", SchemaName: "video_timestamp", Null: !i.Flags.Has(7), }, { Name: "TTLSeconds", SchemaName: "ttl_seconds", Null: !i.Flags.Has(1), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaUploadedDocument) SetFlags() { if !(i.NosoundVideo == false) { i.Flags.Set(3) } if !(i.ForceFile == false) { i.Flags.Set(4) } if !(i.Spoiler == false) { i.Flags.Set(5) } if !(i.Thumb == nil) { i.Flags.Set(2) } if !(i.Stickers == nil) { i.Flags.Set(0) } if !(i.VideoCover == nil) { i.Flags.Set(6) } if !(i.VideoTimestamp == 0) { i.Flags.Set(7) } if !(i.TTLSeconds == 0) { i.Flags.Set(1) } } // Encode implements bin.Encoder. func (i *InputMediaUploadedDocument) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaUploadedDocument#37c9330 as nil") } b.PutID(InputMediaUploadedDocumentTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaUploadedDocument) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaUploadedDocument#37c9330 as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field flags: %w", err) } if i.File == nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field file is nil") } if err := i.File.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field file: %w", err) } if i.Flags.Has(2) { if i.Thumb == nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field thumb is nil") } if err := i.Thumb.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field thumb: %w", err) } } b.PutString(i.MimeType) b.PutVectorHeader(len(i.Attributes)) for idx, v := range i.Attributes { if v == nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field attributes element with index %d is nil", idx) } if err := v.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field attributes element with index %d: %w", idx, err) } } if i.Flags.Has(0) { b.PutVectorHeader(len(i.Stickers)) for idx, v := range i.Stickers { if v == nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field stickers element with index %d is nil", idx) } if err := v.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field stickers element with index %d: %w", idx, err) } } } if i.Flags.Has(6) { if i.VideoCover == nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field video_cover is nil") } if err := i.VideoCover.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaUploadedDocument#37c9330: field video_cover: %w", err) } } if i.Flags.Has(7) { b.PutInt(i.VideoTimestamp) } if i.Flags.Has(1) { b.PutInt(i.TTLSeconds) } return nil } // Decode implements bin.Decoder. func (i *InputMediaUploadedDocument) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaUploadedDocument#37c9330 to nil") } if err := b.ConsumeID(InputMediaUploadedDocumentTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaUploadedDocument) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaUploadedDocument#37c9330 to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field flags: %w", err) } } i.NosoundVideo = i.Flags.Has(3) i.ForceFile = i.Flags.Has(4) i.Spoiler = i.Flags.Has(5) { value, err := DecodeInputFile(b) if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field file: %w", err) } i.File = value } if i.Flags.Has(2) { value, err := DecodeInputFile(b) if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field thumb: %w", err) } i.Thumb = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field mime_type: %w", err) } i.MimeType = value } { headerLen, err := b.VectorHeader() if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field attributes: %w", err) } if headerLen > 0 { i.Attributes = make([]DocumentAttributeClass, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { value, err := DecodeDocumentAttribute(b) if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field attributes: %w", err) } i.Attributes = append(i.Attributes, value) } } if i.Flags.Has(0) { headerLen, err := b.VectorHeader() if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field stickers: %w", err) } if headerLen > 0 { i.Stickers = make([]InputDocumentClass, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { value, err := DecodeInputDocument(b) if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field stickers: %w", err) } i.Stickers = append(i.Stickers, value) } } if i.Flags.Has(6) { value, err := DecodeInputPhoto(b) if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field video_cover: %w", err) } i.VideoCover = value } if i.Flags.Has(7) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field video_timestamp: %w", err) } i.VideoTimestamp = value } if i.Flags.Has(1) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaUploadedDocument#37c9330: field ttl_seconds: %w", err) } i.TTLSeconds = value } return nil } // SetNosoundVideo sets value of NosoundVideo conditional field. func (i *InputMediaUploadedDocument) SetNosoundVideo(value bool) { if value { i.Flags.Set(3) i.NosoundVideo = true } else { i.Flags.Unset(3) i.NosoundVideo = false } } // GetNosoundVideo returns value of NosoundVideo conditional field. func (i *InputMediaUploadedDocument) GetNosoundVideo() (value bool) { if i == nil { return } return i.Flags.Has(3) } // SetForceFile sets value of ForceFile conditional field. func (i *InputMediaUploadedDocument) SetForceFile(value bool) { if value { i.Flags.Set(4) i.ForceFile = true } else { i.Flags.Unset(4) i.ForceFile = false } } // GetForceFile returns value of ForceFile conditional field. func (i *InputMediaUploadedDocument) GetForceFile() (value bool) { if i == nil { return } return i.Flags.Has(4) } // SetSpoiler sets value of Spoiler conditional field. func (i *InputMediaUploadedDocument) SetSpoiler(value bool) { if value { i.Flags.Set(5) i.Spoiler = true } else { i.Flags.Unset(5) i.Spoiler = false } } // GetSpoiler returns value of Spoiler conditional field. func (i *InputMediaUploadedDocument) GetSpoiler() (value bool) { if i == nil { return } return i.Flags.Has(5) } // GetFile returns value of File field. func (i *InputMediaUploadedDocument) GetFile() (value InputFileClass) { if i == nil { return } return i.File } // SetThumb sets value of Thumb conditional field. func (i *InputMediaUploadedDocument) SetThumb(value InputFileClass) { i.Flags.Set(2) i.Thumb = value } // GetThumb returns value of Thumb conditional field and // boolean which is true if field was set. func (i *InputMediaUploadedDocument) GetThumb() (value InputFileClass, ok bool) { if i == nil { return } if !i.Flags.Has(2) { return value, false } return i.Thumb, true } // GetMimeType returns value of MimeType field. func (i *InputMediaUploadedDocument) GetMimeType() (value string) { if i == nil { return } return i.MimeType } // GetAttributes returns value of Attributes field. func (i *InputMediaUploadedDocument) GetAttributes() (value []DocumentAttributeClass) { if i == nil { return } return i.Attributes } // SetStickers sets value of Stickers conditional field. func (i *InputMediaUploadedDocument) SetStickers(value []InputDocumentClass) { i.Flags.Set(0) i.Stickers = value } // GetStickers returns value of Stickers conditional field and // boolean which is true if field was set. func (i *InputMediaUploadedDocument) GetStickers() (value []InputDocumentClass, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.Stickers, true } // SetVideoCover sets value of VideoCover conditional field. func (i *InputMediaUploadedDocument) SetVideoCover(value InputPhotoClass) { i.Flags.Set(6) i.VideoCover = value } // GetVideoCover returns value of VideoCover conditional field and // boolean which is true if field was set. func (i *InputMediaUploadedDocument) GetVideoCover() (value InputPhotoClass, ok bool) { if i == nil { return } if !i.Flags.Has(6) { return value, false } return i.VideoCover, true } // SetVideoTimestamp sets value of VideoTimestamp conditional field. func (i *InputMediaUploadedDocument) SetVideoTimestamp(value int) { i.Flags.Set(7) i.VideoTimestamp = value } // GetVideoTimestamp returns value of VideoTimestamp conditional field and // boolean which is true if field was set. func (i *InputMediaUploadedDocument) GetVideoTimestamp() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(7) { return value, false } return i.VideoTimestamp, true } // SetTTLSeconds sets value of TTLSeconds conditional field. func (i *InputMediaUploadedDocument) SetTTLSeconds(value int) { i.Flags.Set(1) i.TTLSeconds = value } // GetTTLSeconds returns value of TTLSeconds conditional field and // boolean which is true if field was set. func (i *InputMediaUploadedDocument) GetTTLSeconds() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(1) { return value, false } return i.TTLSeconds, true } // MapAttributes returns field Attributes wrapped in DocumentAttributeClassArray helper. func (i *InputMediaUploadedDocument) MapAttributes() (value DocumentAttributeClassArray) { return DocumentAttributeClassArray(i.Attributes) } // MapStickers returns field Stickers wrapped in InputDocumentClassArray helper. func (i *InputMediaUploadedDocument) MapStickers() (value InputDocumentClassArray, ok bool) { if !i.Flags.Has(0) { return value, false } return InputDocumentClassArray(i.Stickers), true } // InputMediaDocument represents TL type `inputMediaDocument#a8763ab5`. // Forwarded document // // See https://core.telegram.org/constructor/inputMediaDocument for reference. type InputMediaDocument struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Whether this media should be hidden behind a spoiler warning Spoiler bool // The document to be forwarded. ID InputDocumentClass // Custom video cover. // // Use SetVideoCover and GetVideoCover helpers. VideoCover InputPhotoClass // Start playing the video at the specified timestamp (seconds). // // Use SetVideoTimestamp and GetVideoTimestamp helpers. VideoTimestamp int // Time to live of self-destructing document // // Use SetTTLSeconds and GetTTLSeconds helpers. TTLSeconds int // Text query or emoji that was used by the user to find this sticker or GIF: used to // improve search result relevance. // // Use SetQuery and GetQuery helpers. Query string } // InputMediaDocumentTypeID is TL type id of InputMediaDocument. const InputMediaDocumentTypeID = 0xa8763ab5 // construct implements constructor of InputMediaClass. func (i InputMediaDocument) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaDocument. var ( _ bin.Encoder = &InputMediaDocument{} _ bin.Decoder = &InputMediaDocument{} _ bin.BareEncoder = &InputMediaDocument{} _ bin.BareDecoder = &InputMediaDocument{} _ InputMediaClass = &InputMediaDocument{} ) func (i *InputMediaDocument) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.Spoiler == false) { return false } if !(i.ID == nil) { return false } if !(i.VideoCover == nil) { return false } if !(i.VideoTimestamp == 0) { return false } if !(i.TTLSeconds == 0) { return false } if !(i.Query == "") { return false } return true } // String implements fmt.Stringer. func (i *InputMediaDocument) String() string { if i == nil { return "InputMediaDocument(nil)" } type Alias InputMediaDocument return fmt.Sprintf("InputMediaDocument%+v", Alias(*i)) } // FillFrom fills InputMediaDocument from given interface. func (i *InputMediaDocument) FillFrom(from interface { GetSpoiler() (value bool) GetID() (value InputDocumentClass) GetVideoCover() (value InputPhotoClass, ok bool) GetVideoTimestamp() (value int, ok bool) GetTTLSeconds() (value int, ok bool) GetQuery() (value string, ok bool) }) { i.Spoiler = from.GetSpoiler() i.ID = from.GetID() if val, ok := from.GetVideoCover(); ok { i.VideoCover = val } if val, ok := from.GetVideoTimestamp(); ok { i.VideoTimestamp = val } if val, ok := from.GetTTLSeconds(); ok { i.TTLSeconds = val } if val, ok := from.GetQuery(); ok { i.Query = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaDocument) TypeID() uint32 { return InputMediaDocumentTypeID } // TypeName returns name of type in TL schema. func (*InputMediaDocument) TypeName() string { return "inputMediaDocument" } // TypeInfo returns info about TL type. func (i *InputMediaDocument) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaDocument", ID: InputMediaDocumentTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Spoiler", SchemaName: "spoiler", Null: !i.Flags.Has(2), }, { Name: "ID", SchemaName: "id", }, { Name: "VideoCover", SchemaName: "video_cover", Null: !i.Flags.Has(3), }, { Name: "VideoTimestamp", SchemaName: "video_timestamp", Null: !i.Flags.Has(4), }, { Name: "TTLSeconds", SchemaName: "ttl_seconds", Null: !i.Flags.Has(0), }, { Name: "Query", SchemaName: "query", Null: !i.Flags.Has(1), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaDocument) SetFlags() { if !(i.Spoiler == false) { i.Flags.Set(2) } if !(i.VideoCover == nil) { i.Flags.Set(3) } if !(i.VideoTimestamp == 0) { i.Flags.Set(4) } if !(i.TTLSeconds == 0) { i.Flags.Set(0) } if !(i.Query == "") { i.Flags.Set(1) } } // Encode implements bin.Encoder. func (i *InputMediaDocument) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaDocument#a8763ab5 as nil") } b.PutID(InputMediaDocumentTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaDocument) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaDocument#a8763ab5 as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaDocument#a8763ab5: field flags: %w", err) } if i.ID == nil { return fmt.Errorf("unable to encode inputMediaDocument#a8763ab5: field id is nil") } if err := i.ID.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaDocument#a8763ab5: field id: %w", err) } if i.Flags.Has(3) { if i.VideoCover == nil { return fmt.Errorf("unable to encode inputMediaDocument#a8763ab5: field video_cover is nil") } if err := i.VideoCover.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaDocument#a8763ab5: field video_cover: %w", err) } } if i.Flags.Has(4) { b.PutInt(i.VideoTimestamp) } if i.Flags.Has(0) { b.PutInt(i.TTLSeconds) } if i.Flags.Has(1) { b.PutString(i.Query) } return nil } // Decode implements bin.Decoder. func (i *InputMediaDocument) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaDocument#a8763ab5 to nil") } if err := b.ConsumeID(InputMediaDocumentTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaDocument#a8763ab5: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaDocument) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaDocument#a8763ab5 to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaDocument#a8763ab5: field flags: %w", err) } } i.Spoiler = i.Flags.Has(2) { value, err := DecodeInputDocument(b) if err != nil { return fmt.Errorf("unable to decode inputMediaDocument#a8763ab5: field id: %w", err) } i.ID = value } if i.Flags.Has(3) { value, err := DecodeInputPhoto(b) if err != nil { return fmt.Errorf("unable to decode inputMediaDocument#a8763ab5: field video_cover: %w", err) } i.VideoCover = value } if i.Flags.Has(4) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaDocument#a8763ab5: field video_timestamp: %w", err) } i.VideoTimestamp = value } if i.Flags.Has(0) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaDocument#a8763ab5: field ttl_seconds: %w", err) } i.TTLSeconds = value } if i.Flags.Has(1) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaDocument#a8763ab5: field query: %w", err) } i.Query = value } return nil } // SetSpoiler sets value of Spoiler conditional field. func (i *InputMediaDocument) SetSpoiler(value bool) { if value { i.Flags.Set(2) i.Spoiler = true } else { i.Flags.Unset(2) i.Spoiler = false } } // GetSpoiler returns value of Spoiler conditional field. func (i *InputMediaDocument) GetSpoiler() (value bool) { if i == nil { return } return i.Flags.Has(2) } // GetID returns value of ID field. func (i *InputMediaDocument) GetID() (value InputDocumentClass) { if i == nil { return } return i.ID } // SetVideoCover sets value of VideoCover conditional field. func (i *InputMediaDocument) SetVideoCover(value InputPhotoClass) { i.Flags.Set(3) i.VideoCover = value } // GetVideoCover returns value of VideoCover conditional field and // boolean which is true if field was set. func (i *InputMediaDocument) GetVideoCover() (value InputPhotoClass, ok bool) { if i == nil { return } if !i.Flags.Has(3) { return value, false } return i.VideoCover, true } // SetVideoTimestamp sets value of VideoTimestamp conditional field. func (i *InputMediaDocument) SetVideoTimestamp(value int) { i.Flags.Set(4) i.VideoTimestamp = value } // GetVideoTimestamp returns value of VideoTimestamp conditional field and // boolean which is true if field was set. func (i *InputMediaDocument) GetVideoTimestamp() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(4) { return value, false } return i.VideoTimestamp, true } // SetTTLSeconds sets value of TTLSeconds conditional field. func (i *InputMediaDocument) SetTTLSeconds(value int) { i.Flags.Set(0) i.TTLSeconds = value } // GetTTLSeconds returns value of TTLSeconds conditional field and // boolean which is true if field was set. func (i *InputMediaDocument) GetTTLSeconds() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.TTLSeconds, true } // SetQuery sets value of Query conditional field. func (i *InputMediaDocument) SetQuery(value string) { i.Flags.Set(1) i.Query = value } // GetQuery returns value of Query conditional field and // boolean which is true if field was set. func (i *InputMediaDocument) GetQuery() (value string, ok bool) { if i == nil { return } if !i.Flags.Has(1) { return value, false } return i.Query, true } // InputMediaVenue represents TL type `inputMediaVenue#c13d1c11`. // Can be used to send a venue geolocation. // // See https://core.telegram.org/constructor/inputMediaVenue for reference. type InputMediaVenue struct { // Geolocation GeoPoint InputGeoPointClass // Venue name Title string // Physical address of the venue Address string // Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be // supported Provider string // Venue ID in the provider's database VenueID string // Venue type in the provider's database VenueType string } // InputMediaVenueTypeID is TL type id of InputMediaVenue. const InputMediaVenueTypeID = 0xc13d1c11 // construct implements constructor of InputMediaClass. func (i InputMediaVenue) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaVenue. var ( _ bin.Encoder = &InputMediaVenue{} _ bin.Decoder = &InputMediaVenue{} _ bin.BareEncoder = &InputMediaVenue{} _ bin.BareDecoder = &InputMediaVenue{} _ InputMediaClass = &InputMediaVenue{} ) func (i *InputMediaVenue) Zero() bool { if i == nil { return true } if !(i.GeoPoint == nil) { return false } if !(i.Title == "") { return false } if !(i.Address == "") { return false } if !(i.Provider == "") { return false } if !(i.VenueID == "") { return false } if !(i.VenueType == "") { return false } return true } // String implements fmt.Stringer. func (i *InputMediaVenue) String() string { if i == nil { return "InputMediaVenue(nil)" } type Alias InputMediaVenue return fmt.Sprintf("InputMediaVenue%+v", Alias(*i)) } // FillFrom fills InputMediaVenue from given interface. func (i *InputMediaVenue) FillFrom(from interface { GetGeoPoint() (value InputGeoPointClass) GetTitle() (value string) GetAddress() (value string) GetProvider() (value string) GetVenueID() (value string) GetVenueType() (value string) }) { i.GeoPoint = from.GetGeoPoint() i.Title = from.GetTitle() i.Address = from.GetAddress() i.Provider = from.GetProvider() i.VenueID = from.GetVenueID() i.VenueType = from.GetVenueType() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaVenue) TypeID() uint32 { return InputMediaVenueTypeID } // TypeName returns name of type in TL schema. func (*InputMediaVenue) TypeName() string { return "inputMediaVenue" } // TypeInfo returns info about TL type. func (i *InputMediaVenue) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaVenue", ID: InputMediaVenueTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "GeoPoint", SchemaName: "geo_point", }, { Name: "Title", SchemaName: "title", }, { Name: "Address", SchemaName: "address", }, { Name: "Provider", SchemaName: "provider", }, { Name: "VenueID", SchemaName: "venue_id", }, { Name: "VenueType", SchemaName: "venue_type", }, } return typ } // Encode implements bin.Encoder. func (i *InputMediaVenue) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaVenue#c13d1c11 as nil") } b.PutID(InputMediaVenueTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaVenue) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaVenue#c13d1c11 as nil") } if i.GeoPoint == nil { return fmt.Errorf("unable to encode inputMediaVenue#c13d1c11: field geo_point is nil") } if err := i.GeoPoint.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaVenue#c13d1c11: field geo_point: %w", err) } b.PutString(i.Title) b.PutString(i.Address) b.PutString(i.Provider) b.PutString(i.VenueID) b.PutString(i.VenueType) return nil } // Decode implements bin.Decoder. func (i *InputMediaVenue) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaVenue#c13d1c11 to nil") } if err := b.ConsumeID(InputMediaVenueTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaVenue#c13d1c11: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaVenue) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaVenue#c13d1c11 to nil") } { value, err := DecodeInputGeoPoint(b) if err != nil { return fmt.Errorf("unable to decode inputMediaVenue#c13d1c11: field geo_point: %w", err) } i.GeoPoint = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaVenue#c13d1c11: field title: %w", err) } i.Title = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaVenue#c13d1c11: field address: %w", err) } i.Address = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaVenue#c13d1c11: field provider: %w", err) } i.Provider = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaVenue#c13d1c11: field venue_id: %w", err) } i.VenueID = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaVenue#c13d1c11: field venue_type: %w", err) } i.VenueType = value } return nil } // GetGeoPoint returns value of GeoPoint field. func (i *InputMediaVenue) GetGeoPoint() (value InputGeoPointClass) { if i == nil { return } return i.GeoPoint } // GetTitle returns value of Title field. func (i *InputMediaVenue) GetTitle() (value string) { if i == nil { return } return i.Title } // GetAddress returns value of Address field. func (i *InputMediaVenue) GetAddress() (value string) { if i == nil { return } return i.Address } // GetProvider returns value of Provider field. func (i *InputMediaVenue) GetProvider() (value string) { if i == nil { return } return i.Provider } // GetVenueID returns value of VenueID field. func (i *InputMediaVenue) GetVenueID() (value string) { if i == nil { return } return i.VenueID } // GetVenueType returns value of VenueType field. func (i *InputMediaVenue) GetVenueType() (value string) { if i == nil { return } return i.VenueType } // InputMediaPhotoExternal represents TL type `inputMediaPhotoExternal#e5bbfe1a`. // New photo that will be uploaded by the server using the specified URL // // See https://core.telegram.org/constructor/inputMediaPhotoExternal for reference. type InputMediaPhotoExternal struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Whether this media should be hidden behind a spoiler warning Spoiler bool // URL of the photo URL string // Self-destruct time to live of photo // // Use SetTTLSeconds and GetTTLSeconds helpers. TTLSeconds int } // InputMediaPhotoExternalTypeID is TL type id of InputMediaPhotoExternal. const InputMediaPhotoExternalTypeID = 0xe5bbfe1a // construct implements constructor of InputMediaClass. func (i InputMediaPhotoExternal) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaPhotoExternal. var ( _ bin.Encoder = &InputMediaPhotoExternal{} _ bin.Decoder = &InputMediaPhotoExternal{} _ bin.BareEncoder = &InputMediaPhotoExternal{} _ bin.BareDecoder = &InputMediaPhotoExternal{} _ InputMediaClass = &InputMediaPhotoExternal{} ) func (i *InputMediaPhotoExternal) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.Spoiler == false) { return false } if !(i.URL == "") { return false } if !(i.TTLSeconds == 0) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaPhotoExternal) String() string { if i == nil { return "InputMediaPhotoExternal(nil)" } type Alias InputMediaPhotoExternal return fmt.Sprintf("InputMediaPhotoExternal%+v", Alias(*i)) } // FillFrom fills InputMediaPhotoExternal from given interface. func (i *InputMediaPhotoExternal) FillFrom(from interface { GetSpoiler() (value bool) GetURL() (value string) GetTTLSeconds() (value int, ok bool) }) { i.Spoiler = from.GetSpoiler() i.URL = from.GetURL() if val, ok := from.GetTTLSeconds(); ok { i.TTLSeconds = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaPhotoExternal) TypeID() uint32 { return InputMediaPhotoExternalTypeID } // TypeName returns name of type in TL schema. func (*InputMediaPhotoExternal) TypeName() string { return "inputMediaPhotoExternal" } // TypeInfo returns info about TL type. func (i *InputMediaPhotoExternal) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaPhotoExternal", ID: InputMediaPhotoExternalTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Spoiler", SchemaName: "spoiler", Null: !i.Flags.Has(1), }, { Name: "URL", SchemaName: "url", }, { Name: "TTLSeconds", SchemaName: "ttl_seconds", Null: !i.Flags.Has(0), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaPhotoExternal) SetFlags() { if !(i.Spoiler == false) { i.Flags.Set(1) } if !(i.TTLSeconds == 0) { i.Flags.Set(0) } } // Encode implements bin.Encoder. func (i *InputMediaPhotoExternal) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaPhotoExternal#e5bbfe1a as nil") } b.PutID(InputMediaPhotoExternalTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaPhotoExternal) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaPhotoExternal#e5bbfe1a as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPhotoExternal#e5bbfe1a: field flags: %w", err) } b.PutString(i.URL) if i.Flags.Has(0) { b.PutInt(i.TTLSeconds) } return nil } // Decode implements bin.Decoder. func (i *InputMediaPhotoExternal) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaPhotoExternal#e5bbfe1a to nil") } if err := b.ConsumeID(InputMediaPhotoExternalTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaPhotoExternal#e5bbfe1a: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaPhotoExternal) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaPhotoExternal#e5bbfe1a to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaPhotoExternal#e5bbfe1a: field flags: %w", err) } } i.Spoiler = i.Flags.Has(1) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaPhotoExternal#e5bbfe1a: field url: %w", err) } i.URL = value } if i.Flags.Has(0) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaPhotoExternal#e5bbfe1a: field ttl_seconds: %w", err) } i.TTLSeconds = value } return nil } // SetSpoiler sets value of Spoiler conditional field. func (i *InputMediaPhotoExternal) SetSpoiler(value bool) { if value { i.Flags.Set(1) i.Spoiler = true } else { i.Flags.Unset(1) i.Spoiler = false } } // GetSpoiler returns value of Spoiler conditional field. func (i *InputMediaPhotoExternal) GetSpoiler() (value bool) { if i == nil { return } return i.Flags.Has(1) } // GetURL returns value of URL field. func (i *InputMediaPhotoExternal) GetURL() (value string) { if i == nil { return } return i.URL } // SetTTLSeconds sets value of TTLSeconds conditional field. func (i *InputMediaPhotoExternal) SetTTLSeconds(value int) { i.Flags.Set(0) i.TTLSeconds = value } // GetTTLSeconds returns value of TTLSeconds conditional field and // boolean which is true if field was set. func (i *InputMediaPhotoExternal) GetTTLSeconds() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.TTLSeconds, true } // InputMediaDocumentExternal represents TL type `inputMediaDocumentExternal#779600f9`. // Document that will be downloaded by the telegram servers // // See https://core.telegram.org/constructor/inputMediaDocumentExternal for reference. type InputMediaDocumentExternal struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Whether this media should be hidden behind a spoiler warning Spoiler bool // URL of the document URL string // Self-destruct time to live of document // // Use SetTTLSeconds and GetTTLSeconds helpers. TTLSeconds int // Custom video cover. // // Use SetVideoCover and GetVideoCover helpers. VideoCover InputPhotoClass // Start playing the video at the specified timestamp (seconds). // // Use SetVideoTimestamp and GetVideoTimestamp helpers. VideoTimestamp int } // InputMediaDocumentExternalTypeID is TL type id of InputMediaDocumentExternal. const InputMediaDocumentExternalTypeID = 0x779600f9 // construct implements constructor of InputMediaClass. func (i InputMediaDocumentExternal) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaDocumentExternal. var ( _ bin.Encoder = &InputMediaDocumentExternal{} _ bin.Decoder = &InputMediaDocumentExternal{} _ bin.BareEncoder = &InputMediaDocumentExternal{} _ bin.BareDecoder = &InputMediaDocumentExternal{} _ InputMediaClass = &InputMediaDocumentExternal{} ) func (i *InputMediaDocumentExternal) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.Spoiler == false) { return false } if !(i.URL == "") { return false } if !(i.TTLSeconds == 0) { return false } if !(i.VideoCover == nil) { return false } if !(i.VideoTimestamp == 0) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaDocumentExternal) String() string { if i == nil { return "InputMediaDocumentExternal(nil)" } type Alias InputMediaDocumentExternal return fmt.Sprintf("InputMediaDocumentExternal%+v", Alias(*i)) } // FillFrom fills InputMediaDocumentExternal from given interface. func (i *InputMediaDocumentExternal) FillFrom(from interface { GetSpoiler() (value bool) GetURL() (value string) GetTTLSeconds() (value int, ok bool) GetVideoCover() (value InputPhotoClass, ok bool) GetVideoTimestamp() (value int, ok bool) }) { i.Spoiler = from.GetSpoiler() i.URL = from.GetURL() if val, ok := from.GetTTLSeconds(); ok { i.TTLSeconds = val } if val, ok := from.GetVideoCover(); ok { i.VideoCover = val } if val, ok := from.GetVideoTimestamp(); ok { i.VideoTimestamp = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaDocumentExternal) TypeID() uint32 { return InputMediaDocumentExternalTypeID } // TypeName returns name of type in TL schema. func (*InputMediaDocumentExternal) TypeName() string { return "inputMediaDocumentExternal" } // TypeInfo returns info about TL type. func (i *InputMediaDocumentExternal) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaDocumentExternal", ID: InputMediaDocumentExternalTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Spoiler", SchemaName: "spoiler", Null: !i.Flags.Has(1), }, { Name: "URL", SchemaName: "url", }, { Name: "TTLSeconds", SchemaName: "ttl_seconds", Null: !i.Flags.Has(0), }, { Name: "VideoCover", SchemaName: "video_cover", Null: !i.Flags.Has(2), }, { Name: "VideoTimestamp", SchemaName: "video_timestamp", Null: !i.Flags.Has(3), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaDocumentExternal) SetFlags() { if !(i.Spoiler == false) { i.Flags.Set(1) } if !(i.TTLSeconds == 0) { i.Flags.Set(0) } if !(i.VideoCover == nil) { i.Flags.Set(2) } if !(i.VideoTimestamp == 0) { i.Flags.Set(3) } } // Encode implements bin.Encoder. func (i *InputMediaDocumentExternal) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaDocumentExternal#779600f9 as nil") } b.PutID(InputMediaDocumentExternalTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaDocumentExternal) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaDocumentExternal#779600f9 as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaDocumentExternal#779600f9: field flags: %w", err) } b.PutString(i.URL) if i.Flags.Has(0) { b.PutInt(i.TTLSeconds) } if i.Flags.Has(2) { if i.VideoCover == nil { return fmt.Errorf("unable to encode inputMediaDocumentExternal#779600f9: field video_cover is nil") } if err := i.VideoCover.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaDocumentExternal#779600f9: field video_cover: %w", err) } } if i.Flags.Has(3) { b.PutInt(i.VideoTimestamp) } return nil } // Decode implements bin.Decoder. func (i *InputMediaDocumentExternal) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaDocumentExternal#779600f9 to nil") } if err := b.ConsumeID(InputMediaDocumentExternalTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaDocumentExternal#779600f9: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaDocumentExternal) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaDocumentExternal#779600f9 to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaDocumentExternal#779600f9: field flags: %w", err) } } i.Spoiler = i.Flags.Has(1) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaDocumentExternal#779600f9: field url: %w", err) } i.URL = value } if i.Flags.Has(0) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaDocumentExternal#779600f9: field ttl_seconds: %w", err) } i.TTLSeconds = value } if i.Flags.Has(2) { value, err := DecodeInputPhoto(b) if err != nil { return fmt.Errorf("unable to decode inputMediaDocumentExternal#779600f9: field video_cover: %w", err) } i.VideoCover = value } if i.Flags.Has(3) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaDocumentExternal#779600f9: field video_timestamp: %w", err) } i.VideoTimestamp = value } return nil } // SetSpoiler sets value of Spoiler conditional field. func (i *InputMediaDocumentExternal) SetSpoiler(value bool) { if value { i.Flags.Set(1) i.Spoiler = true } else { i.Flags.Unset(1) i.Spoiler = false } } // GetSpoiler returns value of Spoiler conditional field. func (i *InputMediaDocumentExternal) GetSpoiler() (value bool) { if i == nil { return } return i.Flags.Has(1) } // GetURL returns value of URL field. func (i *InputMediaDocumentExternal) GetURL() (value string) { if i == nil { return } return i.URL } // SetTTLSeconds sets value of TTLSeconds conditional field. func (i *InputMediaDocumentExternal) SetTTLSeconds(value int) { i.Flags.Set(0) i.TTLSeconds = value } // GetTTLSeconds returns value of TTLSeconds conditional field and // boolean which is true if field was set. func (i *InputMediaDocumentExternal) GetTTLSeconds() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.TTLSeconds, true } // SetVideoCover sets value of VideoCover conditional field. func (i *InputMediaDocumentExternal) SetVideoCover(value InputPhotoClass) { i.Flags.Set(2) i.VideoCover = value } // GetVideoCover returns value of VideoCover conditional field and // boolean which is true if field was set. func (i *InputMediaDocumentExternal) GetVideoCover() (value InputPhotoClass, ok bool) { if i == nil { return } if !i.Flags.Has(2) { return value, false } return i.VideoCover, true } // SetVideoTimestamp sets value of VideoTimestamp conditional field. func (i *InputMediaDocumentExternal) SetVideoTimestamp(value int) { i.Flags.Set(3) i.VideoTimestamp = value } // GetVideoTimestamp returns value of VideoTimestamp conditional field and // boolean which is true if field was set. func (i *InputMediaDocumentExternal) GetVideoTimestamp() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(3) { return value, false } return i.VideoTimestamp, true } // InputMediaGame represents TL type `inputMediaGame#d33f43f3`. // A game // // See https://core.telegram.org/constructor/inputMediaGame for reference. type InputMediaGame struct { // The game to forward ID InputGameClass } // InputMediaGameTypeID is TL type id of InputMediaGame. const InputMediaGameTypeID = 0xd33f43f3 // construct implements constructor of InputMediaClass. func (i InputMediaGame) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaGame. var ( _ bin.Encoder = &InputMediaGame{} _ bin.Decoder = &InputMediaGame{} _ bin.BareEncoder = &InputMediaGame{} _ bin.BareDecoder = &InputMediaGame{} _ InputMediaClass = &InputMediaGame{} ) func (i *InputMediaGame) Zero() bool { if i == nil { return true } if !(i.ID == nil) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaGame) String() string { if i == nil { return "InputMediaGame(nil)" } type Alias InputMediaGame return fmt.Sprintf("InputMediaGame%+v", Alias(*i)) } // FillFrom fills InputMediaGame from given interface. func (i *InputMediaGame) FillFrom(from interface { GetID() (value InputGameClass) }) { i.ID = from.GetID() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaGame) TypeID() uint32 { return InputMediaGameTypeID } // TypeName returns name of type in TL schema. func (*InputMediaGame) TypeName() string { return "inputMediaGame" } // TypeInfo returns info about TL type. func (i *InputMediaGame) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaGame", ID: InputMediaGameTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "ID", SchemaName: "id", }, } return typ } // Encode implements bin.Encoder. func (i *InputMediaGame) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaGame#d33f43f3 as nil") } b.PutID(InputMediaGameTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaGame) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaGame#d33f43f3 as nil") } if i.ID == nil { return fmt.Errorf("unable to encode inputMediaGame#d33f43f3: field id is nil") } if err := i.ID.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaGame#d33f43f3: field id: %w", err) } return nil } // Decode implements bin.Decoder. func (i *InputMediaGame) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaGame#d33f43f3 to nil") } if err := b.ConsumeID(InputMediaGameTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaGame#d33f43f3: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaGame) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaGame#d33f43f3 to nil") } { value, err := DecodeInputGame(b) if err != nil { return fmt.Errorf("unable to decode inputMediaGame#d33f43f3: field id: %w", err) } i.ID = value } return nil } // GetID returns value of ID field. func (i *InputMediaGame) GetID() (value InputGameClass) { if i == nil { return } return i.ID } // InputMediaInvoice represents TL type `inputMediaInvoice#405fef0d`. // Generated invoice of a bot payment¹ // // Links: // 1. https://core.telegram.org/bots/payments // // See https://core.telegram.org/constructor/inputMediaInvoice for reference. type InputMediaInvoice struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Product name, 1-32 characters Title string // Product description, 1-255 characters Description string // URL of the product photo for the invoice. Can be a photo of the goods or a marketing // image for a service. People like it better when they see what they are paying for. // // Use SetPhoto and GetPhoto helpers. Photo InputWebDocument // The actual invoice Invoice Invoice // Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use // for your internal processes. Payload []byte // Payments provider token, obtained via Botfather¹ // // Links: // 1) https://t.me/botfather // // Use SetProvider and GetProvider helpers. Provider string // JSON-encoded data about the invoice, which will be shared with the payment provider. A // detailed description of required fields should be provided by the payment provider. ProviderData DataJSON // Unique bot deep links start parameter¹. If present, forwarded copies of the sent // message will have a URL button with a deep link² to the bot (instead of a Pay button) // with the value used as the start parameter. If absent, forwarded copies of the sent // message will have a Pay button, allowing multiple users to pay directly from the // forwarded message, using the same invoice. // // Links: // 1) https://core.telegram.org/api/links#bot-links // 2) https://core.telegram.org/api/links#bot-links // // Use SetStartParam and GetStartParam helpers. StartParam string // Deprecated // // Use SetExtendedMedia and GetExtendedMedia helpers. ExtendedMedia InputMediaClass } // InputMediaInvoiceTypeID is TL type id of InputMediaInvoice. const InputMediaInvoiceTypeID = 0x405fef0d // construct implements constructor of InputMediaClass. func (i InputMediaInvoice) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaInvoice. var ( _ bin.Encoder = &InputMediaInvoice{} _ bin.Decoder = &InputMediaInvoice{} _ bin.BareEncoder = &InputMediaInvoice{} _ bin.BareDecoder = &InputMediaInvoice{} _ InputMediaClass = &InputMediaInvoice{} ) func (i *InputMediaInvoice) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.Title == "") { return false } if !(i.Description == "") { return false } if !(i.Photo.Zero()) { return false } if !(i.Invoice.Zero()) { return false } if !(i.Payload == nil) { return false } if !(i.Provider == "") { return false } if !(i.ProviderData.Zero()) { return false } if !(i.StartParam == "") { return false } if !(i.ExtendedMedia == nil) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaInvoice) String() string { if i == nil { return "InputMediaInvoice(nil)" } type Alias InputMediaInvoice return fmt.Sprintf("InputMediaInvoice%+v", Alias(*i)) } // FillFrom fills InputMediaInvoice from given interface. func (i *InputMediaInvoice) FillFrom(from interface { GetTitle() (value string) GetDescription() (value string) GetPhoto() (value InputWebDocument, ok bool) GetInvoice() (value Invoice) GetPayload() (value []byte) GetProvider() (value string, ok bool) GetProviderData() (value DataJSON) GetStartParam() (value string, ok bool) GetExtendedMedia() (value InputMediaClass, ok bool) }) { i.Title = from.GetTitle() i.Description = from.GetDescription() if val, ok := from.GetPhoto(); ok { i.Photo = val } i.Invoice = from.GetInvoice() i.Payload = from.GetPayload() if val, ok := from.GetProvider(); ok { i.Provider = val } i.ProviderData = from.GetProviderData() if val, ok := from.GetStartParam(); ok { i.StartParam = val } if val, ok := from.GetExtendedMedia(); ok { i.ExtendedMedia = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaInvoice) TypeID() uint32 { return InputMediaInvoiceTypeID } // TypeName returns name of type in TL schema. func (*InputMediaInvoice) TypeName() string { return "inputMediaInvoice" } // TypeInfo returns info about TL type. func (i *InputMediaInvoice) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaInvoice", ID: InputMediaInvoiceTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Title", SchemaName: "title", }, { Name: "Description", SchemaName: "description", }, { Name: "Photo", SchemaName: "photo", Null: !i.Flags.Has(0), }, { Name: "Invoice", SchemaName: "invoice", }, { Name: "Payload", SchemaName: "payload", }, { Name: "Provider", SchemaName: "provider", Null: !i.Flags.Has(3), }, { Name: "ProviderData", SchemaName: "provider_data", }, { Name: "StartParam", SchemaName: "start_param", Null: !i.Flags.Has(1), }, { Name: "ExtendedMedia", SchemaName: "extended_media", Null: !i.Flags.Has(2), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaInvoice) SetFlags() { if !(i.Photo.Zero()) { i.Flags.Set(0) } if !(i.Provider == "") { i.Flags.Set(3) } if !(i.StartParam == "") { i.Flags.Set(1) } if !(i.ExtendedMedia == nil) { i.Flags.Set(2) } } // Encode implements bin.Encoder. func (i *InputMediaInvoice) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaInvoice#405fef0d as nil") } b.PutID(InputMediaInvoiceTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaInvoice) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaInvoice#405fef0d as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaInvoice#405fef0d: field flags: %w", err) } b.PutString(i.Title) b.PutString(i.Description) if i.Flags.Has(0) { if err := i.Photo.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaInvoice#405fef0d: field photo: %w", err) } } if err := i.Invoice.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaInvoice#405fef0d: field invoice: %w", err) } b.PutBytes(i.Payload) if i.Flags.Has(3) { b.PutString(i.Provider) } if err := i.ProviderData.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaInvoice#405fef0d: field provider_data: %w", err) } if i.Flags.Has(1) { b.PutString(i.StartParam) } if i.Flags.Has(2) { if i.ExtendedMedia == nil { return fmt.Errorf("unable to encode inputMediaInvoice#405fef0d: field extended_media is nil") } if err := i.ExtendedMedia.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaInvoice#405fef0d: field extended_media: %w", err) } } return nil } // Decode implements bin.Decoder. func (i *InputMediaInvoice) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaInvoice#405fef0d to nil") } if err := b.ConsumeID(InputMediaInvoiceTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaInvoice) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaInvoice#405fef0d to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field flags: %w", err) } } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field title: %w", err) } i.Title = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field description: %w", err) } i.Description = value } if i.Flags.Has(0) { if err := i.Photo.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field photo: %w", err) } } { if err := i.Invoice.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field invoice: %w", err) } } { value, err := b.Bytes() if err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field payload: %w", err) } i.Payload = value } if i.Flags.Has(3) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field provider: %w", err) } i.Provider = value } { if err := i.ProviderData.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field provider_data: %w", err) } } if i.Flags.Has(1) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field start_param: %w", err) } i.StartParam = value } if i.Flags.Has(2) { value, err := DecodeInputMedia(b) if err != nil { return fmt.Errorf("unable to decode inputMediaInvoice#405fef0d: field extended_media: %w", err) } i.ExtendedMedia = value } return nil } // GetTitle returns value of Title field. func (i *InputMediaInvoice) GetTitle() (value string) { if i == nil { return } return i.Title } // GetDescription returns value of Description field. func (i *InputMediaInvoice) GetDescription() (value string) { if i == nil { return } return i.Description } // SetPhoto sets value of Photo conditional field. func (i *InputMediaInvoice) SetPhoto(value InputWebDocument) { i.Flags.Set(0) i.Photo = value } // GetPhoto returns value of Photo conditional field and // boolean which is true if field was set. func (i *InputMediaInvoice) GetPhoto() (value InputWebDocument, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.Photo, true } // GetInvoice returns value of Invoice field. func (i *InputMediaInvoice) GetInvoice() (value Invoice) { if i == nil { return } return i.Invoice } // GetPayload returns value of Payload field. func (i *InputMediaInvoice) GetPayload() (value []byte) { if i == nil { return } return i.Payload } // SetProvider sets value of Provider conditional field. func (i *InputMediaInvoice) SetProvider(value string) { i.Flags.Set(3) i.Provider = value } // GetProvider returns value of Provider conditional field and // boolean which is true if field was set. func (i *InputMediaInvoice) GetProvider() (value string, ok bool) { if i == nil { return } if !i.Flags.Has(3) { return value, false } return i.Provider, true } // GetProviderData returns value of ProviderData field. func (i *InputMediaInvoice) GetProviderData() (value DataJSON) { if i == nil { return } return i.ProviderData } // SetStartParam sets value of StartParam conditional field. func (i *InputMediaInvoice) SetStartParam(value string) { i.Flags.Set(1) i.StartParam = value } // GetStartParam returns value of StartParam conditional field and // boolean which is true if field was set. func (i *InputMediaInvoice) GetStartParam() (value string, ok bool) { if i == nil { return } if !i.Flags.Has(1) { return value, false } return i.StartParam, true } // SetExtendedMedia sets value of ExtendedMedia conditional field. func (i *InputMediaInvoice) SetExtendedMedia(value InputMediaClass) { i.Flags.Set(2) i.ExtendedMedia = value } // GetExtendedMedia returns value of ExtendedMedia conditional field and // boolean which is true if field was set. func (i *InputMediaInvoice) GetExtendedMedia() (value InputMediaClass, ok bool) { if i == nil { return } if !i.Flags.Has(2) { return value, false } return i.ExtendedMedia, true } // InputMediaGeoLive represents TL type `inputMediaGeoLive#971fa843`. // Live geolocation¹ // // Links: // 1. https://core.telegram.org/api/live-location // // See https://core.telegram.org/constructor/inputMediaGeoLive for reference. type InputMediaGeoLive struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Whether sending of the geolocation was stopped Stopped bool // Current geolocation GeoPoint InputGeoPointClass // For live locations¹, a direction in which the location moves, in degrees; 1-360. // // Links: // 1) https://core.telegram.org/api/live-location // // Use SetHeading and GetHeading helpers. Heading int // Validity period of the current location // // Use SetPeriod and GetPeriod helpers. Period int // For live locations¹, a maximum distance to another chat member for proximity alerts, // in meters (0-100000) // // Links: // 1) https://core.telegram.org/api/live-location // // Use SetProximityNotificationRadius and GetProximityNotificationRadius helpers. ProximityNotificationRadius int } // InputMediaGeoLiveTypeID is TL type id of InputMediaGeoLive. const InputMediaGeoLiveTypeID = 0x971fa843 // construct implements constructor of InputMediaClass. func (i InputMediaGeoLive) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaGeoLive. var ( _ bin.Encoder = &InputMediaGeoLive{} _ bin.Decoder = &InputMediaGeoLive{} _ bin.BareEncoder = &InputMediaGeoLive{} _ bin.BareDecoder = &InputMediaGeoLive{} _ InputMediaClass = &InputMediaGeoLive{} ) func (i *InputMediaGeoLive) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.Stopped == false) { return false } if !(i.GeoPoint == nil) { return false } if !(i.Heading == 0) { return false } if !(i.Period == 0) { return false } if !(i.ProximityNotificationRadius == 0) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaGeoLive) String() string { if i == nil { return "InputMediaGeoLive(nil)" } type Alias InputMediaGeoLive return fmt.Sprintf("InputMediaGeoLive%+v", Alias(*i)) } // FillFrom fills InputMediaGeoLive from given interface. func (i *InputMediaGeoLive) FillFrom(from interface { GetStopped() (value bool) GetGeoPoint() (value InputGeoPointClass) GetHeading() (value int, ok bool) GetPeriod() (value int, ok bool) GetProximityNotificationRadius() (value int, ok bool) }) { i.Stopped = from.GetStopped() i.GeoPoint = from.GetGeoPoint() if val, ok := from.GetHeading(); ok { i.Heading = val } if val, ok := from.GetPeriod(); ok { i.Period = val } if val, ok := from.GetProximityNotificationRadius(); ok { i.ProximityNotificationRadius = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaGeoLive) TypeID() uint32 { return InputMediaGeoLiveTypeID } // TypeName returns name of type in TL schema. func (*InputMediaGeoLive) TypeName() string { return "inputMediaGeoLive" } // TypeInfo returns info about TL type. func (i *InputMediaGeoLive) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaGeoLive", ID: InputMediaGeoLiveTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Stopped", SchemaName: "stopped", Null: !i.Flags.Has(0), }, { Name: "GeoPoint", SchemaName: "geo_point", }, { Name: "Heading", SchemaName: "heading", Null: !i.Flags.Has(2), }, { Name: "Period", SchemaName: "period", Null: !i.Flags.Has(1), }, { Name: "ProximityNotificationRadius", SchemaName: "proximity_notification_radius", Null: !i.Flags.Has(3), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaGeoLive) SetFlags() { if !(i.Stopped == false) { i.Flags.Set(0) } if !(i.Heading == 0) { i.Flags.Set(2) } if !(i.Period == 0) { i.Flags.Set(1) } if !(i.ProximityNotificationRadius == 0) { i.Flags.Set(3) } } // Encode implements bin.Encoder. func (i *InputMediaGeoLive) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaGeoLive#971fa843 as nil") } b.PutID(InputMediaGeoLiveTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaGeoLive) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaGeoLive#971fa843 as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaGeoLive#971fa843: field flags: %w", err) } if i.GeoPoint == nil { return fmt.Errorf("unable to encode inputMediaGeoLive#971fa843: field geo_point is nil") } if err := i.GeoPoint.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaGeoLive#971fa843: field geo_point: %w", err) } if i.Flags.Has(2) { b.PutInt(i.Heading) } if i.Flags.Has(1) { b.PutInt(i.Period) } if i.Flags.Has(3) { b.PutInt(i.ProximityNotificationRadius) } return nil } // Decode implements bin.Decoder. func (i *InputMediaGeoLive) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaGeoLive#971fa843 to nil") } if err := b.ConsumeID(InputMediaGeoLiveTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaGeoLive#971fa843: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaGeoLive) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaGeoLive#971fa843 to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaGeoLive#971fa843: field flags: %w", err) } } i.Stopped = i.Flags.Has(0) { value, err := DecodeInputGeoPoint(b) if err != nil { return fmt.Errorf("unable to decode inputMediaGeoLive#971fa843: field geo_point: %w", err) } i.GeoPoint = value } if i.Flags.Has(2) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaGeoLive#971fa843: field heading: %w", err) } i.Heading = value } if i.Flags.Has(1) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaGeoLive#971fa843: field period: %w", err) } i.Period = value } if i.Flags.Has(3) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaGeoLive#971fa843: field proximity_notification_radius: %w", err) } i.ProximityNotificationRadius = value } return nil } // SetStopped sets value of Stopped conditional field. func (i *InputMediaGeoLive) SetStopped(value bool) { if value { i.Flags.Set(0) i.Stopped = true } else { i.Flags.Unset(0) i.Stopped = false } } // GetStopped returns value of Stopped conditional field. func (i *InputMediaGeoLive) GetStopped() (value bool) { if i == nil { return } return i.Flags.Has(0) } // GetGeoPoint returns value of GeoPoint field. func (i *InputMediaGeoLive) GetGeoPoint() (value InputGeoPointClass) { if i == nil { return } return i.GeoPoint } // SetHeading sets value of Heading conditional field. func (i *InputMediaGeoLive) SetHeading(value int) { i.Flags.Set(2) i.Heading = value } // GetHeading returns value of Heading conditional field and // boolean which is true if field was set. func (i *InputMediaGeoLive) GetHeading() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(2) { return value, false } return i.Heading, true } // SetPeriod sets value of Period conditional field. func (i *InputMediaGeoLive) SetPeriod(value int) { i.Flags.Set(1) i.Period = value } // GetPeriod returns value of Period conditional field and // boolean which is true if field was set. func (i *InputMediaGeoLive) GetPeriod() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(1) { return value, false } return i.Period, true } // SetProximityNotificationRadius sets value of ProximityNotificationRadius conditional field. func (i *InputMediaGeoLive) SetProximityNotificationRadius(value int) { i.Flags.Set(3) i.ProximityNotificationRadius = value } // GetProximityNotificationRadius returns value of ProximityNotificationRadius conditional field and // boolean which is true if field was set. func (i *InputMediaGeoLive) GetProximityNotificationRadius() (value int, ok bool) { if i == nil { return } if !i.Flags.Has(3) { return value, false } return i.ProximityNotificationRadius, true } // InputMediaPoll represents TL type `inputMediaPoll#883a4108`. // A poll // // See https://core.telegram.org/constructor/inputMediaPoll for reference. type InputMediaPoll struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // The poll to send Poll Poll // Correct answer IDs (for quiz polls) // // Use SetCorrectAnswers and GetCorrectAnswers helpers. CorrectAnswers []int // AttachedMedia field of InputMediaPoll. // // Use SetAttachedMedia and GetAttachedMedia helpers. AttachedMedia InputMediaClass // Explanation of quiz solution // // Use SetSolution and GetSolution helpers. Solution string // Message entities for styled text¹ // // Links: // 1) https://core.telegram.org/api/entities // // Use SetSolutionEntities and GetSolutionEntities helpers. SolutionEntities []MessageEntityClass // SolutionMedia field of InputMediaPoll. // // Use SetSolutionMedia and GetSolutionMedia helpers. SolutionMedia InputMediaClass } // InputMediaPollTypeID is TL type id of InputMediaPoll. const InputMediaPollTypeID = 0x883a4108 // construct implements constructor of InputMediaClass. func (i InputMediaPoll) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaPoll. var ( _ bin.Encoder = &InputMediaPoll{} _ bin.Decoder = &InputMediaPoll{} _ bin.BareEncoder = &InputMediaPoll{} _ bin.BareDecoder = &InputMediaPoll{} _ InputMediaClass = &InputMediaPoll{} ) func (i *InputMediaPoll) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.Poll.Zero()) { return false } if !(i.CorrectAnswers == nil) { return false } if !(i.AttachedMedia == nil) { return false } if !(i.Solution == "") { return false } if !(i.SolutionEntities == nil) { return false } if !(i.SolutionMedia == nil) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaPoll) String() string { if i == nil { return "InputMediaPoll(nil)" } type Alias InputMediaPoll return fmt.Sprintf("InputMediaPoll%+v", Alias(*i)) } // FillFrom fills InputMediaPoll from given interface. func (i *InputMediaPoll) FillFrom(from interface { GetPoll() (value Poll) GetCorrectAnswers() (value []int, ok bool) GetAttachedMedia() (value InputMediaClass, ok bool) GetSolution() (value string, ok bool) GetSolutionEntities() (value []MessageEntityClass, ok bool) GetSolutionMedia() (value InputMediaClass, ok bool) }) { i.Poll = from.GetPoll() if val, ok := from.GetCorrectAnswers(); ok { i.CorrectAnswers = val } if val, ok := from.GetAttachedMedia(); ok { i.AttachedMedia = val } if val, ok := from.GetSolution(); ok { i.Solution = val } if val, ok := from.GetSolutionEntities(); ok { i.SolutionEntities = val } if val, ok := from.GetSolutionMedia(); ok { i.SolutionMedia = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaPoll) TypeID() uint32 { return InputMediaPollTypeID } // TypeName returns name of type in TL schema. func (*InputMediaPoll) TypeName() string { return "inputMediaPoll" } // TypeInfo returns info about TL type. func (i *InputMediaPoll) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaPoll", ID: InputMediaPollTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Poll", SchemaName: "poll", }, { Name: "CorrectAnswers", SchemaName: "correct_answers", Null: !i.Flags.Has(0), }, { Name: "AttachedMedia", SchemaName: "attached_media", Null: !i.Flags.Has(3), }, { Name: "Solution", SchemaName: "solution", Null: !i.Flags.Has(1), }, { Name: "SolutionEntities", SchemaName: "solution_entities", Null: !i.Flags.Has(1), }, { Name: "SolutionMedia", SchemaName: "solution_media", Null: !i.Flags.Has(2), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaPoll) SetFlags() { if !(i.CorrectAnswers == nil) { i.Flags.Set(0) } if !(i.AttachedMedia == nil) { i.Flags.Set(3) } if !(i.Solution == "") { i.Flags.Set(1) } if !(i.SolutionEntities == nil) { i.Flags.Set(1) } if !(i.SolutionMedia == nil) { i.Flags.Set(2) } } // Encode implements bin.Encoder. func (i *InputMediaPoll) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaPoll#883a4108 as nil") } b.PutID(InputMediaPollTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaPoll) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaPoll#883a4108 as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPoll#883a4108: field flags: %w", err) } if err := i.Poll.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPoll#883a4108: field poll: %w", err) } if i.Flags.Has(0) { b.PutVectorHeader(len(i.CorrectAnswers)) for _, v := range i.CorrectAnswers { b.PutInt(v) } } if i.Flags.Has(3) { if i.AttachedMedia == nil { return fmt.Errorf("unable to encode inputMediaPoll#883a4108: field attached_media is nil") } if err := i.AttachedMedia.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPoll#883a4108: field attached_media: %w", err) } } if i.Flags.Has(1) { b.PutString(i.Solution) } if i.Flags.Has(1) { b.PutVectorHeader(len(i.SolutionEntities)) for idx, v := range i.SolutionEntities { if v == nil { return fmt.Errorf("unable to encode inputMediaPoll#883a4108: field solution_entities element with index %d is nil", idx) } if err := v.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPoll#883a4108: field solution_entities element with index %d: %w", idx, err) } } } if i.Flags.Has(2) { if i.SolutionMedia == nil { return fmt.Errorf("unable to encode inputMediaPoll#883a4108: field solution_media is nil") } if err := i.SolutionMedia.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPoll#883a4108: field solution_media: %w", err) } } return nil } // Decode implements bin.Decoder. func (i *InputMediaPoll) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaPoll#883a4108 to nil") } if err := b.ConsumeID(InputMediaPollTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaPoll) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaPoll#883a4108 to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field flags: %w", err) } } { if err := i.Poll.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field poll: %w", err) } } if i.Flags.Has(0) { headerLen, err := b.VectorHeader() if err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field correct_answers: %w", err) } if headerLen > 0 { i.CorrectAnswers = make([]int, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field correct_answers: %w", err) } i.CorrectAnswers = append(i.CorrectAnswers, value) } } if i.Flags.Has(3) { value, err := DecodeInputMedia(b) if err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field attached_media: %w", err) } i.AttachedMedia = value } if i.Flags.Has(1) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field solution: %w", err) } i.Solution = value } if i.Flags.Has(1) { headerLen, err := b.VectorHeader() if err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field solution_entities: %w", err) } if headerLen > 0 { i.SolutionEntities = make([]MessageEntityClass, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { value, err := DecodeMessageEntity(b) if err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field solution_entities: %w", err) } i.SolutionEntities = append(i.SolutionEntities, value) } } if i.Flags.Has(2) { value, err := DecodeInputMedia(b) if err != nil { return fmt.Errorf("unable to decode inputMediaPoll#883a4108: field solution_media: %w", err) } i.SolutionMedia = value } return nil } // GetPoll returns value of Poll field. func (i *InputMediaPoll) GetPoll() (value Poll) { if i == nil { return } return i.Poll } // SetCorrectAnswers sets value of CorrectAnswers conditional field. func (i *InputMediaPoll) SetCorrectAnswers(value []int) { i.Flags.Set(0) i.CorrectAnswers = value } // GetCorrectAnswers returns value of CorrectAnswers conditional field and // boolean which is true if field was set. func (i *InputMediaPoll) GetCorrectAnswers() (value []int, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.CorrectAnswers, true } // SetAttachedMedia sets value of AttachedMedia conditional field. func (i *InputMediaPoll) SetAttachedMedia(value InputMediaClass) { i.Flags.Set(3) i.AttachedMedia = value } // GetAttachedMedia returns value of AttachedMedia conditional field and // boolean which is true if field was set. func (i *InputMediaPoll) GetAttachedMedia() (value InputMediaClass, ok bool) { if i == nil { return } if !i.Flags.Has(3) { return value, false } return i.AttachedMedia, true } // SetSolution sets value of Solution conditional field. func (i *InputMediaPoll) SetSolution(value string) { i.Flags.Set(1) i.Solution = value } // GetSolution returns value of Solution conditional field and // boolean which is true if field was set. func (i *InputMediaPoll) GetSolution() (value string, ok bool) { if i == nil { return } if !i.Flags.Has(1) { return value, false } return i.Solution, true } // SetSolutionEntities sets value of SolutionEntities conditional field. func (i *InputMediaPoll) SetSolutionEntities(value []MessageEntityClass) { i.Flags.Set(1) i.SolutionEntities = value } // GetSolutionEntities returns value of SolutionEntities conditional field and // boolean which is true if field was set. func (i *InputMediaPoll) GetSolutionEntities() (value []MessageEntityClass, ok bool) { if i == nil { return } if !i.Flags.Has(1) { return value, false } return i.SolutionEntities, true } // SetSolutionMedia sets value of SolutionMedia conditional field. func (i *InputMediaPoll) SetSolutionMedia(value InputMediaClass) { i.Flags.Set(2) i.SolutionMedia = value } // GetSolutionMedia returns value of SolutionMedia conditional field and // boolean which is true if field was set. func (i *InputMediaPoll) GetSolutionMedia() (value InputMediaClass, ok bool) { if i == nil { return } if !i.Flags.Has(2) { return value, false } return i.SolutionMedia, true } // MapSolutionEntities returns field SolutionEntities wrapped in MessageEntityClassArray helper. func (i *InputMediaPoll) MapSolutionEntities() (value MessageEntityClassArray, ok bool) { if !i.Flags.Has(1) { return value, false } return MessageEntityClassArray(i.SolutionEntities), true } // InputMediaDice represents TL type `inputMediaDice#e66fbf7b`. // Send a dice-based animated sticker¹ // // Links: // 1. https://core.telegram.org/api/dice // // See https://core.telegram.org/constructor/inputMediaDice for reference. type InputMediaDice struct { // The emoji, for now , and are supported Emoticon string } // InputMediaDiceTypeID is TL type id of InputMediaDice. const InputMediaDiceTypeID = 0xe66fbf7b // construct implements constructor of InputMediaClass. func (i InputMediaDice) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaDice. var ( _ bin.Encoder = &InputMediaDice{} _ bin.Decoder = &InputMediaDice{} _ bin.BareEncoder = &InputMediaDice{} _ bin.BareDecoder = &InputMediaDice{} _ InputMediaClass = &InputMediaDice{} ) func (i *InputMediaDice) Zero() bool { if i == nil { return true } if !(i.Emoticon == "") { return false } return true } // String implements fmt.Stringer. func (i *InputMediaDice) String() string { if i == nil { return "InputMediaDice(nil)" } type Alias InputMediaDice return fmt.Sprintf("InputMediaDice%+v", Alias(*i)) } // FillFrom fills InputMediaDice from given interface. func (i *InputMediaDice) FillFrom(from interface { GetEmoticon() (value string) }) { i.Emoticon = from.GetEmoticon() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaDice) TypeID() uint32 { return InputMediaDiceTypeID } // TypeName returns name of type in TL schema. func (*InputMediaDice) TypeName() string { return "inputMediaDice" } // TypeInfo returns info about TL type. func (i *InputMediaDice) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaDice", ID: InputMediaDiceTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Emoticon", SchemaName: "emoticon", }, } return typ } // Encode implements bin.Encoder. func (i *InputMediaDice) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaDice#e66fbf7b as nil") } b.PutID(InputMediaDiceTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaDice) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaDice#e66fbf7b as nil") } b.PutString(i.Emoticon) return nil } // Decode implements bin.Decoder. func (i *InputMediaDice) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaDice#e66fbf7b to nil") } if err := b.ConsumeID(InputMediaDiceTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaDice#e66fbf7b: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaDice) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaDice#e66fbf7b to nil") } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaDice#e66fbf7b: field emoticon: %w", err) } i.Emoticon = value } return nil } // GetEmoticon returns value of Emoticon field. func (i *InputMediaDice) GetEmoticon() (value string) { if i == nil { return } return i.Emoticon } // InputMediaStory represents TL type `inputMediaStory#89fdd778`. // Forwarded story // // See https://core.telegram.org/constructor/inputMediaStory for reference. type InputMediaStory struct { // Peer where the story was posted Peer InputPeerClass // Story ID ID int } // InputMediaStoryTypeID is TL type id of InputMediaStory. const InputMediaStoryTypeID = 0x89fdd778 // construct implements constructor of InputMediaClass. func (i InputMediaStory) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaStory. var ( _ bin.Encoder = &InputMediaStory{} _ bin.Decoder = &InputMediaStory{} _ bin.BareEncoder = &InputMediaStory{} _ bin.BareDecoder = &InputMediaStory{} _ InputMediaClass = &InputMediaStory{} ) func (i *InputMediaStory) Zero() bool { if i == nil { return true } if !(i.Peer == nil) { return false } if !(i.ID == 0) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaStory) String() string { if i == nil { return "InputMediaStory(nil)" } type Alias InputMediaStory return fmt.Sprintf("InputMediaStory%+v", Alias(*i)) } // FillFrom fills InputMediaStory from given interface. func (i *InputMediaStory) FillFrom(from interface { GetPeer() (value InputPeerClass) GetID() (value int) }) { i.Peer = from.GetPeer() i.ID = from.GetID() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaStory) TypeID() uint32 { return InputMediaStoryTypeID } // TypeName returns name of type in TL schema. func (*InputMediaStory) TypeName() string { return "inputMediaStory" } // TypeInfo returns info about TL type. func (i *InputMediaStory) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaStory", ID: InputMediaStoryTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Peer", SchemaName: "peer", }, { Name: "ID", SchemaName: "id", }, } return typ } // Encode implements bin.Encoder. func (i *InputMediaStory) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaStory#89fdd778 as nil") } b.PutID(InputMediaStoryTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaStory) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaStory#89fdd778 as nil") } if i.Peer == nil { return fmt.Errorf("unable to encode inputMediaStory#89fdd778: field peer is nil") } if err := i.Peer.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaStory#89fdd778: field peer: %w", err) } b.PutInt(i.ID) return nil } // Decode implements bin.Decoder. func (i *InputMediaStory) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaStory#89fdd778 to nil") } if err := b.ConsumeID(InputMediaStoryTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaStory#89fdd778: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaStory) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaStory#89fdd778 to nil") } { value, err := DecodeInputPeer(b) if err != nil { return fmt.Errorf("unable to decode inputMediaStory#89fdd778: field peer: %w", err) } i.Peer = value } { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode inputMediaStory#89fdd778: field id: %w", err) } i.ID = value } return nil } // GetPeer returns value of Peer field. func (i *InputMediaStory) GetPeer() (value InputPeerClass) { if i == nil { return } return i.Peer } // GetID returns value of ID field. func (i *InputMediaStory) GetID() (value int) { if i == nil { return } return i.ID } // InputMediaWebPage represents TL type `inputMediaWebPage#c21b8849`. // Specifies options that will be used to generate the link preview for the caption, or // even a standalone link preview without an attached message. // // See https://core.telegram.org/constructor/inputMediaWebPage for reference. type InputMediaWebPage struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // If set, specifies that a large media preview should be used. ForceLargeMedia bool // If set, specifies that a small media preview should be used. ForceSmallMedia bool // If not set, a WEBPAGE_NOT_FOUND RPC error will be emitted if a webpage preview cannot // be generated for the specified url; otherwise, no error will be emitted (unless the // provided message is also empty, in which case a MESSAGE_EMPTY will be emitted, // instead). Optional bool // The URL to use for the link preview. URL string } // InputMediaWebPageTypeID is TL type id of InputMediaWebPage. const InputMediaWebPageTypeID = 0xc21b8849 // construct implements constructor of InputMediaClass. func (i InputMediaWebPage) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaWebPage. var ( _ bin.Encoder = &InputMediaWebPage{} _ bin.Decoder = &InputMediaWebPage{} _ bin.BareEncoder = &InputMediaWebPage{} _ bin.BareDecoder = &InputMediaWebPage{} _ InputMediaClass = &InputMediaWebPage{} ) func (i *InputMediaWebPage) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.ForceLargeMedia == false) { return false } if !(i.ForceSmallMedia == false) { return false } if !(i.Optional == false) { return false } if !(i.URL == "") { return false } return true } // String implements fmt.Stringer. func (i *InputMediaWebPage) String() string { if i == nil { return "InputMediaWebPage(nil)" } type Alias InputMediaWebPage return fmt.Sprintf("InputMediaWebPage%+v", Alias(*i)) } // FillFrom fills InputMediaWebPage from given interface. func (i *InputMediaWebPage) FillFrom(from interface { GetForceLargeMedia() (value bool) GetForceSmallMedia() (value bool) GetOptional() (value bool) GetURL() (value string) }) { i.ForceLargeMedia = from.GetForceLargeMedia() i.ForceSmallMedia = from.GetForceSmallMedia() i.Optional = from.GetOptional() i.URL = from.GetURL() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaWebPage) TypeID() uint32 { return InputMediaWebPageTypeID } // TypeName returns name of type in TL schema. func (*InputMediaWebPage) TypeName() string { return "inputMediaWebPage" } // TypeInfo returns info about TL type. func (i *InputMediaWebPage) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaWebPage", ID: InputMediaWebPageTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "ForceLargeMedia", SchemaName: "force_large_media", Null: !i.Flags.Has(0), }, { Name: "ForceSmallMedia", SchemaName: "force_small_media", Null: !i.Flags.Has(1), }, { Name: "Optional", SchemaName: "optional", Null: !i.Flags.Has(2), }, { Name: "URL", SchemaName: "url", }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaWebPage) SetFlags() { if !(i.ForceLargeMedia == false) { i.Flags.Set(0) } if !(i.ForceSmallMedia == false) { i.Flags.Set(1) } if !(i.Optional == false) { i.Flags.Set(2) } } // Encode implements bin.Encoder. func (i *InputMediaWebPage) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaWebPage#c21b8849 as nil") } b.PutID(InputMediaWebPageTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaWebPage) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaWebPage#c21b8849 as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaWebPage#c21b8849: field flags: %w", err) } b.PutString(i.URL) return nil } // Decode implements bin.Decoder. func (i *InputMediaWebPage) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaWebPage#c21b8849 to nil") } if err := b.ConsumeID(InputMediaWebPageTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaWebPage#c21b8849: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaWebPage) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaWebPage#c21b8849 to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaWebPage#c21b8849: field flags: %w", err) } } i.ForceLargeMedia = i.Flags.Has(0) i.ForceSmallMedia = i.Flags.Has(1) i.Optional = i.Flags.Has(2) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaWebPage#c21b8849: field url: %w", err) } i.URL = value } return nil } // SetForceLargeMedia sets value of ForceLargeMedia conditional field. func (i *InputMediaWebPage) SetForceLargeMedia(value bool) { if value { i.Flags.Set(0) i.ForceLargeMedia = true } else { i.Flags.Unset(0) i.ForceLargeMedia = false } } // GetForceLargeMedia returns value of ForceLargeMedia conditional field. func (i *InputMediaWebPage) GetForceLargeMedia() (value bool) { if i == nil { return } return i.Flags.Has(0) } // SetForceSmallMedia sets value of ForceSmallMedia conditional field. func (i *InputMediaWebPage) SetForceSmallMedia(value bool) { if value { i.Flags.Set(1) i.ForceSmallMedia = true } else { i.Flags.Unset(1) i.ForceSmallMedia = false } } // GetForceSmallMedia returns value of ForceSmallMedia conditional field. func (i *InputMediaWebPage) GetForceSmallMedia() (value bool) { if i == nil { return } return i.Flags.Has(1) } // SetOptional sets value of Optional conditional field. func (i *InputMediaWebPage) SetOptional(value bool) { if value { i.Flags.Set(2) i.Optional = true } else { i.Flags.Unset(2) i.Optional = false } } // GetOptional returns value of Optional conditional field. func (i *InputMediaWebPage) GetOptional() (value bool) { if i == nil { return } return i.Flags.Has(2) } // GetURL returns value of URL field. func (i *InputMediaWebPage) GetURL() (value string) { if i == nil { return } return i.URL } // InputMediaPaidMedia represents TL type `inputMediaPaidMedia#c4103386`. // Paid media, see here »¹ for more info. // // Links: // 1. https://core.telegram.org/api/paid-media // // See https://core.telegram.org/constructor/inputMediaPaidMedia for reference. type InputMediaPaidMedia struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // The price of the media in Telegram Stars¹. // // Links: // 1) https://core.telegram.org/api/stars StarsAmount int64 // Photos or videos. ExtendedMedia []InputMediaClass // Bots only, specifies a custom payload that will then be passed in // updateBotPurchasedPaidMedia¹ when a payment is made (this field will not be visible // to the user) // // Links: // 1) https://core.telegram.org/constructor/updateBotPurchasedPaidMedia // // Use SetPayload and GetPayload helpers. Payload string } // InputMediaPaidMediaTypeID is TL type id of InputMediaPaidMedia. const InputMediaPaidMediaTypeID = 0xc4103386 // construct implements constructor of InputMediaClass. func (i InputMediaPaidMedia) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaPaidMedia. var ( _ bin.Encoder = &InputMediaPaidMedia{} _ bin.Decoder = &InputMediaPaidMedia{} _ bin.BareEncoder = &InputMediaPaidMedia{} _ bin.BareDecoder = &InputMediaPaidMedia{} _ InputMediaClass = &InputMediaPaidMedia{} ) func (i *InputMediaPaidMedia) Zero() bool { if i == nil { return true } if !(i.Flags.Zero()) { return false } if !(i.StarsAmount == 0) { return false } if !(i.ExtendedMedia == nil) { return false } if !(i.Payload == "") { return false } return true } // String implements fmt.Stringer. func (i *InputMediaPaidMedia) String() string { if i == nil { return "InputMediaPaidMedia(nil)" } type Alias InputMediaPaidMedia return fmt.Sprintf("InputMediaPaidMedia%+v", Alias(*i)) } // FillFrom fills InputMediaPaidMedia from given interface. func (i *InputMediaPaidMedia) FillFrom(from interface { GetStarsAmount() (value int64) GetExtendedMedia() (value []InputMediaClass) GetPayload() (value string, ok bool) }) { i.StarsAmount = from.GetStarsAmount() i.ExtendedMedia = from.GetExtendedMedia() if val, ok := from.GetPayload(); ok { i.Payload = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaPaidMedia) TypeID() uint32 { return InputMediaPaidMediaTypeID } // TypeName returns name of type in TL schema. func (*InputMediaPaidMedia) TypeName() string { return "inputMediaPaidMedia" } // TypeInfo returns info about TL type. func (i *InputMediaPaidMedia) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaPaidMedia", ID: InputMediaPaidMediaTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "StarsAmount", SchemaName: "stars_amount", }, { Name: "ExtendedMedia", SchemaName: "extended_media", }, { Name: "Payload", SchemaName: "payload", Null: !i.Flags.Has(0), }, } return typ } // SetFlags sets flags for non-zero fields. func (i *InputMediaPaidMedia) SetFlags() { if !(i.Payload == "") { i.Flags.Set(0) } } // Encode implements bin.Encoder. func (i *InputMediaPaidMedia) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaPaidMedia#c4103386 as nil") } b.PutID(InputMediaPaidMediaTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaPaidMedia) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaPaidMedia#c4103386 as nil") } i.SetFlags() if err := i.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPaidMedia#c4103386: field flags: %w", err) } b.PutLong(i.StarsAmount) b.PutVectorHeader(len(i.ExtendedMedia)) for idx, v := range i.ExtendedMedia { if v == nil { return fmt.Errorf("unable to encode inputMediaPaidMedia#c4103386: field extended_media element with index %d is nil", idx) } if err := v.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaPaidMedia#c4103386: field extended_media element with index %d: %w", idx, err) } } if i.Flags.Has(0) { b.PutString(i.Payload) } return nil } // Decode implements bin.Decoder. func (i *InputMediaPaidMedia) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaPaidMedia#c4103386 to nil") } if err := b.ConsumeID(InputMediaPaidMediaTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaPaidMedia#c4103386: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaPaidMedia) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaPaidMedia#c4103386 to nil") } { if err := i.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaPaidMedia#c4103386: field flags: %w", err) } } { value, err := b.Long() if err != nil { return fmt.Errorf("unable to decode inputMediaPaidMedia#c4103386: field stars_amount: %w", err) } i.StarsAmount = value } { headerLen, err := b.VectorHeader() if err != nil { return fmt.Errorf("unable to decode inputMediaPaidMedia#c4103386: field extended_media: %w", err) } if headerLen > 0 { i.ExtendedMedia = make([]InputMediaClass, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { value, err := DecodeInputMedia(b) if err != nil { return fmt.Errorf("unable to decode inputMediaPaidMedia#c4103386: field extended_media: %w", err) } i.ExtendedMedia = append(i.ExtendedMedia, value) } } if i.Flags.Has(0) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaPaidMedia#c4103386: field payload: %w", err) } i.Payload = value } return nil } // GetStarsAmount returns value of StarsAmount field. func (i *InputMediaPaidMedia) GetStarsAmount() (value int64) { if i == nil { return } return i.StarsAmount } // GetExtendedMedia returns value of ExtendedMedia field. func (i *InputMediaPaidMedia) GetExtendedMedia() (value []InputMediaClass) { if i == nil { return } return i.ExtendedMedia } // SetPayload sets value of Payload conditional field. func (i *InputMediaPaidMedia) SetPayload(value string) { i.Flags.Set(0) i.Payload = value } // GetPayload returns value of Payload conditional field and // boolean which is true if field was set. func (i *InputMediaPaidMedia) GetPayload() (value string, ok bool) { if i == nil { return } if !i.Flags.Has(0) { return value, false } return i.Payload, true } // MapExtendedMedia returns field ExtendedMedia wrapped in InputMediaClassArray helper. func (i *InputMediaPaidMedia) MapExtendedMedia() (value InputMediaClassArray) { return InputMediaClassArray(i.ExtendedMedia) } // InputMediaTodo represents TL type `inputMediaTodo#9fc55fde`. // Creates a todo list »¹. // // Links: // 1. https://core.telegram.org/api/todo // // See https://core.telegram.org/constructor/inputMediaTodo for reference. type InputMediaTodo struct { // The todo list. Todo TodoList } // InputMediaTodoTypeID is TL type id of InputMediaTodo. const InputMediaTodoTypeID = 0x9fc55fde // construct implements constructor of InputMediaClass. func (i InputMediaTodo) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaTodo. var ( _ bin.Encoder = &InputMediaTodo{} _ bin.Decoder = &InputMediaTodo{} _ bin.BareEncoder = &InputMediaTodo{} _ bin.BareDecoder = &InputMediaTodo{} _ InputMediaClass = &InputMediaTodo{} ) func (i *InputMediaTodo) Zero() bool { if i == nil { return true } if !(i.Todo.Zero()) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaTodo) String() string { if i == nil { return "InputMediaTodo(nil)" } type Alias InputMediaTodo return fmt.Sprintf("InputMediaTodo%+v", Alias(*i)) } // FillFrom fills InputMediaTodo from given interface. func (i *InputMediaTodo) FillFrom(from interface { GetTodo() (value TodoList) }) { i.Todo = from.GetTodo() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaTodo) TypeID() uint32 { return InputMediaTodoTypeID } // TypeName returns name of type in TL schema. func (*InputMediaTodo) TypeName() string { return "inputMediaTodo" } // TypeInfo returns info about TL type. func (i *InputMediaTodo) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaTodo", ID: InputMediaTodoTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Todo", SchemaName: "todo", }, } return typ } // Encode implements bin.Encoder. func (i *InputMediaTodo) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaTodo#9fc55fde as nil") } b.PutID(InputMediaTodoTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaTodo) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaTodo#9fc55fde as nil") } if err := i.Todo.Encode(b); err != nil { return fmt.Errorf("unable to encode inputMediaTodo#9fc55fde: field todo: %w", err) } return nil } // Decode implements bin.Decoder. func (i *InputMediaTodo) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaTodo#9fc55fde to nil") } if err := b.ConsumeID(InputMediaTodoTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaTodo#9fc55fde: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaTodo) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaTodo#9fc55fde to nil") } { if err := i.Todo.Decode(b); err != nil { return fmt.Errorf("unable to decode inputMediaTodo#9fc55fde: field todo: %w", err) } } return nil } // GetTodo returns value of Todo field. func (i *InputMediaTodo) GetTodo() (value TodoList) { if i == nil { return } return i.Todo } // InputMediaStakeDice represents TL type `inputMediaStakeDice#f3a9244a`. // // See https://core.telegram.org/constructor/inputMediaStakeDice for reference. type InputMediaStakeDice struct { // GameHash field of InputMediaStakeDice. GameHash string // TonAmount field of InputMediaStakeDice. TonAmount int64 // ClientSeed field of InputMediaStakeDice. ClientSeed []byte } // InputMediaStakeDiceTypeID is TL type id of InputMediaStakeDice. const InputMediaStakeDiceTypeID = 0xf3a9244a // construct implements constructor of InputMediaClass. func (i InputMediaStakeDice) construct() InputMediaClass { return &i } // Ensuring interfaces in compile-time for InputMediaStakeDice. var ( _ bin.Encoder = &InputMediaStakeDice{} _ bin.Decoder = &InputMediaStakeDice{} _ bin.BareEncoder = &InputMediaStakeDice{} _ bin.BareDecoder = &InputMediaStakeDice{} _ InputMediaClass = &InputMediaStakeDice{} ) func (i *InputMediaStakeDice) Zero() bool { if i == nil { return true } if !(i.GameHash == "") { return false } if !(i.TonAmount == 0) { return false } if !(i.ClientSeed == nil) { return false } return true } // String implements fmt.Stringer. func (i *InputMediaStakeDice) String() string { if i == nil { return "InputMediaStakeDice(nil)" } type Alias InputMediaStakeDice return fmt.Sprintf("InputMediaStakeDice%+v", Alias(*i)) } // FillFrom fills InputMediaStakeDice from given interface. func (i *InputMediaStakeDice) FillFrom(from interface { GetGameHash() (value string) GetTonAmount() (value int64) GetClientSeed() (value []byte) }) { i.GameHash = from.GetGameHash() i.TonAmount = from.GetTonAmount() i.ClientSeed = from.GetClientSeed() } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*InputMediaStakeDice) TypeID() uint32 { return InputMediaStakeDiceTypeID } // TypeName returns name of type in TL schema. func (*InputMediaStakeDice) TypeName() string { return "inputMediaStakeDice" } // TypeInfo returns info about TL type. func (i *InputMediaStakeDice) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "inputMediaStakeDice", ID: InputMediaStakeDiceTypeID, } if i == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "GameHash", SchemaName: "game_hash", }, { Name: "TonAmount", SchemaName: "ton_amount", }, { Name: "ClientSeed", SchemaName: "client_seed", }, } return typ } // Encode implements bin.Encoder. func (i *InputMediaStakeDice) Encode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaStakeDice#f3a9244a as nil") } b.PutID(InputMediaStakeDiceTypeID) return i.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (i *InputMediaStakeDice) EncodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't encode inputMediaStakeDice#f3a9244a as nil") } b.PutString(i.GameHash) b.PutLong(i.TonAmount) b.PutBytes(i.ClientSeed) return nil } // Decode implements bin.Decoder. func (i *InputMediaStakeDice) Decode(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaStakeDice#f3a9244a to nil") } if err := b.ConsumeID(InputMediaStakeDiceTypeID); err != nil { return fmt.Errorf("unable to decode inputMediaStakeDice#f3a9244a: %w", err) } return i.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (i *InputMediaStakeDice) DecodeBare(b *bin.Buffer) error { if i == nil { return fmt.Errorf("can't decode inputMediaStakeDice#f3a9244a to nil") } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode inputMediaStakeDice#f3a9244a: field game_hash: %w", err) } i.GameHash = value } { value, err := b.Long() if err != nil { return fmt.Errorf("unable to decode inputMediaStakeDice#f3a9244a: field ton_amount: %w", err) } i.TonAmount = value } { value, err := b.Bytes() if err != nil { return fmt.Errorf("unable to decode inputMediaStakeDice#f3a9244a: field client_seed: %w", err) } i.ClientSeed = value } return nil } // GetGameHash returns value of GameHash field. func (i *InputMediaStakeDice) GetGameHash() (value string) { if i == nil { return } return i.GameHash } // GetTonAmount returns value of TonAmount field. func (i *InputMediaStakeDice) GetTonAmount() (value int64) { if i == nil { return } return i.TonAmount } // GetClientSeed returns value of ClientSeed field. func (i *InputMediaStakeDice) GetClientSeed() (value []byte) { if i == nil { return } return i.ClientSeed } // InputMediaClassName is schema name of InputMediaClass. const InputMediaClassName = "InputMedia" // InputMediaClass represents InputMedia generic type. // // See https://core.telegram.org/type/InputMedia for reference. // // Example: // // g, err := tg.DecodeInputMedia(buf) // if err != nil { // panic(err) // } // switch v := g.(type) { // case *tg.InputMediaEmpty: // inputMediaEmpty#9664f57f // case *tg.InputMediaUploadedPhoto: // inputMediaUploadedPhoto#7d8375da // case *tg.InputMediaPhoto: // inputMediaPhoto#e3af4434 // case *tg.InputMediaGeoPoint: // inputMediaGeoPoint#f9c44144 // case *tg.InputMediaContact: // inputMediaContact#f8ab7dfb // case *tg.InputMediaUploadedDocument: // inputMediaUploadedDocument#37c9330 // case *tg.InputMediaDocument: // inputMediaDocument#a8763ab5 // case *tg.InputMediaVenue: // inputMediaVenue#c13d1c11 // case *tg.InputMediaPhotoExternal: // inputMediaPhotoExternal#e5bbfe1a // case *tg.InputMediaDocumentExternal: // inputMediaDocumentExternal#779600f9 // case *tg.InputMediaGame: // inputMediaGame#d33f43f3 // case *tg.InputMediaInvoice: // inputMediaInvoice#405fef0d // case *tg.InputMediaGeoLive: // inputMediaGeoLive#971fa843 // case *tg.InputMediaPoll: // inputMediaPoll#883a4108 // case *tg.InputMediaDice: // inputMediaDice#e66fbf7b // case *tg.InputMediaStory: // inputMediaStory#89fdd778 // case *tg.InputMediaWebPage: // inputMediaWebPage#c21b8849 // case *tg.InputMediaPaidMedia: // inputMediaPaidMedia#c4103386 // case *tg.InputMediaTodo: // inputMediaTodo#9fc55fde // case *tg.InputMediaStakeDice: // inputMediaStakeDice#f3a9244a // default: panic(v) // } type InputMediaClass interface { bin.Encoder bin.Decoder bin.BareEncoder bin.BareDecoder construct() InputMediaClass // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. TypeID() uint32 // TypeName returns name of type in TL schema. TypeName() string // String implements fmt.Stringer. String() string // Zero returns true if current object has a zero value. Zero() bool } // DecodeInputMedia implements binary de-serialization for InputMediaClass. func DecodeInputMedia(buf *bin.Buffer) (InputMediaClass, error) { id, err := buf.PeekID() if err != nil { return nil, err } switch id { case InputMediaEmptyTypeID: // Decoding inputMediaEmpty#9664f57f. v := InputMediaEmpty{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaUploadedPhotoTypeID: // Decoding inputMediaUploadedPhoto#7d8375da. v := InputMediaUploadedPhoto{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaPhotoTypeID: // Decoding inputMediaPhoto#e3af4434. v := InputMediaPhoto{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaGeoPointTypeID: // Decoding inputMediaGeoPoint#f9c44144. v := InputMediaGeoPoint{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaContactTypeID: // Decoding inputMediaContact#f8ab7dfb. v := InputMediaContact{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaUploadedDocumentTypeID: // Decoding inputMediaUploadedDocument#37c9330. v := InputMediaUploadedDocument{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaDocumentTypeID: // Decoding inputMediaDocument#a8763ab5. v := InputMediaDocument{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaVenueTypeID: // Decoding inputMediaVenue#c13d1c11. v := InputMediaVenue{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaPhotoExternalTypeID: // Decoding inputMediaPhotoExternal#e5bbfe1a. v := InputMediaPhotoExternal{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaDocumentExternalTypeID: // Decoding inputMediaDocumentExternal#779600f9. v := InputMediaDocumentExternal{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaGameTypeID: // Decoding inputMediaGame#d33f43f3. v := InputMediaGame{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaInvoiceTypeID: // Decoding inputMediaInvoice#405fef0d. v := InputMediaInvoice{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaGeoLiveTypeID: // Decoding inputMediaGeoLive#971fa843. v := InputMediaGeoLive{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaPollTypeID: // Decoding inputMediaPoll#883a4108. v := InputMediaPoll{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaDiceTypeID: // Decoding inputMediaDice#e66fbf7b. v := InputMediaDice{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaStoryTypeID: // Decoding inputMediaStory#89fdd778. v := InputMediaStory{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaWebPageTypeID: // Decoding inputMediaWebPage#c21b8849. v := InputMediaWebPage{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaPaidMediaTypeID: // Decoding inputMediaPaidMedia#c4103386. v := InputMediaPaidMedia{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaTodoTypeID: // Decoding inputMediaTodo#9fc55fde. v := InputMediaTodo{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil case InputMediaStakeDiceTypeID: // Decoding inputMediaStakeDice#f3a9244a. v := InputMediaStakeDice{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode InputMediaClass: %w", err) } return &v, nil default: return nil, fmt.Errorf("unable to decode InputMediaClass: %w", bin.NewUnexpectedID(id)) } } // InputMedia boxes the InputMediaClass providing a helper. type InputMediaBox struct { InputMedia InputMediaClass } // Decode implements bin.Decoder for InputMediaBox. func (b *InputMediaBox) Decode(buf *bin.Buffer) error { if b == nil { return fmt.Errorf("unable to decode InputMediaBox to nil") } v, err := DecodeInputMedia(buf) if err != nil { return fmt.Errorf("unable to decode boxed value: %w", err) } b.InputMedia = v return nil } // Encode implements bin.Encode for InputMediaBox. func (b *InputMediaBox) Encode(buf *bin.Buffer) error { if b == nil || b.InputMedia == nil { return fmt.Errorf("unable to encode InputMediaClass as nil") } return b.InputMedia.Encode(buf) }