Files
mautrix-telegram/pkg/gotd/tg/tl_bot_inline_message_gen.go
T
2025-06-27 20:03:37 -07:00

2770 lines
72 KiB
Go

// 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{}
)
// BotInlineMessageMediaAuto represents TL type `botInlineMessageMediaAuto#764cf810`.
// Send whatever media is attached to the botInlineMediaResult¹
//
// Links:
// 1. https://core.telegram.org/constructor/botInlineMediaResult
//
// See https://core.telegram.org/constructor/botInlineMessageMediaAuto for reference.
type BotInlineMessageMediaAuto struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// If set, any eventual webpage preview will be shown on top of the message instead of at
// the bottom.
InvertMedia bool
// Caption
Message string
// Message entities for styled text¹
//
// Links:
// 1) https://core.telegram.org/api/entities
//
// Use SetEntities and GetEntities helpers.
Entities []MessageEntityClass
// Inline keyboard
//
// Use SetReplyMarkup and GetReplyMarkup helpers.
ReplyMarkup ReplyMarkupClass
}
// BotInlineMessageMediaAutoTypeID is TL type id of BotInlineMessageMediaAuto.
const BotInlineMessageMediaAutoTypeID = 0x764cf810
// construct implements constructor of BotInlineMessageClass.
func (b BotInlineMessageMediaAuto) construct() BotInlineMessageClass { return &b }
// Ensuring interfaces in compile-time for BotInlineMessageMediaAuto.
var (
_ bin.Encoder = &BotInlineMessageMediaAuto{}
_ bin.Decoder = &BotInlineMessageMediaAuto{}
_ bin.BareEncoder = &BotInlineMessageMediaAuto{}
_ bin.BareDecoder = &BotInlineMessageMediaAuto{}
_ BotInlineMessageClass = &BotInlineMessageMediaAuto{}
)
func (b *BotInlineMessageMediaAuto) Zero() bool {
if b == nil {
return true
}
if !(b.Flags.Zero()) {
return false
}
if !(b.InvertMedia == false) {
return false
}
if !(b.Message == "") {
return false
}
if !(b.Entities == nil) {
return false
}
if !(b.ReplyMarkup == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (b *BotInlineMessageMediaAuto) String() string {
if b == nil {
return "BotInlineMessageMediaAuto(nil)"
}
type Alias BotInlineMessageMediaAuto
return fmt.Sprintf("BotInlineMessageMediaAuto%+v", Alias(*b))
}
// FillFrom fills BotInlineMessageMediaAuto from given interface.
func (b *BotInlineMessageMediaAuto) FillFrom(from interface {
GetInvertMedia() (value bool)
GetMessage() (value string)
GetEntities() (value []MessageEntityClass, ok bool)
GetReplyMarkup() (value ReplyMarkupClass, ok bool)
}) {
b.InvertMedia = from.GetInvertMedia()
b.Message = from.GetMessage()
if val, ok := from.GetEntities(); ok {
b.Entities = val
}
if val, ok := from.GetReplyMarkup(); ok {
b.ReplyMarkup = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*BotInlineMessageMediaAuto) TypeID() uint32 {
return BotInlineMessageMediaAutoTypeID
}
// TypeName returns name of type in TL schema.
func (*BotInlineMessageMediaAuto) TypeName() string {
return "botInlineMessageMediaAuto"
}
// TypeInfo returns info about TL type.
func (b *BotInlineMessageMediaAuto) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "botInlineMessageMediaAuto",
ID: BotInlineMessageMediaAutoTypeID,
}
if b == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "InvertMedia",
SchemaName: "invert_media",
Null: !b.Flags.Has(3),
},
{
Name: "Message",
SchemaName: "message",
},
{
Name: "Entities",
SchemaName: "entities",
Null: !b.Flags.Has(1),
},
{
Name: "ReplyMarkup",
SchemaName: "reply_markup",
Null: !b.Flags.Has(2),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (b *BotInlineMessageMediaAuto) SetFlags() {
if !(b.InvertMedia == false) {
b.Flags.Set(3)
}
if !(b.Entities == nil) {
b.Flags.Set(1)
}
if !(b.ReplyMarkup == nil) {
b.Flags.Set(2)
}
}
// Encode implements bin.Encoder.
func (b *BotInlineMessageMediaAuto) Encode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaAuto#764cf810 as nil")
}
buf.PutID(BotInlineMessageMediaAutoTypeID)
return b.EncodeBare(buf)
}
// EncodeBare implements bin.BareEncoder.
func (b *BotInlineMessageMediaAuto) EncodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaAuto#764cf810 as nil")
}
b.SetFlags()
if err := b.Flags.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaAuto#764cf810: field flags: %w", err)
}
buf.PutString(b.Message)
if b.Flags.Has(1) {
buf.PutVectorHeader(len(b.Entities))
for idx, v := range b.Entities {
if v == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaAuto#764cf810: field entities element with index %d is nil", idx)
}
if err := v.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaAuto#764cf810: field entities element with index %d: %w", idx, err)
}
}
}
if b.Flags.Has(2) {
if b.ReplyMarkup == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaAuto#764cf810: field reply_markup is nil")
}
if err := b.ReplyMarkup.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaAuto#764cf810: field reply_markup: %w", err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (b *BotInlineMessageMediaAuto) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaAuto#764cf810 to nil")
}
if err := buf.ConsumeID(BotInlineMessageMediaAutoTypeID); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaAuto#764cf810: %w", err)
}
return b.DecodeBare(buf)
}
// DecodeBare implements bin.BareDecoder.
func (b *BotInlineMessageMediaAuto) DecodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaAuto#764cf810 to nil")
}
{
if err := b.Flags.Decode(buf); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaAuto#764cf810: field flags: %w", err)
}
}
b.InvertMedia = b.Flags.Has(3)
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaAuto#764cf810: field message: %w", err)
}
b.Message = value
}
if b.Flags.Has(1) {
headerLen, err := buf.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaAuto#764cf810: field entities: %w", err)
}
if headerLen > 0 {
b.Entities = make([]MessageEntityClass, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
value, err := DecodeMessageEntity(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaAuto#764cf810: field entities: %w", err)
}
b.Entities = append(b.Entities, value)
}
}
if b.Flags.Has(2) {
value, err := DecodeReplyMarkup(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaAuto#764cf810: field reply_markup: %w", err)
}
b.ReplyMarkup = value
}
return nil
}
// SetInvertMedia sets value of InvertMedia conditional field.
func (b *BotInlineMessageMediaAuto) SetInvertMedia(value bool) {
if value {
b.Flags.Set(3)
b.InvertMedia = true
} else {
b.Flags.Unset(3)
b.InvertMedia = false
}
}
// GetInvertMedia returns value of InvertMedia conditional field.
func (b *BotInlineMessageMediaAuto) GetInvertMedia() (value bool) {
if b == nil {
return
}
return b.Flags.Has(3)
}
// GetMessage returns value of Message field.
func (b *BotInlineMessageMediaAuto) GetMessage() (value string) {
if b == nil {
return
}
return b.Message
}
// SetEntities sets value of Entities conditional field.
func (b *BotInlineMessageMediaAuto) SetEntities(value []MessageEntityClass) {
b.Flags.Set(1)
b.Entities = value
}
// GetEntities returns value of Entities conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaAuto) GetEntities() (value []MessageEntityClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(1) {
return value, false
}
return b.Entities, true
}
// SetReplyMarkup sets value of ReplyMarkup conditional field.
func (b *BotInlineMessageMediaAuto) SetReplyMarkup(value ReplyMarkupClass) {
b.Flags.Set(2)
b.ReplyMarkup = value
}
// GetReplyMarkup returns value of ReplyMarkup conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaAuto) GetReplyMarkup() (value ReplyMarkupClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(2) {
return value, false
}
return b.ReplyMarkup, true
}
// MapEntities returns field Entities wrapped in MessageEntityClassArray helper.
func (b *BotInlineMessageMediaAuto) MapEntities() (value MessageEntityClassArray, ok bool) {
if !b.Flags.Has(1) {
return value, false
}
return MessageEntityClassArray(b.Entities), true
}
// BotInlineMessageText represents TL type `botInlineMessageText#8c7f65e2`.
// Send a simple text message
//
// See https://core.telegram.org/constructor/botInlineMessageText for reference.
type BotInlineMessageText struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Disable webpage preview
NoWebpage bool
// If set, any eventual webpage preview will be shown on top of the message instead of at
// the bottom.
InvertMedia bool
// The message
Message string
// Message entities for styled text¹
//
// Links:
// 1) https://core.telegram.org/api/entities
//
// Use SetEntities and GetEntities helpers.
Entities []MessageEntityClass
// Inline keyboard
//
// Use SetReplyMarkup and GetReplyMarkup helpers.
ReplyMarkup ReplyMarkupClass
}
// BotInlineMessageTextTypeID is TL type id of BotInlineMessageText.
const BotInlineMessageTextTypeID = 0x8c7f65e2
// construct implements constructor of BotInlineMessageClass.
func (b BotInlineMessageText) construct() BotInlineMessageClass { return &b }
// Ensuring interfaces in compile-time for BotInlineMessageText.
var (
_ bin.Encoder = &BotInlineMessageText{}
_ bin.Decoder = &BotInlineMessageText{}
_ bin.BareEncoder = &BotInlineMessageText{}
_ bin.BareDecoder = &BotInlineMessageText{}
_ BotInlineMessageClass = &BotInlineMessageText{}
)
func (b *BotInlineMessageText) Zero() bool {
if b == nil {
return true
}
if !(b.Flags.Zero()) {
return false
}
if !(b.NoWebpage == false) {
return false
}
if !(b.InvertMedia == false) {
return false
}
if !(b.Message == "") {
return false
}
if !(b.Entities == nil) {
return false
}
if !(b.ReplyMarkup == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (b *BotInlineMessageText) String() string {
if b == nil {
return "BotInlineMessageText(nil)"
}
type Alias BotInlineMessageText
return fmt.Sprintf("BotInlineMessageText%+v", Alias(*b))
}
// FillFrom fills BotInlineMessageText from given interface.
func (b *BotInlineMessageText) FillFrom(from interface {
GetNoWebpage() (value bool)
GetInvertMedia() (value bool)
GetMessage() (value string)
GetEntities() (value []MessageEntityClass, ok bool)
GetReplyMarkup() (value ReplyMarkupClass, ok bool)
}) {
b.NoWebpage = from.GetNoWebpage()
b.InvertMedia = from.GetInvertMedia()
b.Message = from.GetMessage()
if val, ok := from.GetEntities(); ok {
b.Entities = val
}
if val, ok := from.GetReplyMarkup(); ok {
b.ReplyMarkup = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*BotInlineMessageText) TypeID() uint32 {
return BotInlineMessageTextTypeID
}
// TypeName returns name of type in TL schema.
func (*BotInlineMessageText) TypeName() string {
return "botInlineMessageText"
}
// TypeInfo returns info about TL type.
func (b *BotInlineMessageText) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "botInlineMessageText",
ID: BotInlineMessageTextTypeID,
}
if b == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "NoWebpage",
SchemaName: "no_webpage",
Null: !b.Flags.Has(0),
},
{
Name: "InvertMedia",
SchemaName: "invert_media",
Null: !b.Flags.Has(3),
},
{
Name: "Message",
SchemaName: "message",
},
{
Name: "Entities",
SchemaName: "entities",
Null: !b.Flags.Has(1),
},
{
Name: "ReplyMarkup",
SchemaName: "reply_markup",
Null: !b.Flags.Has(2),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (b *BotInlineMessageText) SetFlags() {
if !(b.NoWebpage == false) {
b.Flags.Set(0)
}
if !(b.InvertMedia == false) {
b.Flags.Set(3)
}
if !(b.Entities == nil) {
b.Flags.Set(1)
}
if !(b.ReplyMarkup == nil) {
b.Flags.Set(2)
}
}
// Encode implements bin.Encoder.
func (b *BotInlineMessageText) Encode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageText#8c7f65e2 as nil")
}
buf.PutID(BotInlineMessageTextTypeID)
return b.EncodeBare(buf)
}
// EncodeBare implements bin.BareEncoder.
func (b *BotInlineMessageText) EncodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageText#8c7f65e2 as nil")
}
b.SetFlags()
if err := b.Flags.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageText#8c7f65e2: field flags: %w", err)
}
buf.PutString(b.Message)
if b.Flags.Has(1) {
buf.PutVectorHeader(len(b.Entities))
for idx, v := range b.Entities {
if v == nil {
return fmt.Errorf("unable to encode botInlineMessageText#8c7f65e2: field entities element with index %d is nil", idx)
}
if err := v.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageText#8c7f65e2: field entities element with index %d: %w", idx, err)
}
}
}
if b.Flags.Has(2) {
if b.ReplyMarkup == nil {
return fmt.Errorf("unable to encode botInlineMessageText#8c7f65e2: field reply_markup is nil")
}
if err := b.ReplyMarkup.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageText#8c7f65e2: field reply_markup: %w", err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (b *BotInlineMessageText) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageText#8c7f65e2 to nil")
}
if err := buf.ConsumeID(BotInlineMessageTextTypeID); err != nil {
return fmt.Errorf("unable to decode botInlineMessageText#8c7f65e2: %w", err)
}
return b.DecodeBare(buf)
}
// DecodeBare implements bin.BareDecoder.
func (b *BotInlineMessageText) DecodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageText#8c7f65e2 to nil")
}
{
if err := b.Flags.Decode(buf); err != nil {
return fmt.Errorf("unable to decode botInlineMessageText#8c7f65e2: field flags: %w", err)
}
}
b.NoWebpage = b.Flags.Has(0)
b.InvertMedia = b.Flags.Has(3)
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageText#8c7f65e2: field message: %w", err)
}
b.Message = value
}
if b.Flags.Has(1) {
headerLen, err := buf.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageText#8c7f65e2: field entities: %w", err)
}
if headerLen > 0 {
b.Entities = make([]MessageEntityClass, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
value, err := DecodeMessageEntity(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageText#8c7f65e2: field entities: %w", err)
}
b.Entities = append(b.Entities, value)
}
}
if b.Flags.Has(2) {
value, err := DecodeReplyMarkup(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageText#8c7f65e2: field reply_markup: %w", err)
}
b.ReplyMarkup = value
}
return nil
}
// SetNoWebpage sets value of NoWebpage conditional field.
func (b *BotInlineMessageText) SetNoWebpage(value bool) {
if value {
b.Flags.Set(0)
b.NoWebpage = true
} else {
b.Flags.Unset(0)
b.NoWebpage = false
}
}
// GetNoWebpage returns value of NoWebpage conditional field.
func (b *BotInlineMessageText) GetNoWebpage() (value bool) {
if b == nil {
return
}
return b.Flags.Has(0)
}
// SetInvertMedia sets value of InvertMedia conditional field.
func (b *BotInlineMessageText) SetInvertMedia(value bool) {
if value {
b.Flags.Set(3)
b.InvertMedia = true
} else {
b.Flags.Unset(3)
b.InvertMedia = false
}
}
// GetInvertMedia returns value of InvertMedia conditional field.
func (b *BotInlineMessageText) GetInvertMedia() (value bool) {
if b == nil {
return
}
return b.Flags.Has(3)
}
// GetMessage returns value of Message field.
func (b *BotInlineMessageText) GetMessage() (value string) {
if b == nil {
return
}
return b.Message
}
// SetEntities sets value of Entities conditional field.
func (b *BotInlineMessageText) SetEntities(value []MessageEntityClass) {
b.Flags.Set(1)
b.Entities = value
}
// GetEntities returns value of Entities conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageText) GetEntities() (value []MessageEntityClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(1) {
return value, false
}
return b.Entities, true
}
// SetReplyMarkup sets value of ReplyMarkup conditional field.
func (b *BotInlineMessageText) SetReplyMarkup(value ReplyMarkupClass) {
b.Flags.Set(2)
b.ReplyMarkup = value
}
// GetReplyMarkup returns value of ReplyMarkup conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageText) GetReplyMarkup() (value ReplyMarkupClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(2) {
return value, false
}
return b.ReplyMarkup, true
}
// MapEntities returns field Entities wrapped in MessageEntityClassArray helper.
func (b *BotInlineMessageText) MapEntities() (value MessageEntityClassArray, ok bool) {
if !b.Flags.Has(1) {
return value, false
}
return MessageEntityClassArray(b.Entities), true
}
// BotInlineMessageMediaGeo represents TL type `botInlineMessageMediaGeo#51846fd`.
// Send a geolocation
//
// See https://core.telegram.org/constructor/botInlineMessageMediaGeo for reference.
type BotInlineMessageMediaGeo struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Geolocation
Geo GeoPointClass
// 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
//
// 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
// Inline keyboard
//
// Use SetReplyMarkup and GetReplyMarkup helpers.
ReplyMarkup ReplyMarkupClass
}
// BotInlineMessageMediaGeoTypeID is TL type id of BotInlineMessageMediaGeo.
const BotInlineMessageMediaGeoTypeID = 0x51846fd
// construct implements constructor of BotInlineMessageClass.
func (b BotInlineMessageMediaGeo) construct() BotInlineMessageClass { return &b }
// Ensuring interfaces in compile-time for BotInlineMessageMediaGeo.
var (
_ bin.Encoder = &BotInlineMessageMediaGeo{}
_ bin.Decoder = &BotInlineMessageMediaGeo{}
_ bin.BareEncoder = &BotInlineMessageMediaGeo{}
_ bin.BareDecoder = &BotInlineMessageMediaGeo{}
_ BotInlineMessageClass = &BotInlineMessageMediaGeo{}
)
func (b *BotInlineMessageMediaGeo) Zero() bool {
if b == nil {
return true
}
if !(b.Flags.Zero()) {
return false
}
if !(b.Geo == nil) {
return false
}
if !(b.Heading == 0) {
return false
}
if !(b.Period == 0) {
return false
}
if !(b.ProximityNotificationRadius == 0) {
return false
}
if !(b.ReplyMarkup == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (b *BotInlineMessageMediaGeo) String() string {
if b == nil {
return "BotInlineMessageMediaGeo(nil)"
}
type Alias BotInlineMessageMediaGeo
return fmt.Sprintf("BotInlineMessageMediaGeo%+v", Alias(*b))
}
// FillFrom fills BotInlineMessageMediaGeo from given interface.
func (b *BotInlineMessageMediaGeo) FillFrom(from interface {
GetGeo() (value GeoPointClass)
GetHeading() (value int, ok bool)
GetPeriod() (value int, ok bool)
GetProximityNotificationRadius() (value int, ok bool)
GetReplyMarkup() (value ReplyMarkupClass, ok bool)
}) {
b.Geo = from.GetGeo()
if val, ok := from.GetHeading(); ok {
b.Heading = val
}
if val, ok := from.GetPeriod(); ok {
b.Period = val
}
if val, ok := from.GetProximityNotificationRadius(); ok {
b.ProximityNotificationRadius = val
}
if val, ok := from.GetReplyMarkup(); ok {
b.ReplyMarkup = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*BotInlineMessageMediaGeo) TypeID() uint32 {
return BotInlineMessageMediaGeoTypeID
}
// TypeName returns name of type in TL schema.
func (*BotInlineMessageMediaGeo) TypeName() string {
return "botInlineMessageMediaGeo"
}
// TypeInfo returns info about TL type.
func (b *BotInlineMessageMediaGeo) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "botInlineMessageMediaGeo",
ID: BotInlineMessageMediaGeoTypeID,
}
if b == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "Geo",
SchemaName: "geo",
},
{
Name: "Heading",
SchemaName: "heading",
Null: !b.Flags.Has(0),
},
{
Name: "Period",
SchemaName: "period",
Null: !b.Flags.Has(1),
},
{
Name: "ProximityNotificationRadius",
SchemaName: "proximity_notification_radius",
Null: !b.Flags.Has(3),
},
{
Name: "ReplyMarkup",
SchemaName: "reply_markup",
Null: !b.Flags.Has(2),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (b *BotInlineMessageMediaGeo) SetFlags() {
if !(b.Heading == 0) {
b.Flags.Set(0)
}
if !(b.Period == 0) {
b.Flags.Set(1)
}
if !(b.ProximityNotificationRadius == 0) {
b.Flags.Set(3)
}
if !(b.ReplyMarkup == nil) {
b.Flags.Set(2)
}
}
// Encode implements bin.Encoder.
func (b *BotInlineMessageMediaGeo) Encode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaGeo#51846fd as nil")
}
buf.PutID(BotInlineMessageMediaGeoTypeID)
return b.EncodeBare(buf)
}
// EncodeBare implements bin.BareEncoder.
func (b *BotInlineMessageMediaGeo) EncodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaGeo#51846fd as nil")
}
b.SetFlags()
if err := b.Flags.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaGeo#51846fd: field flags: %w", err)
}
if b.Geo == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaGeo#51846fd: field geo is nil")
}
if err := b.Geo.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaGeo#51846fd: field geo: %w", err)
}
if b.Flags.Has(0) {
buf.PutInt(b.Heading)
}
if b.Flags.Has(1) {
buf.PutInt(b.Period)
}
if b.Flags.Has(3) {
buf.PutInt(b.ProximityNotificationRadius)
}
if b.Flags.Has(2) {
if b.ReplyMarkup == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaGeo#51846fd: field reply_markup is nil")
}
if err := b.ReplyMarkup.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaGeo#51846fd: field reply_markup: %w", err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (b *BotInlineMessageMediaGeo) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaGeo#51846fd to nil")
}
if err := buf.ConsumeID(BotInlineMessageMediaGeoTypeID); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaGeo#51846fd: %w", err)
}
return b.DecodeBare(buf)
}
// DecodeBare implements bin.BareDecoder.
func (b *BotInlineMessageMediaGeo) DecodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaGeo#51846fd to nil")
}
{
if err := b.Flags.Decode(buf); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaGeo#51846fd: field flags: %w", err)
}
}
{
value, err := DecodeGeoPoint(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaGeo#51846fd: field geo: %w", err)
}
b.Geo = value
}
if b.Flags.Has(0) {
value, err := buf.Int()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaGeo#51846fd: field heading: %w", err)
}
b.Heading = value
}
if b.Flags.Has(1) {
value, err := buf.Int()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaGeo#51846fd: field period: %w", err)
}
b.Period = value
}
if b.Flags.Has(3) {
value, err := buf.Int()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaGeo#51846fd: field proximity_notification_radius: %w", err)
}
b.ProximityNotificationRadius = value
}
if b.Flags.Has(2) {
value, err := DecodeReplyMarkup(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaGeo#51846fd: field reply_markup: %w", err)
}
b.ReplyMarkup = value
}
return nil
}
// GetGeo returns value of Geo field.
func (b *BotInlineMessageMediaGeo) GetGeo() (value GeoPointClass) {
if b == nil {
return
}
return b.Geo
}
// SetHeading sets value of Heading conditional field.
func (b *BotInlineMessageMediaGeo) SetHeading(value int) {
b.Flags.Set(0)
b.Heading = value
}
// GetHeading returns value of Heading conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaGeo) GetHeading() (value int, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(0) {
return value, false
}
return b.Heading, true
}
// SetPeriod sets value of Period conditional field.
func (b *BotInlineMessageMediaGeo) SetPeriod(value int) {
b.Flags.Set(1)
b.Period = value
}
// GetPeriod returns value of Period conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaGeo) GetPeriod() (value int, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(1) {
return value, false
}
return b.Period, true
}
// SetProximityNotificationRadius sets value of ProximityNotificationRadius conditional field.
func (b *BotInlineMessageMediaGeo) SetProximityNotificationRadius(value int) {
b.Flags.Set(3)
b.ProximityNotificationRadius = value
}
// GetProximityNotificationRadius returns value of ProximityNotificationRadius conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaGeo) GetProximityNotificationRadius() (value int, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(3) {
return value, false
}
return b.ProximityNotificationRadius, true
}
// SetReplyMarkup sets value of ReplyMarkup conditional field.
func (b *BotInlineMessageMediaGeo) SetReplyMarkup(value ReplyMarkupClass) {
b.Flags.Set(2)
b.ReplyMarkup = value
}
// GetReplyMarkup returns value of ReplyMarkup conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaGeo) GetReplyMarkup() (value ReplyMarkupClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(2) {
return value, false
}
return b.ReplyMarkup, true
}
// BotInlineMessageMediaVenue represents TL type `botInlineMessageMediaVenue#8a86659c`.
// Send a venue
//
// See https://core.telegram.org/constructor/botInlineMessageMediaVenue for reference.
type BotInlineMessageMediaVenue struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Geolocation of venue
Geo GeoPointClass
// Venue name
Title string
// Address
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
// Inline keyboard
//
// Use SetReplyMarkup and GetReplyMarkup helpers.
ReplyMarkup ReplyMarkupClass
}
// BotInlineMessageMediaVenueTypeID is TL type id of BotInlineMessageMediaVenue.
const BotInlineMessageMediaVenueTypeID = 0x8a86659c
// construct implements constructor of BotInlineMessageClass.
func (b BotInlineMessageMediaVenue) construct() BotInlineMessageClass { return &b }
// Ensuring interfaces in compile-time for BotInlineMessageMediaVenue.
var (
_ bin.Encoder = &BotInlineMessageMediaVenue{}
_ bin.Decoder = &BotInlineMessageMediaVenue{}
_ bin.BareEncoder = &BotInlineMessageMediaVenue{}
_ bin.BareDecoder = &BotInlineMessageMediaVenue{}
_ BotInlineMessageClass = &BotInlineMessageMediaVenue{}
)
func (b *BotInlineMessageMediaVenue) Zero() bool {
if b == nil {
return true
}
if !(b.Flags.Zero()) {
return false
}
if !(b.Geo == nil) {
return false
}
if !(b.Title == "") {
return false
}
if !(b.Address == "") {
return false
}
if !(b.Provider == "") {
return false
}
if !(b.VenueID == "") {
return false
}
if !(b.VenueType == "") {
return false
}
if !(b.ReplyMarkup == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (b *BotInlineMessageMediaVenue) String() string {
if b == nil {
return "BotInlineMessageMediaVenue(nil)"
}
type Alias BotInlineMessageMediaVenue
return fmt.Sprintf("BotInlineMessageMediaVenue%+v", Alias(*b))
}
// FillFrom fills BotInlineMessageMediaVenue from given interface.
func (b *BotInlineMessageMediaVenue) FillFrom(from interface {
GetGeo() (value GeoPointClass)
GetTitle() (value string)
GetAddress() (value string)
GetProvider() (value string)
GetVenueID() (value string)
GetVenueType() (value string)
GetReplyMarkup() (value ReplyMarkupClass, ok bool)
}) {
b.Geo = from.GetGeo()
b.Title = from.GetTitle()
b.Address = from.GetAddress()
b.Provider = from.GetProvider()
b.VenueID = from.GetVenueID()
b.VenueType = from.GetVenueType()
if val, ok := from.GetReplyMarkup(); ok {
b.ReplyMarkup = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*BotInlineMessageMediaVenue) TypeID() uint32 {
return BotInlineMessageMediaVenueTypeID
}
// TypeName returns name of type in TL schema.
func (*BotInlineMessageMediaVenue) TypeName() string {
return "botInlineMessageMediaVenue"
}
// TypeInfo returns info about TL type.
func (b *BotInlineMessageMediaVenue) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "botInlineMessageMediaVenue",
ID: BotInlineMessageMediaVenueTypeID,
}
if b == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "Geo",
SchemaName: "geo",
},
{
Name: "Title",
SchemaName: "title",
},
{
Name: "Address",
SchemaName: "address",
},
{
Name: "Provider",
SchemaName: "provider",
},
{
Name: "VenueID",
SchemaName: "venue_id",
},
{
Name: "VenueType",
SchemaName: "venue_type",
},
{
Name: "ReplyMarkup",
SchemaName: "reply_markup",
Null: !b.Flags.Has(2),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (b *BotInlineMessageMediaVenue) SetFlags() {
if !(b.ReplyMarkup == nil) {
b.Flags.Set(2)
}
}
// Encode implements bin.Encoder.
func (b *BotInlineMessageMediaVenue) Encode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaVenue#8a86659c as nil")
}
buf.PutID(BotInlineMessageMediaVenueTypeID)
return b.EncodeBare(buf)
}
// EncodeBare implements bin.BareEncoder.
func (b *BotInlineMessageMediaVenue) EncodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaVenue#8a86659c as nil")
}
b.SetFlags()
if err := b.Flags.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaVenue#8a86659c: field flags: %w", err)
}
if b.Geo == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaVenue#8a86659c: field geo is nil")
}
if err := b.Geo.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaVenue#8a86659c: field geo: %w", err)
}
buf.PutString(b.Title)
buf.PutString(b.Address)
buf.PutString(b.Provider)
buf.PutString(b.VenueID)
buf.PutString(b.VenueType)
if b.Flags.Has(2) {
if b.ReplyMarkup == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaVenue#8a86659c: field reply_markup is nil")
}
if err := b.ReplyMarkup.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaVenue#8a86659c: field reply_markup: %w", err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (b *BotInlineMessageMediaVenue) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaVenue#8a86659c to nil")
}
if err := buf.ConsumeID(BotInlineMessageMediaVenueTypeID); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: %w", err)
}
return b.DecodeBare(buf)
}
// DecodeBare implements bin.BareDecoder.
func (b *BotInlineMessageMediaVenue) DecodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaVenue#8a86659c to nil")
}
{
if err := b.Flags.Decode(buf); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: field flags: %w", err)
}
}
{
value, err := DecodeGeoPoint(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: field geo: %w", err)
}
b.Geo = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: field title: %w", err)
}
b.Title = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: field address: %w", err)
}
b.Address = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: field provider: %w", err)
}
b.Provider = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: field venue_id: %w", err)
}
b.VenueID = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: field venue_type: %w", err)
}
b.VenueType = value
}
if b.Flags.Has(2) {
value, err := DecodeReplyMarkup(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaVenue#8a86659c: field reply_markup: %w", err)
}
b.ReplyMarkup = value
}
return nil
}
// GetGeo returns value of Geo field.
func (b *BotInlineMessageMediaVenue) GetGeo() (value GeoPointClass) {
if b == nil {
return
}
return b.Geo
}
// GetTitle returns value of Title field.
func (b *BotInlineMessageMediaVenue) GetTitle() (value string) {
if b == nil {
return
}
return b.Title
}
// GetAddress returns value of Address field.
func (b *BotInlineMessageMediaVenue) GetAddress() (value string) {
if b == nil {
return
}
return b.Address
}
// GetProvider returns value of Provider field.
func (b *BotInlineMessageMediaVenue) GetProvider() (value string) {
if b == nil {
return
}
return b.Provider
}
// GetVenueID returns value of VenueID field.
func (b *BotInlineMessageMediaVenue) GetVenueID() (value string) {
if b == nil {
return
}
return b.VenueID
}
// GetVenueType returns value of VenueType field.
func (b *BotInlineMessageMediaVenue) GetVenueType() (value string) {
if b == nil {
return
}
return b.VenueType
}
// SetReplyMarkup sets value of ReplyMarkup conditional field.
func (b *BotInlineMessageMediaVenue) SetReplyMarkup(value ReplyMarkupClass) {
b.Flags.Set(2)
b.ReplyMarkup = value
}
// GetReplyMarkup returns value of ReplyMarkup conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaVenue) GetReplyMarkup() (value ReplyMarkupClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(2) {
return value, false
}
return b.ReplyMarkup, true
}
// BotInlineMessageMediaContact represents TL type `botInlineMessageMediaContact#18d1cdc2`.
// Send a contact
//
// See https://core.telegram.org/constructor/botInlineMessageMediaContact for reference.
type BotInlineMessageMediaContact struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Phone number
PhoneNumber string
// First name
FirstName string
// Last name
LastName string
// VCard info
Vcard string
// Inline keyboard
//
// Use SetReplyMarkup and GetReplyMarkup helpers.
ReplyMarkup ReplyMarkupClass
}
// BotInlineMessageMediaContactTypeID is TL type id of BotInlineMessageMediaContact.
const BotInlineMessageMediaContactTypeID = 0x18d1cdc2
// construct implements constructor of BotInlineMessageClass.
func (b BotInlineMessageMediaContact) construct() BotInlineMessageClass { return &b }
// Ensuring interfaces in compile-time for BotInlineMessageMediaContact.
var (
_ bin.Encoder = &BotInlineMessageMediaContact{}
_ bin.Decoder = &BotInlineMessageMediaContact{}
_ bin.BareEncoder = &BotInlineMessageMediaContact{}
_ bin.BareDecoder = &BotInlineMessageMediaContact{}
_ BotInlineMessageClass = &BotInlineMessageMediaContact{}
)
func (b *BotInlineMessageMediaContact) Zero() bool {
if b == nil {
return true
}
if !(b.Flags.Zero()) {
return false
}
if !(b.PhoneNumber == "") {
return false
}
if !(b.FirstName == "") {
return false
}
if !(b.LastName == "") {
return false
}
if !(b.Vcard == "") {
return false
}
if !(b.ReplyMarkup == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (b *BotInlineMessageMediaContact) String() string {
if b == nil {
return "BotInlineMessageMediaContact(nil)"
}
type Alias BotInlineMessageMediaContact
return fmt.Sprintf("BotInlineMessageMediaContact%+v", Alias(*b))
}
// FillFrom fills BotInlineMessageMediaContact from given interface.
func (b *BotInlineMessageMediaContact) FillFrom(from interface {
GetPhoneNumber() (value string)
GetFirstName() (value string)
GetLastName() (value string)
GetVcard() (value string)
GetReplyMarkup() (value ReplyMarkupClass, ok bool)
}) {
b.PhoneNumber = from.GetPhoneNumber()
b.FirstName = from.GetFirstName()
b.LastName = from.GetLastName()
b.Vcard = from.GetVcard()
if val, ok := from.GetReplyMarkup(); ok {
b.ReplyMarkup = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*BotInlineMessageMediaContact) TypeID() uint32 {
return BotInlineMessageMediaContactTypeID
}
// TypeName returns name of type in TL schema.
func (*BotInlineMessageMediaContact) TypeName() string {
return "botInlineMessageMediaContact"
}
// TypeInfo returns info about TL type.
func (b *BotInlineMessageMediaContact) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "botInlineMessageMediaContact",
ID: BotInlineMessageMediaContactTypeID,
}
if b == 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",
},
{
Name: "ReplyMarkup",
SchemaName: "reply_markup",
Null: !b.Flags.Has(2),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (b *BotInlineMessageMediaContact) SetFlags() {
if !(b.ReplyMarkup == nil) {
b.Flags.Set(2)
}
}
// Encode implements bin.Encoder.
func (b *BotInlineMessageMediaContact) Encode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaContact#18d1cdc2 as nil")
}
buf.PutID(BotInlineMessageMediaContactTypeID)
return b.EncodeBare(buf)
}
// EncodeBare implements bin.BareEncoder.
func (b *BotInlineMessageMediaContact) EncodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaContact#18d1cdc2 as nil")
}
b.SetFlags()
if err := b.Flags.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaContact#18d1cdc2: field flags: %w", err)
}
buf.PutString(b.PhoneNumber)
buf.PutString(b.FirstName)
buf.PutString(b.LastName)
buf.PutString(b.Vcard)
if b.Flags.Has(2) {
if b.ReplyMarkup == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaContact#18d1cdc2: field reply_markup is nil")
}
if err := b.ReplyMarkup.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaContact#18d1cdc2: field reply_markup: %w", err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (b *BotInlineMessageMediaContact) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaContact#18d1cdc2 to nil")
}
if err := buf.ConsumeID(BotInlineMessageMediaContactTypeID); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaContact#18d1cdc2: %w", err)
}
return b.DecodeBare(buf)
}
// DecodeBare implements bin.BareDecoder.
func (b *BotInlineMessageMediaContact) DecodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaContact#18d1cdc2 to nil")
}
{
if err := b.Flags.Decode(buf); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaContact#18d1cdc2: field flags: %w", err)
}
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaContact#18d1cdc2: field phone_number: %w", err)
}
b.PhoneNumber = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaContact#18d1cdc2: field first_name: %w", err)
}
b.FirstName = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaContact#18d1cdc2: field last_name: %w", err)
}
b.LastName = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaContact#18d1cdc2: field vcard: %w", err)
}
b.Vcard = value
}
if b.Flags.Has(2) {
value, err := DecodeReplyMarkup(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaContact#18d1cdc2: field reply_markup: %w", err)
}
b.ReplyMarkup = value
}
return nil
}
// GetPhoneNumber returns value of PhoneNumber field.
func (b *BotInlineMessageMediaContact) GetPhoneNumber() (value string) {
if b == nil {
return
}
return b.PhoneNumber
}
// GetFirstName returns value of FirstName field.
func (b *BotInlineMessageMediaContact) GetFirstName() (value string) {
if b == nil {
return
}
return b.FirstName
}
// GetLastName returns value of LastName field.
func (b *BotInlineMessageMediaContact) GetLastName() (value string) {
if b == nil {
return
}
return b.LastName
}
// GetVcard returns value of Vcard field.
func (b *BotInlineMessageMediaContact) GetVcard() (value string) {
if b == nil {
return
}
return b.Vcard
}
// SetReplyMarkup sets value of ReplyMarkup conditional field.
func (b *BotInlineMessageMediaContact) SetReplyMarkup(value ReplyMarkupClass) {
b.Flags.Set(2)
b.ReplyMarkup = value
}
// GetReplyMarkup returns value of ReplyMarkup conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaContact) GetReplyMarkup() (value ReplyMarkupClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(2) {
return value, false
}
return b.ReplyMarkup, true
}
// BotInlineMessageMediaInvoice represents TL type `botInlineMessageMediaInvoice#354a9b09`.
// Send an invoice
//
// See https://core.telegram.org/constructor/botInlineMessageMediaInvoice for reference.
type BotInlineMessageMediaInvoice struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Set this flag if you require the user's shipping address to complete the order
ShippingAddressRequested bool
// Test invoice
Test bool
// Product name, 1-32 characters
Title string
// Product description, 1-255 characters
Description string
// Product photo
//
// Use SetPhoto and GetPhoto helpers.
Photo WebDocumentClass
// Three-letter ISO 4217 currency¹ code, or XTR for Telegram Stars².
//
// Links:
// 1) https://core.telegram.org/bots/payments#supported-currencies
// 2) https://core.telegram.org/api/stars
Currency string
// Total price in the smallest units of the currency (integer, not float/double). For
// example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in
// currencies.json¹, it shows the number of digits past the decimal point for each
// currency (2 for the majority of currencies).
//
// Links:
// 1) https://core.telegram.org/bots/payments/currencies.json
TotalAmount int64
// Inline keyboard
//
// Use SetReplyMarkup and GetReplyMarkup helpers.
ReplyMarkup ReplyMarkupClass
}
// BotInlineMessageMediaInvoiceTypeID is TL type id of BotInlineMessageMediaInvoice.
const BotInlineMessageMediaInvoiceTypeID = 0x354a9b09
// construct implements constructor of BotInlineMessageClass.
func (b BotInlineMessageMediaInvoice) construct() BotInlineMessageClass { return &b }
// Ensuring interfaces in compile-time for BotInlineMessageMediaInvoice.
var (
_ bin.Encoder = &BotInlineMessageMediaInvoice{}
_ bin.Decoder = &BotInlineMessageMediaInvoice{}
_ bin.BareEncoder = &BotInlineMessageMediaInvoice{}
_ bin.BareDecoder = &BotInlineMessageMediaInvoice{}
_ BotInlineMessageClass = &BotInlineMessageMediaInvoice{}
)
func (b *BotInlineMessageMediaInvoice) Zero() bool {
if b == nil {
return true
}
if !(b.Flags.Zero()) {
return false
}
if !(b.ShippingAddressRequested == false) {
return false
}
if !(b.Test == false) {
return false
}
if !(b.Title == "") {
return false
}
if !(b.Description == "") {
return false
}
if !(b.Photo == nil) {
return false
}
if !(b.Currency == "") {
return false
}
if !(b.TotalAmount == 0) {
return false
}
if !(b.ReplyMarkup == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (b *BotInlineMessageMediaInvoice) String() string {
if b == nil {
return "BotInlineMessageMediaInvoice(nil)"
}
type Alias BotInlineMessageMediaInvoice
return fmt.Sprintf("BotInlineMessageMediaInvoice%+v", Alias(*b))
}
// FillFrom fills BotInlineMessageMediaInvoice from given interface.
func (b *BotInlineMessageMediaInvoice) FillFrom(from interface {
GetShippingAddressRequested() (value bool)
GetTest() (value bool)
GetTitle() (value string)
GetDescription() (value string)
GetPhoto() (value WebDocumentClass, ok bool)
GetCurrency() (value string)
GetTotalAmount() (value int64)
GetReplyMarkup() (value ReplyMarkupClass, ok bool)
}) {
b.ShippingAddressRequested = from.GetShippingAddressRequested()
b.Test = from.GetTest()
b.Title = from.GetTitle()
b.Description = from.GetDescription()
if val, ok := from.GetPhoto(); ok {
b.Photo = val
}
b.Currency = from.GetCurrency()
b.TotalAmount = from.GetTotalAmount()
if val, ok := from.GetReplyMarkup(); ok {
b.ReplyMarkup = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*BotInlineMessageMediaInvoice) TypeID() uint32 {
return BotInlineMessageMediaInvoiceTypeID
}
// TypeName returns name of type in TL schema.
func (*BotInlineMessageMediaInvoice) TypeName() string {
return "botInlineMessageMediaInvoice"
}
// TypeInfo returns info about TL type.
func (b *BotInlineMessageMediaInvoice) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "botInlineMessageMediaInvoice",
ID: BotInlineMessageMediaInvoiceTypeID,
}
if b == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "ShippingAddressRequested",
SchemaName: "shipping_address_requested",
Null: !b.Flags.Has(1),
},
{
Name: "Test",
SchemaName: "test",
Null: !b.Flags.Has(3),
},
{
Name: "Title",
SchemaName: "title",
},
{
Name: "Description",
SchemaName: "description",
},
{
Name: "Photo",
SchemaName: "photo",
Null: !b.Flags.Has(0),
},
{
Name: "Currency",
SchemaName: "currency",
},
{
Name: "TotalAmount",
SchemaName: "total_amount",
},
{
Name: "ReplyMarkup",
SchemaName: "reply_markup",
Null: !b.Flags.Has(2),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (b *BotInlineMessageMediaInvoice) SetFlags() {
if !(b.ShippingAddressRequested == false) {
b.Flags.Set(1)
}
if !(b.Test == false) {
b.Flags.Set(3)
}
if !(b.Photo == nil) {
b.Flags.Set(0)
}
if !(b.ReplyMarkup == nil) {
b.Flags.Set(2)
}
}
// Encode implements bin.Encoder.
func (b *BotInlineMessageMediaInvoice) Encode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaInvoice#354a9b09 as nil")
}
buf.PutID(BotInlineMessageMediaInvoiceTypeID)
return b.EncodeBare(buf)
}
// EncodeBare implements bin.BareEncoder.
func (b *BotInlineMessageMediaInvoice) EncodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaInvoice#354a9b09 as nil")
}
b.SetFlags()
if err := b.Flags.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaInvoice#354a9b09: field flags: %w", err)
}
buf.PutString(b.Title)
buf.PutString(b.Description)
if b.Flags.Has(0) {
if b.Photo == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaInvoice#354a9b09: field photo is nil")
}
if err := b.Photo.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaInvoice#354a9b09: field photo: %w", err)
}
}
buf.PutString(b.Currency)
buf.PutLong(b.TotalAmount)
if b.Flags.Has(2) {
if b.ReplyMarkup == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaInvoice#354a9b09: field reply_markup is nil")
}
if err := b.ReplyMarkup.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaInvoice#354a9b09: field reply_markup: %w", err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (b *BotInlineMessageMediaInvoice) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaInvoice#354a9b09 to nil")
}
if err := buf.ConsumeID(BotInlineMessageMediaInvoiceTypeID); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaInvoice#354a9b09: %w", err)
}
return b.DecodeBare(buf)
}
// DecodeBare implements bin.BareDecoder.
func (b *BotInlineMessageMediaInvoice) DecodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaInvoice#354a9b09 to nil")
}
{
if err := b.Flags.Decode(buf); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaInvoice#354a9b09: field flags: %w", err)
}
}
b.ShippingAddressRequested = b.Flags.Has(1)
b.Test = b.Flags.Has(3)
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaInvoice#354a9b09: field title: %w", err)
}
b.Title = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaInvoice#354a9b09: field description: %w", err)
}
b.Description = value
}
if b.Flags.Has(0) {
value, err := DecodeWebDocument(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaInvoice#354a9b09: field photo: %w", err)
}
b.Photo = value
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaInvoice#354a9b09: field currency: %w", err)
}
b.Currency = value
}
{
value, err := buf.Long()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaInvoice#354a9b09: field total_amount: %w", err)
}
b.TotalAmount = value
}
if b.Flags.Has(2) {
value, err := DecodeReplyMarkup(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaInvoice#354a9b09: field reply_markup: %w", err)
}
b.ReplyMarkup = value
}
return nil
}
// SetShippingAddressRequested sets value of ShippingAddressRequested conditional field.
func (b *BotInlineMessageMediaInvoice) SetShippingAddressRequested(value bool) {
if value {
b.Flags.Set(1)
b.ShippingAddressRequested = true
} else {
b.Flags.Unset(1)
b.ShippingAddressRequested = false
}
}
// GetShippingAddressRequested returns value of ShippingAddressRequested conditional field.
func (b *BotInlineMessageMediaInvoice) GetShippingAddressRequested() (value bool) {
if b == nil {
return
}
return b.Flags.Has(1)
}
// SetTest sets value of Test conditional field.
func (b *BotInlineMessageMediaInvoice) SetTest(value bool) {
if value {
b.Flags.Set(3)
b.Test = true
} else {
b.Flags.Unset(3)
b.Test = false
}
}
// GetTest returns value of Test conditional field.
func (b *BotInlineMessageMediaInvoice) GetTest() (value bool) {
if b == nil {
return
}
return b.Flags.Has(3)
}
// GetTitle returns value of Title field.
func (b *BotInlineMessageMediaInvoice) GetTitle() (value string) {
if b == nil {
return
}
return b.Title
}
// GetDescription returns value of Description field.
func (b *BotInlineMessageMediaInvoice) GetDescription() (value string) {
if b == nil {
return
}
return b.Description
}
// SetPhoto sets value of Photo conditional field.
func (b *BotInlineMessageMediaInvoice) SetPhoto(value WebDocumentClass) {
b.Flags.Set(0)
b.Photo = value
}
// GetPhoto returns value of Photo conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaInvoice) GetPhoto() (value WebDocumentClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(0) {
return value, false
}
return b.Photo, true
}
// GetCurrency returns value of Currency field.
func (b *BotInlineMessageMediaInvoice) GetCurrency() (value string) {
if b == nil {
return
}
return b.Currency
}
// GetTotalAmount returns value of TotalAmount field.
func (b *BotInlineMessageMediaInvoice) GetTotalAmount() (value int64) {
if b == nil {
return
}
return b.TotalAmount
}
// SetReplyMarkup sets value of ReplyMarkup conditional field.
func (b *BotInlineMessageMediaInvoice) SetReplyMarkup(value ReplyMarkupClass) {
b.Flags.Set(2)
b.ReplyMarkup = value
}
// GetReplyMarkup returns value of ReplyMarkup conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaInvoice) GetReplyMarkup() (value ReplyMarkupClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(2) {
return value, false
}
return b.ReplyMarkup, true
}
// BotInlineMessageMediaWebPage represents TL type `botInlineMessageMediaWebPage#809ad9a6`.
// Specifies options that must be used to generate the link preview for the message, or
// even a standalone link preview without an attached message.
//
// See https://core.telegram.org/constructor/botInlineMessageMediaWebPage for reference.
type BotInlineMessageMediaWebPage struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// If set, any eventual webpage preview will be shown on top of the message instead of at
// the bottom.
InvertMedia bool
// 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 set, indicates that the URL used for the webpage preview was specified manually
// using inputMediaWebPage¹, and may not be related to any of the URLs specified in the
// message.
//
// Links:
// 1) https://core.telegram.org/constructor/inputMediaWebPage
Manual bool
// If set, the link can be opened directly without user confirmation.
Safe bool
// The message, can be empty.
Message string
// Message entities for styled text¹
//
// Links:
// 1) https://core.telegram.org/api/entities
//
// Use SetEntities and GetEntities helpers.
Entities []MessageEntityClass
// The URL to use for the link preview.
URL string
// Reply markup for sending bot buttons
//
// Use SetReplyMarkup and GetReplyMarkup helpers.
ReplyMarkup ReplyMarkupClass
}
// BotInlineMessageMediaWebPageTypeID is TL type id of BotInlineMessageMediaWebPage.
const BotInlineMessageMediaWebPageTypeID = 0x809ad9a6
// construct implements constructor of BotInlineMessageClass.
func (b BotInlineMessageMediaWebPage) construct() BotInlineMessageClass { return &b }
// Ensuring interfaces in compile-time for BotInlineMessageMediaWebPage.
var (
_ bin.Encoder = &BotInlineMessageMediaWebPage{}
_ bin.Decoder = &BotInlineMessageMediaWebPage{}
_ bin.BareEncoder = &BotInlineMessageMediaWebPage{}
_ bin.BareDecoder = &BotInlineMessageMediaWebPage{}
_ BotInlineMessageClass = &BotInlineMessageMediaWebPage{}
)
func (b *BotInlineMessageMediaWebPage) Zero() bool {
if b == nil {
return true
}
if !(b.Flags.Zero()) {
return false
}
if !(b.InvertMedia == false) {
return false
}
if !(b.ForceLargeMedia == false) {
return false
}
if !(b.ForceSmallMedia == false) {
return false
}
if !(b.Manual == false) {
return false
}
if !(b.Safe == false) {
return false
}
if !(b.Message == "") {
return false
}
if !(b.Entities == nil) {
return false
}
if !(b.URL == "") {
return false
}
if !(b.ReplyMarkup == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (b *BotInlineMessageMediaWebPage) String() string {
if b == nil {
return "BotInlineMessageMediaWebPage(nil)"
}
type Alias BotInlineMessageMediaWebPage
return fmt.Sprintf("BotInlineMessageMediaWebPage%+v", Alias(*b))
}
// FillFrom fills BotInlineMessageMediaWebPage from given interface.
func (b *BotInlineMessageMediaWebPage) FillFrom(from interface {
GetInvertMedia() (value bool)
GetForceLargeMedia() (value bool)
GetForceSmallMedia() (value bool)
GetManual() (value bool)
GetSafe() (value bool)
GetMessage() (value string)
GetEntities() (value []MessageEntityClass, ok bool)
GetURL() (value string)
GetReplyMarkup() (value ReplyMarkupClass, ok bool)
}) {
b.InvertMedia = from.GetInvertMedia()
b.ForceLargeMedia = from.GetForceLargeMedia()
b.ForceSmallMedia = from.GetForceSmallMedia()
b.Manual = from.GetManual()
b.Safe = from.GetSafe()
b.Message = from.GetMessage()
if val, ok := from.GetEntities(); ok {
b.Entities = val
}
b.URL = from.GetURL()
if val, ok := from.GetReplyMarkup(); ok {
b.ReplyMarkup = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*BotInlineMessageMediaWebPage) TypeID() uint32 {
return BotInlineMessageMediaWebPageTypeID
}
// TypeName returns name of type in TL schema.
func (*BotInlineMessageMediaWebPage) TypeName() string {
return "botInlineMessageMediaWebPage"
}
// TypeInfo returns info about TL type.
func (b *BotInlineMessageMediaWebPage) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "botInlineMessageMediaWebPage",
ID: BotInlineMessageMediaWebPageTypeID,
}
if b == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "InvertMedia",
SchemaName: "invert_media",
Null: !b.Flags.Has(3),
},
{
Name: "ForceLargeMedia",
SchemaName: "force_large_media",
Null: !b.Flags.Has(4),
},
{
Name: "ForceSmallMedia",
SchemaName: "force_small_media",
Null: !b.Flags.Has(5),
},
{
Name: "Manual",
SchemaName: "manual",
Null: !b.Flags.Has(7),
},
{
Name: "Safe",
SchemaName: "safe",
Null: !b.Flags.Has(8),
},
{
Name: "Message",
SchemaName: "message",
},
{
Name: "Entities",
SchemaName: "entities",
Null: !b.Flags.Has(1),
},
{
Name: "URL",
SchemaName: "url",
},
{
Name: "ReplyMarkup",
SchemaName: "reply_markup",
Null: !b.Flags.Has(2),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (b *BotInlineMessageMediaWebPage) SetFlags() {
if !(b.InvertMedia == false) {
b.Flags.Set(3)
}
if !(b.ForceLargeMedia == false) {
b.Flags.Set(4)
}
if !(b.ForceSmallMedia == false) {
b.Flags.Set(5)
}
if !(b.Manual == false) {
b.Flags.Set(7)
}
if !(b.Safe == false) {
b.Flags.Set(8)
}
if !(b.Entities == nil) {
b.Flags.Set(1)
}
if !(b.ReplyMarkup == nil) {
b.Flags.Set(2)
}
}
// Encode implements bin.Encoder.
func (b *BotInlineMessageMediaWebPage) Encode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaWebPage#809ad9a6 as nil")
}
buf.PutID(BotInlineMessageMediaWebPageTypeID)
return b.EncodeBare(buf)
}
// EncodeBare implements bin.BareEncoder.
func (b *BotInlineMessageMediaWebPage) EncodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't encode botInlineMessageMediaWebPage#809ad9a6 as nil")
}
b.SetFlags()
if err := b.Flags.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaWebPage#809ad9a6: field flags: %w", err)
}
buf.PutString(b.Message)
if b.Flags.Has(1) {
buf.PutVectorHeader(len(b.Entities))
for idx, v := range b.Entities {
if v == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaWebPage#809ad9a6: field entities element with index %d is nil", idx)
}
if err := v.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaWebPage#809ad9a6: field entities element with index %d: %w", idx, err)
}
}
}
buf.PutString(b.URL)
if b.Flags.Has(2) {
if b.ReplyMarkup == nil {
return fmt.Errorf("unable to encode botInlineMessageMediaWebPage#809ad9a6: field reply_markup is nil")
}
if err := b.ReplyMarkup.Encode(buf); err != nil {
return fmt.Errorf("unable to encode botInlineMessageMediaWebPage#809ad9a6: field reply_markup: %w", err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (b *BotInlineMessageMediaWebPage) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaWebPage#809ad9a6 to nil")
}
if err := buf.ConsumeID(BotInlineMessageMediaWebPageTypeID); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaWebPage#809ad9a6: %w", err)
}
return b.DecodeBare(buf)
}
// DecodeBare implements bin.BareDecoder.
func (b *BotInlineMessageMediaWebPage) DecodeBare(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("can't decode botInlineMessageMediaWebPage#809ad9a6 to nil")
}
{
if err := b.Flags.Decode(buf); err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaWebPage#809ad9a6: field flags: %w", err)
}
}
b.InvertMedia = b.Flags.Has(3)
b.ForceLargeMedia = b.Flags.Has(4)
b.ForceSmallMedia = b.Flags.Has(5)
b.Manual = b.Flags.Has(7)
b.Safe = b.Flags.Has(8)
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaWebPage#809ad9a6: field message: %w", err)
}
b.Message = value
}
if b.Flags.Has(1) {
headerLen, err := buf.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaWebPage#809ad9a6: field entities: %w", err)
}
if headerLen > 0 {
b.Entities = make([]MessageEntityClass, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
value, err := DecodeMessageEntity(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaWebPage#809ad9a6: field entities: %w", err)
}
b.Entities = append(b.Entities, value)
}
}
{
value, err := buf.String()
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaWebPage#809ad9a6: field url: %w", err)
}
b.URL = value
}
if b.Flags.Has(2) {
value, err := DecodeReplyMarkup(buf)
if err != nil {
return fmt.Errorf("unable to decode botInlineMessageMediaWebPage#809ad9a6: field reply_markup: %w", err)
}
b.ReplyMarkup = value
}
return nil
}
// SetInvertMedia sets value of InvertMedia conditional field.
func (b *BotInlineMessageMediaWebPage) SetInvertMedia(value bool) {
if value {
b.Flags.Set(3)
b.InvertMedia = true
} else {
b.Flags.Unset(3)
b.InvertMedia = false
}
}
// GetInvertMedia returns value of InvertMedia conditional field.
func (b *BotInlineMessageMediaWebPage) GetInvertMedia() (value bool) {
if b == nil {
return
}
return b.Flags.Has(3)
}
// SetForceLargeMedia sets value of ForceLargeMedia conditional field.
func (b *BotInlineMessageMediaWebPage) SetForceLargeMedia(value bool) {
if value {
b.Flags.Set(4)
b.ForceLargeMedia = true
} else {
b.Flags.Unset(4)
b.ForceLargeMedia = false
}
}
// GetForceLargeMedia returns value of ForceLargeMedia conditional field.
func (b *BotInlineMessageMediaWebPage) GetForceLargeMedia() (value bool) {
if b == nil {
return
}
return b.Flags.Has(4)
}
// SetForceSmallMedia sets value of ForceSmallMedia conditional field.
func (b *BotInlineMessageMediaWebPage) SetForceSmallMedia(value bool) {
if value {
b.Flags.Set(5)
b.ForceSmallMedia = true
} else {
b.Flags.Unset(5)
b.ForceSmallMedia = false
}
}
// GetForceSmallMedia returns value of ForceSmallMedia conditional field.
func (b *BotInlineMessageMediaWebPage) GetForceSmallMedia() (value bool) {
if b == nil {
return
}
return b.Flags.Has(5)
}
// SetManual sets value of Manual conditional field.
func (b *BotInlineMessageMediaWebPage) SetManual(value bool) {
if value {
b.Flags.Set(7)
b.Manual = true
} else {
b.Flags.Unset(7)
b.Manual = false
}
}
// GetManual returns value of Manual conditional field.
func (b *BotInlineMessageMediaWebPage) GetManual() (value bool) {
if b == nil {
return
}
return b.Flags.Has(7)
}
// SetSafe sets value of Safe conditional field.
func (b *BotInlineMessageMediaWebPage) SetSafe(value bool) {
if value {
b.Flags.Set(8)
b.Safe = true
} else {
b.Flags.Unset(8)
b.Safe = false
}
}
// GetSafe returns value of Safe conditional field.
func (b *BotInlineMessageMediaWebPage) GetSafe() (value bool) {
if b == nil {
return
}
return b.Flags.Has(8)
}
// GetMessage returns value of Message field.
func (b *BotInlineMessageMediaWebPage) GetMessage() (value string) {
if b == nil {
return
}
return b.Message
}
// SetEntities sets value of Entities conditional field.
func (b *BotInlineMessageMediaWebPage) SetEntities(value []MessageEntityClass) {
b.Flags.Set(1)
b.Entities = value
}
// GetEntities returns value of Entities conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaWebPage) GetEntities() (value []MessageEntityClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(1) {
return value, false
}
return b.Entities, true
}
// GetURL returns value of URL field.
func (b *BotInlineMessageMediaWebPage) GetURL() (value string) {
if b == nil {
return
}
return b.URL
}
// SetReplyMarkup sets value of ReplyMarkup conditional field.
func (b *BotInlineMessageMediaWebPage) SetReplyMarkup(value ReplyMarkupClass) {
b.Flags.Set(2)
b.ReplyMarkup = value
}
// GetReplyMarkup returns value of ReplyMarkup conditional field and
// boolean which is true if field was set.
func (b *BotInlineMessageMediaWebPage) GetReplyMarkup() (value ReplyMarkupClass, ok bool) {
if b == nil {
return
}
if !b.Flags.Has(2) {
return value, false
}
return b.ReplyMarkup, true
}
// MapEntities returns field Entities wrapped in MessageEntityClassArray helper.
func (b *BotInlineMessageMediaWebPage) MapEntities() (value MessageEntityClassArray, ok bool) {
if !b.Flags.Has(1) {
return value, false
}
return MessageEntityClassArray(b.Entities), true
}
// BotInlineMessageClassName is schema name of BotInlineMessageClass.
const BotInlineMessageClassName = "BotInlineMessage"
// BotInlineMessageClass represents BotInlineMessage generic type.
//
// See https://core.telegram.org/type/BotInlineMessage for reference.
//
// Example:
//
// g, err := tg.DecodeBotInlineMessage(buf)
// if err != nil {
// panic(err)
// }
// switch v := g.(type) {
// case *tg.BotInlineMessageMediaAuto: // botInlineMessageMediaAuto#764cf810
// case *tg.BotInlineMessageText: // botInlineMessageText#8c7f65e2
// case *tg.BotInlineMessageMediaGeo: // botInlineMessageMediaGeo#51846fd
// case *tg.BotInlineMessageMediaVenue: // botInlineMessageMediaVenue#8a86659c
// case *tg.BotInlineMessageMediaContact: // botInlineMessageMediaContact#18d1cdc2
// case *tg.BotInlineMessageMediaInvoice: // botInlineMessageMediaInvoice#354a9b09
// case *tg.BotInlineMessageMediaWebPage: // botInlineMessageMediaWebPage#809ad9a6
// default: panic(v)
// }
type BotInlineMessageClass interface {
bin.Encoder
bin.Decoder
bin.BareEncoder
bin.BareDecoder
construct() BotInlineMessageClass
// 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
// Inline keyboard
GetReplyMarkup() (value ReplyMarkupClass, ok bool)
}
// DecodeBotInlineMessage implements binary de-serialization for BotInlineMessageClass.
func DecodeBotInlineMessage(buf *bin.Buffer) (BotInlineMessageClass, error) {
id, err := buf.PeekID()
if err != nil {
return nil, err
}
switch id {
case BotInlineMessageMediaAutoTypeID:
// Decoding botInlineMessageMediaAuto#764cf810.
v := BotInlineMessageMediaAuto{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode BotInlineMessageClass: %w", err)
}
return &v, nil
case BotInlineMessageTextTypeID:
// Decoding botInlineMessageText#8c7f65e2.
v := BotInlineMessageText{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode BotInlineMessageClass: %w", err)
}
return &v, nil
case BotInlineMessageMediaGeoTypeID:
// Decoding botInlineMessageMediaGeo#51846fd.
v := BotInlineMessageMediaGeo{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode BotInlineMessageClass: %w", err)
}
return &v, nil
case BotInlineMessageMediaVenueTypeID:
// Decoding botInlineMessageMediaVenue#8a86659c.
v := BotInlineMessageMediaVenue{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode BotInlineMessageClass: %w", err)
}
return &v, nil
case BotInlineMessageMediaContactTypeID:
// Decoding botInlineMessageMediaContact#18d1cdc2.
v := BotInlineMessageMediaContact{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode BotInlineMessageClass: %w", err)
}
return &v, nil
case BotInlineMessageMediaInvoiceTypeID:
// Decoding botInlineMessageMediaInvoice#354a9b09.
v := BotInlineMessageMediaInvoice{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode BotInlineMessageClass: %w", err)
}
return &v, nil
case BotInlineMessageMediaWebPageTypeID:
// Decoding botInlineMessageMediaWebPage#809ad9a6.
v := BotInlineMessageMediaWebPage{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode BotInlineMessageClass: %w", err)
}
return &v, nil
default:
return nil, fmt.Errorf("unable to decode BotInlineMessageClass: %w", bin.NewUnexpectedID(id))
}
}
// BotInlineMessage boxes the BotInlineMessageClass providing a helper.
type BotInlineMessageBox struct {
BotInlineMessage BotInlineMessageClass
}
// Decode implements bin.Decoder for BotInlineMessageBox.
func (b *BotInlineMessageBox) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("unable to decode BotInlineMessageBox to nil")
}
v, err := DecodeBotInlineMessage(buf)
if err != nil {
return fmt.Errorf("unable to decode boxed value: %w", err)
}
b.BotInlineMessage = v
return nil
}
// Encode implements bin.Encode for BotInlineMessageBox.
func (b *BotInlineMessageBox) Encode(buf *bin.Buffer) error {
if b == nil || b.BotInlineMessage == nil {
return fmt.Errorf("unable to encode BotInlineMessageClass as nil")
}
return b.BotInlineMessage.Encode(buf)
}