7a04f298d2
- update to latest telegram layer - remove some references to fields in tg.Entities that don't exist in the schema - originally added here: https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e - referenced here - https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3 - https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
2770 lines
72 KiB
Go
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)
|
|
}
|