You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2919 lines
64 KiB

// Code generated by gotdgen, DO NOT EDIT.
package tg
import (
"context"
"errors"
"fmt"
"sort"
"strings"
"go.uber.org/multierr"
"github.com/gotd/td/bin"
"github.com/gotd/td/tdjson"
"github.com/gotd/td/tdp"
"github.com/gotd/td/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{}
)
// ChatEmpty represents TL type `chatEmpty#29562865`.
// Empty constructor, group doesn't exist
//
// See https://core.telegram.org/constructor/chatEmpty for reference.
type ChatEmpty struct {
// Group identifier
ID int64
}
// ChatEmptyTypeID is TL type id of ChatEmpty.
const ChatEmptyTypeID = 0x29562865
// construct implements constructor of ChatClass.
func (c ChatEmpty) construct() ChatClass { return &c }
// Ensuring interfaces in compile-time for ChatEmpty.
var (
_ bin.Encoder = &ChatEmpty{}
_ bin.Decoder = &ChatEmpty{}
_ bin.BareEncoder = &ChatEmpty{}
_ bin.BareDecoder = &ChatEmpty{}
_ ChatClass = &ChatEmpty{}
)
func (c *ChatEmpty) Zero() bool {
if c == nil {
return true
}
if !(c.ID == 0) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChatEmpty) String() string {
if c == nil {
return "ChatEmpty(nil)"
}
type Alias ChatEmpty
return fmt.Sprintf("ChatEmpty%+v", Alias(*c))
}
// FillFrom fills ChatEmpty from given interface.
func (c *ChatEmpty) FillFrom(from interface {
GetID() (value int64)
}) {
c.ID = from.GetID()
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChatEmpty) TypeID() uint32 {
return ChatEmptyTypeID
}
// TypeName returns name of type in TL schema.
func (*ChatEmpty) TypeName() string {
return "chatEmpty"
}
// TypeInfo returns info about TL type.
func (c *ChatEmpty) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "chatEmpty",
ID: ChatEmptyTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "ID",
SchemaName: "id",
},
}
return typ
}
// Encode implements bin.Encoder.
func (c *ChatEmpty) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode chatEmpty#29562865 as nil")
}
b.PutID(ChatEmptyTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChatEmpty) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode chatEmpty#29562865 as nil")
}
b.PutLong(c.ID)
return nil
}
// Decode implements bin.Decoder.
func (c *ChatEmpty) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode chatEmpty#29562865 to nil")
}
if err := b.ConsumeID(ChatEmptyTypeID); err != nil {
return fmt.Errorf("unable to decode chatEmpty#29562865: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChatEmpty) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode chatEmpty#29562865 to nil")
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode chatEmpty#29562865: field id: %w", err)
}
c.ID = value
}
return nil
}
// GetID returns value of ID field.
func (c *ChatEmpty) GetID() (value int64) {
if c == nil {
return
}
return c.ID
}
// Chat represents TL type `chat#41cbf256`.
// Info about a group
//
// See https://core.telegram.org/constructor/chat for reference.
type Chat struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Whether the current user is the creator of the group
Creator bool
// Whether the current user was kicked from the group
Kicked bool
// Whether the current user has left the group
Left bool
// Whether the group was migrated¹
//
// Links:
// 1) https://core.telegram.org/api/channel
Deactivated bool
// Whether a group call is currently active
CallActive bool
// Whether there's anyone in the group call
CallNotEmpty bool
// Noforwards field of Chat.
Noforwards bool
// ID of the group
ID int64
// Title
Title string
// Chat photo
Photo ChatPhotoClass
// Participant count
ParticipantsCount int
// Date of creation of the group
Date int
// Used in basic groups to reorder updates and make sure that all of them were received.
Version int
// Means this chat was upgraded¹ to a supergroup
//
// Links:
// 1) https://core.telegram.org/api/channel
//
// Use SetMigratedTo and GetMigratedTo helpers.
MigratedTo InputChannelClass
// Admin rights¹ of the user in the group
//
// Links:
// 1) https://core.telegram.org/api/rights
//
// Use SetAdminRights and GetAdminRights helpers.
AdminRights ChatAdminRights
// Default banned rights¹ of all users in the group
//
// Links:
// 1) https://core.telegram.org/api/rights
//
// Use SetDefaultBannedRights and GetDefaultBannedRights helpers.
DefaultBannedRights ChatBannedRights
}
// ChatTypeID is TL type id of Chat.
const ChatTypeID = 0x41cbf256
// construct implements constructor of ChatClass.
func (c Chat) construct() ChatClass { return &c }
// Ensuring interfaces in compile-time for Chat.
var (
_ bin.Encoder = &Chat{}
_ bin.Decoder = &Chat{}
_ bin.BareEncoder = &Chat{}
_ bin.BareDecoder = &Chat{}
_ ChatClass = &Chat{}
)
func (c *Chat) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.Creator == false) {
return false
}
if !(c.Kicked == false) {
return false
}
if !(c.Left == false) {
return false
}
if !(c.Deactivated == false) {
return false
}
if !(c.CallActive == false) {
return false
}
if !(c.CallNotEmpty == false) {
return false
}
if !(c.Noforwards == false) {
return false
}
if !(c.ID == 0) {
return false
}
if !(c.Title == "") {
return false
}
if !(c.Photo == nil) {
return false
}
if !(c.ParticipantsCount == 0) {
return false
}
if !(c.Date == 0) {
return false
}
if !(c.Version == 0) {
return false
}
if !(c.MigratedTo == nil) {
return false
}
if !(c.AdminRights.Zero()) {
return false
}
if !(c.DefaultBannedRights.Zero()) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *Chat) String() string {
if c == nil {
return "Chat(nil)"
}
type Alias Chat
return fmt.Sprintf("Chat%+v", Alias(*c))
}
// FillFrom fills Chat from given interface.
func (c *Chat) FillFrom(from interface {
GetCreator() (value bool)
GetKicked() (value bool)
GetLeft() (value bool)
GetDeactivated() (value bool)
GetCallActive() (value bool)
GetCallNotEmpty() (value bool)
GetNoforwards() (value bool)
GetID() (value int64)
GetTitle() (value string)
GetPhoto() (value ChatPhotoClass)
GetParticipantsCount() (value int)
GetDate() (value int)
GetVersion() (value int)
GetMigratedTo() (value InputChannelClass, ok bool)
GetAdminRights() (value ChatAdminRights, ok bool)
GetDefaultBannedRights() (value ChatBannedRights, ok bool)
}) {
c.Creator = from.GetCreator()
c.Kicked = from.GetKicked()
c.Left = from.GetLeft()
c.Deactivated = from.GetDeactivated()
c.CallActive = from.GetCallActive()
c.CallNotEmpty = from.GetCallNotEmpty()
c.Noforwards = from.GetNoforwards()
c.ID = from.GetID()
c.Title = from.GetTitle()
c.Photo = from.GetPhoto()
c.ParticipantsCount = from.GetParticipantsCount()
c.Date = from.GetDate()
c.Version = from.GetVersion()
if val, ok := from.GetMigratedTo(); ok {
c.MigratedTo = val
}
if val, ok := from.GetAdminRights(); ok {
c.AdminRights = val
}
if val, ok := from.GetDefaultBannedRights(); ok {
c.DefaultBannedRights = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*Chat) TypeID() uint32 {
return ChatTypeID
}
// TypeName returns name of type in TL schema.
func (*Chat) TypeName() string {
return "chat"
}
// TypeInfo returns info about TL type.
func (c *Chat) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "chat",
ID: ChatTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "Creator",
SchemaName: "creator",
Null: !c.Flags.Has(0),
},
{
Name: "Kicked",
SchemaName: "kicked",
Null: !c.Flags.Has(1),
},
{
Name: "Left",
SchemaName: "left",
Null: !c.Flags.Has(2),
},
{
Name: "Deactivated",
SchemaName: "deactivated",
Null: !c.Flags.Has(5),
},
{
Name: "CallActive",
SchemaName: "call_active",
Null: !c.Flags.Has(23),
},
{
Name: "CallNotEmpty",
SchemaName: "call_not_empty",
Null: !c.Flags.Has(24),
},
{
Name: "Noforwards",
SchemaName: "noforwards",
Null: !c.Flags.Has(25),
},
{
Name: "ID",
SchemaName: "id",
},
{
Name: "Title",
SchemaName: "title",
},
{
Name: "Photo",
SchemaName: "photo",
},
{
Name: "ParticipantsCount",
SchemaName: "participants_count",
},
{
Name: "Date",
SchemaName: "date",
},
{
Name: "Version",
SchemaName: "version",
},
{
Name: "MigratedTo",
SchemaName: "migrated_to",
Null: !c.Flags.Has(6),
},
{
Name: "AdminRights",
SchemaName: "admin_rights",
Null: !c.Flags.Has(14),
},
{
Name: "DefaultBannedRights",
SchemaName: "default_banned_rights",
Null: !c.Flags.Has(18),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *Chat) SetFlags() {
if !(c.Creator == false) {
c.Flags.Set(0)
}
if !(c.Kicked == false) {
c.Flags.Set(1)
}
if !(c.Left == false) {
c.Flags.Set(2)
}
if !(c.Deactivated == false) {
c.Flags.Set(5)
}
if !(c.CallActive == false) {
c.Flags.Set(23)
}
if !(c.CallNotEmpty == false) {
c.Flags.Set(24)
}
if !(c.Noforwards == false) {
c.Flags.Set(25)
}
if !(c.MigratedTo == nil) {
c.Flags.Set(6)
}
if !(c.AdminRights.Zero()) {
c.Flags.Set(14)
}
if !(c.DefaultBannedRights.Zero()) {
c.Flags.Set(18)
}
}
// Encode implements bin.Encoder.
func (c *Chat) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode chat#41cbf256 as nil")
}
b.PutID(ChatTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *Chat) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode chat#41cbf256 as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode chat#41cbf256: field flags: %w", err)
}
b.PutLong(c.ID)
b.PutString(c.Title)
if c.Photo == nil {
return fmt.Errorf("unable to encode chat#41cbf256: field photo is nil")
}
if err := c.Photo.Encode(b); err != nil {
return fmt.Errorf("unable to encode chat#41cbf256: field photo: %w", err)
}
b.PutInt(c.ParticipantsCount)
b.PutInt(c.Date)
b.PutInt(c.Version)
if c.Flags.Has(6) {
if c.MigratedTo == nil {
return fmt.Errorf("unable to encode chat#41cbf256: field migrated_to is nil")
}
if err := c.MigratedTo.Encode(b); err != nil {
return fmt.Errorf("unable to encode chat#41cbf256: field migrated_to: %w", err)
}
}
if c.Flags.Has(14) {
if err := c.AdminRights.Encode(b); err != nil {
return fmt.Errorf("unable to encode chat#41cbf256: field admin_rights: %w", err)
}
}
if c.Flags.Has(18) {
if err := c.DefaultBannedRights.Encode(b); err != nil {
return fmt.Errorf("unable to encode chat#41cbf256: field default_banned_rights: %w", err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (c *Chat) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode chat#41cbf256 to nil")
}
if err := b.ConsumeID(ChatTypeID); err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *Chat) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode chat#41cbf256 to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field flags: %w", err)
}
}
c.Creator = c.Flags.Has(0)
c.Kicked = c.Flags.Has(1)
c.Left = c.Flags.Has(2)
c.Deactivated = c.Flags.Has(5)
c.CallActive = c.Flags.Has(23)
c.CallNotEmpty = c.Flags.Has(24)
c.Noforwards = c.Flags.Has(25)
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field id: %w", err)
}
c.ID = value
}
{
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field title: %w", err)
}
c.Title = value
}
{
value, err := DecodeChatPhoto(b)
if err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field photo: %w", err)
}
c.Photo = value
}
{
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field participants_count: %w", err)
}
c.ParticipantsCount = value
}
{
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field date: %w", err)
}
c.Date = value
}
{
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field version: %w", err)
}
c.Version = value
}
if c.Flags.Has(6) {
value, err := DecodeInputChannel(b)
if err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field migrated_to: %w", err)
}
c.MigratedTo = value
}
if c.Flags.Has(14) {
if err := c.AdminRights.Decode(b); err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field admin_rights: %w", err)
}
}
if c.Flags.Has(18) {
if err := c.DefaultBannedRights.Decode(b); err != nil {
return fmt.Errorf("unable to decode chat#41cbf256: field default_banned_rights: %w", err)
}
}
return nil
}
// SetCreator sets value of Creator conditional field.
func (c *Chat) SetCreator(value bool) {
if value {
c.Flags.Set(0)
c.Creator = true
} else {
c.Flags.Unset(0)
c.Creator = false
}
}
// GetCreator returns value of Creator conditional field.
func (c *Chat) GetCreator() (value bool) {
if c == nil {
return
}
return c.Flags.Has(0)
}
// SetKicked sets value of Kicked conditional field.
func (c *Chat) SetKicked(value bool) {
if value {
c.Flags.Set(1)
c.Kicked = true
} else {
c.Flags.Unset(1)
c.Kicked = false
}
}
// GetKicked returns value of Kicked conditional field.
func (c *Chat) GetKicked() (value bool) {
if c == nil {
return
}
return c.Flags.Has(1)
}
// SetLeft sets value of Left conditional field.
func (c *Chat) SetLeft(value bool) {
if value {
c.Flags.Set(2)
c.Left = true
} else {
c.Flags.Unset(2)
c.Left = false
}
}
// GetLeft returns value of Left conditional field.
func (c *Chat) GetLeft() (value bool) {
if c == nil {
return
}
return c.Flags.Has(2)
}
// SetDeactivated sets value of Deactivated conditional field.
func (c *Chat) SetDeactivated(value bool) {
if value {
c.Flags.Set(5)
c.Deactivated = true
} else {
c.Flags.Unset(5)
c.Deactivated = false
}
}
// GetDeactivated returns value of Deactivated conditional field.
func (c *Chat) GetDeactivated() (value bool) {
if c == nil {
return
}
return c.Flags.Has(5)
}
// SetCallActive sets value of CallActive conditional field.
func (c *Chat) SetCallActive(value bool) {
if value {
c.Flags.Set(23)
c.CallActive = true
} else {
c.Flags.Unset(23)
c.CallActive = false
}
}
// GetCallActive returns value of CallActive conditional field.
func (c *Chat) GetCallActive() (value bool) {
if c == nil {
return
}
return c.Flags.Has(23)
}
// SetCallNotEmpty sets value of CallNotEmpty conditional field.
func (c *Chat) SetCallNotEmpty(value bool) {
if value {
c.Flags.Set(24)
c.CallNotEmpty = true
} else {
c.Flags.Unset(24)
c.CallNotEmpty = false
}
}
// GetCallNotEmpty returns value of CallNotEmpty conditional field.
func (c *Chat) GetCallNotEmpty() (value bool) {
if c == nil {
return
}
return c.Flags.Has(24)
}
// SetNoforwards sets value of Noforwards conditional field.
func (c *Chat) SetNoforwards(value bool) {
if value {
c.Flags.Set(25)
c.Noforwards = true
} else {
c.Flags.Unset(25)
c.Noforwards = false
}
}
// GetNoforwards returns value of Noforwards conditional field.
func (c *Chat) GetNoforwards() (value bool) {
if c == nil {
return
}
return c.Flags.Has(25)
}
// GetID returns value of ID field.
func (c *Chat) GetID() (value int64) {
if c == nil {
return
}
return c.ID
}
// GetTitle returns value of Title field.
func (c *Chat) GetTitle() (value string) {
if c == nil {
return
}
return c.Title
}
// GetPhoto returns value of Photo field.
func (c *Chat) GetPhoto() (value ChatPhotoClass) {
if c == nil {
return
}
return c.Photo
}
// GetParticipantsCount returns value of ParticipantsCount field.
func (c *Chat) GetParticipantsCount() (value int) {
if c == nil {
return
}
return c.ParticipantsCount
}
// GetDate returns value of Date field.
func (c *Chat) GetDate() (value int) {
if c == nil {
return
}
return c.Date
}
// GetVersion returns value of Version field.
func (c *Chat) GetVersion() (value int) {
if c == nil {
return
}
return c.Version
}
// SetMigratedTo sets value of MigratedTo conditional field.
func (c *Chat) SetMigratedTo(value InputChannelClass) {
c.Flags.Set(6)
c.MigratedTo = value
}
// GetMigratedTo returns value of MigratedTo conditional field and
// boolean which is true if field was set.
func (c *Chat) GetMigratedTo() (value InputChannelClass, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(6) {
return value, false
}
return c.MigratedTo, true
}
// SetAdminRights sets value of AdminRights conditional field.
func (c *Chat) SetAdminRights(value ChatAdminRights) {
c.Flags.Set(14)
c.AdminRights = value
}
// GetAdminRights returns value of AdminRights conditional field and
// boolean which is true if field was set.
func (c *Chat) GetAdminRights() (value ChatAdminRights, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(14) {
return value, false
}
return c.AdminRights, true
}
// SetDefaultBannedRights sets value of DefaultBannedRights conditional field.
func (c *Chat) SetDefaultBannedRights(value ChatBannedRights) {
c.Flags.Set(18)
c.DefaultBannedRights = value
}
// GetDefaultBannedRights returns value of DefaultBannedRights conditional field and
// boolean which is true if field was set.
func (c *Chat) GetDefaultBannedRights() (value ChatBannedRights, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(18) {
return value, false
}
return c.DefaultBannedRights, true
}
// ChatForbidden represents TL type `chatForbidden#6592a1a7`.
// A group to which the user has no access. E.g., because the user was kicked from the
// group.
//
// See https://core.telegram.org/constructor/chatForbidden for reference.
type ChatForbidden struct {
// User identifier
ID int64
// Group name
Title string
}
// ChatForbiddenTypeID is TL type id of ChatForbidden.
const ChatForbiddenTypeID = 0x6592a1a7
// construct implements constructor of ChatClass.
func (c ChatForbidden) construct() ChatClass { return &c }
// Ensuring interfaces in compile-time for ChatForbidden.
var (
_ bin.Encoder = &ChatForbidden{}
_ bin.Decoder = &ChatForbidden{}
_ bin.BareEncoder = &ChatForbidden{}
_ bin.BareDecoder = &ChatForbidden{}
_ ChatClass = &ChatForbidden{}
)
func (c *ChatForbidden) Zero() bool {
if c == nil {
return true
}
if !(c.ID == 0) {
return false
}
if !(c.Title == "") {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChatForbidden) String() string {
if c == nil {
return "ChatForbidden(nil)"
}
type Alias ChatForbidden
return fmt.Sprintf("ChatForbidden%+v", Alias(*c))
}
// FillFrom fills ChatForbidden from given interface.
func (c *ChatForbidden) FillFrom(from interface {
GetID() (value int64)
GetTitle() (value string)
}) {
c.ID = from.GetID()
c.Title = from.GetTitle()
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChatForbidden) TypeID() uint32 {
return ChatForbiddenTypeID
}
// TypeName returns name of type in TL schema.
func (*ChatForbidden) TypeName() string {
return "chatForbidden"
}
// TypeInfo returns info about TL type.
func (c *ChatForbidden) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "chatForbidden",
ID: ChatForbiddenTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "ID",
SchemaName: "id",
},
{
Name: "Title",
SchemaName: "title",
},
}
return typ
}
// Encode implements bin.Encoder.
func (c *ChatForbidden) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode chatForbidden#6592a1a7 as nil")
}
b.PutID(ChatForbiddenTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChatForbidden) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode chatForbidden#6592a1a7 as nil")
}
b.PutLong(c.ID)
b.PutString(c.Title)
return nil
}
// Decode implements bin.Decoder.
func (c *ChatForbidden) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode chatForbidden#6592a1a7 to nil")
}
if err := b.ConsumeID(ChatForbiddenTypeID); err != nil {
return fmt.Errorf("unable to decode chatForbidden#6592a1a7: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChatForbidden) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode chatForbidden#6592a1a7 to nil")
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode chatForbidden#6592a1a7: field id: %w", err)
}
c.ID = value
}
{
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode chatForbidden#6592a1a7: field title: %w", err)
}
c.Title = value
}
return nil
}
// GetID returns value of ID field.
func (c *ChatForbidden) GetID() (value int64) {
if c == nil {
return
}
return c.ID
}
// GetTitle returns value of Title field.
func (c *ChatForbidden) GetTitle() (value string) {
if c == nil {
return
}
return c.Title
}
// Channel represents TL type `channel#8261ac61`.
// Channel/supergroup info
//
// See https://core.telegram.org/constructor/channel for reference.
type Channel struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Whether the current user is the creator of this channel
Creator bool
// Whether the current user has left this channel
Left bool
// Is this a channel?
Broadcast bool
// Is this channel verified by telegram?
Verified bool
// Is this a supergroup?
Megagroup bool
// Whether viewing/writing in this channel for a reason (see restriction_reason
Restricted bool
// Whether signatures are enabled (channels)
Signatures bool
// See min¹
//
// Links:
// 1) https://core.telegram.org/api/min
Min bool
// This channel/supergroup is probably a scam
Scam bool
// Whether this channel has a private join link
HasLink bool
// Whether this chanel has a geoposition
HasGeo bool
// Whether slow mode is enabled for groups to prevent flood in chat
SlowmodeEnabled bool
// Whether a group call or livestream is currently active
CallActive bool
// Whether there's anyone in the group call or livestream
CallNotEmpty bool
// If set, this supergroup/channel¹ was reported by many users as a fake or scam: be
// careful when interacting with it.
//
// Links:
// 1) https://core.telegram.org/api/channel
Fake bool
// Whether this supergroup¹ is a gigagroup
//
// Links:
// 1) https://core.telegram.org/api/channel
Gigagroup bool
// Noforwards field of Channel.
Noforwards bool
// ID of the channel
ID int64
// Access hash
//
// Use SetAccessHash and GetAccessHash helpers.
AccessHash int64
// Title
Title string
// Username
//
// Use SetUsername and GetUsername helpers.
Username string
// Profile photo
Photo ChatPhotoClass
// Date when the user joined the supergroup/channel, or if the user isn't a member, its
// creation date
Date int
// Contains the reason why access to this channel must be restricted.
//
// Use SetRestrictionReason and GetRestrictionReason helpers.
RestrictionReason []RestrictionReason
// Admin rights of the user in this channel (see rights¹)
//
// Links:
// 1) https://core.telegram.org/api/rights
//
// Use SetAdminRights and GetAdminRights helpers.
AdminRights ChatAdminRights
// Banned rights of the user in this channel (see rights¹)
//
// Links:
// 1) https://core.telegram.org/api/rights
//
// Use SetBannedRights and GetBannedRights helpers.
BannedRights ChatBannedRights
// Default chat rights (see rights¹)
//
// Links:
// 1) https://core.telegram.org/api/rights
//
// Use SetDefaultBannedRights and GetDefaultBannedRights helpers.
DefaultBannedRights ChatBannedRights
// Participant count
//
// Use SetParticipantsCount and GetParticipantsCount helpers.
ParticipantsCount int
}
// ChannelTypeID is TL type id of Channel.
const ChannelTypeID = 0x8261ac61
// construct implements constructor of ChatClass.
func (c Channel) construct() ChatClass { return &c }
// Ensuring interfaces in compile-time for Channel.
var (
_ bin.Encoder = &Channel{}
_ bin.Decoder = &Channel{}
_ bin.BareEncoder = &Channel{}
_ bin.BareDecoder = &Channel{}
_ ChatClass = &Channel{}
)
func (c *Channel) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.Creator == false) {
return false
}
if !(c.Left == false) {
return false
}
if !(c.Broadcast == false) {
return false
}
if !(c.Verified == false) {
return false
}
if !(c.Megagroup == false) {
return false
}
if !(c.Restricted == false) {
return false
}
if !(c.Signatures == false) {
return false
}
if !(c.Min == false) {
return false
}
if !(c.Scam == false) {
return false
}
if !(c.HasLink == false) {
return false
}
if !(c.HasGeo == false) {
return false
}
if !(c.SlowmodeEnabled == false) {
return false
}
if !(c.CallActive == false) {
return false
}
if !(c.CallNotEmpty == false) {
return false
}
if !(c.Fake == false) {
return false
}
if !(c.Gigagroup == false) {
return false
}
if !(c.Noforwards == false) {
return false
}
if !(c.ID == 0) {
return false
}
if !(c.AccessHash == 0) {
return false
}
if !(c.Title == "") {
return false
}
if !(c.Username == "") {
return false
}
if !(c.Photo == nil) {
return false
}
if !(c.Date == 0) {
return false
}
if !(c.RestrictionReason == nil) {
return false
}
if !(c.AdminRights.Zero()) {
return false
}
if !(c.BannedRights.Zero()) {
return false
}
if !(c.DefaultBannedRights.Zero()) {
return false
}
if !(c.ParticipantsCount == 0) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *Channel) String() string {
if c == nil {
return "Channel(nil)"
}
type Alias Channel
return fmt.Sprintf("Channel%+v", Alias(*c))
}
// FillFrom fills Channel from given interface.
func (c *Channel) FillFrom(from interface {
GetCreator() (value bool)
GetLeft() (value bool)
GetBroadcast() (value bool)
GetVerified() (value bool)
GetMegagroup() (value bool)
GetRestricted() (value bool)
GetSignatures() (value bool)
GetMin() (value bool)
GetScam() (value bool)
GetHasLink() (value bool)
GetHasGeo() (value bool)
GetSlowmodeEnabled() (value bool)
GetCallActive() (value bool)
GetCallNotEmpty() (value bool)
GetFake() (value bool)
GetGigagroup() (value bool)
GetNoforwards() (value bool)
GetID() (value int64)
GetAccessHash() (value int64, ok bool)
GetTitle() (value string)
GetUsername() (value string, ok bool)
GetPhoto() (value ChatPhotoClass)
GetDate() (value int)
GetRestrictionReason() (value []RestrictionReason, ok bool)
GetAdminRights() (value ChatAdminRights, ok bool)
GetBannedRights() (value ChatBannedRights, ok bool)
GetDefaultBannedRights() (value ChatBannedRights, ok bool)
GetParticipantsCount() (value int, ok bool)
}) {
c.Creator = from.GetCreator()
c.Left = from.GetLeft()
c.Broadcast = from.GetBroadcast()
c.Verified = from.GetVerified()
c.Megagroup = from.GetMegagroup()
c.Restricted = from.GetRestricted()
c.Signatures = from.GetSignatures()
c.Min = from.GetMin()
c.Scam = from.GetScam()
c.HasLink = from.GetHasLink()
c.HasGeo = from.GetHasGeo()
c.SlowmodeEnabled = from.GetSlowmodeEnabled()
c.CallActive = from.GetCallActive()
c.CallNotEmpty = from.GetCallNotEmpty()
c.Fake = from.GetFake()
c.Gigagroup = from.GetGigagroup()
c.Noforwards = from.GetNoforwards()
c.ID = from.GetID()
if val, ok := from.GetAccessHash(); ok {
c.AccessHash = val
}
c.Title = from.GetTitle()
if val, ok := from.GetUsername(); ok {
c.Username = val
}
c.Photo = from.GetPhoto()
c.Date = from.GetDate()
if val, ok := from.GetRestrictionReason(); ok {
c.RestrictionReason = val
}
if val, ok := from.GetAdminRights(); ok {
c.AdminRights = val
}
if val, ok := from.GetBannedRights(); ok {
c.BannedRights = val
}
if val, ok := from.GetDefaultBannedRights(); ok {
c.DefaultBannedRights = val
}
if val, ok := from.GetParticipantsCount(); ok {
c.ParticipantsCount = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*Channel) TypeID() uint32 {
return ChannelTypeID
}
// TypeName returns name of type in TL schema.
func (*Channel) TypeName() string {
return "channel"
}
// TypeInfo returns info about TL type.
func (c *Channel) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "channel",
ID: ChannelTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "Creator",
SchemaName: "creator",
Null: !c.Flags.Has(0),
},
{
Name: "Left",
SchemaName: "left",
Null: !c.Flags.Has(2),
},
{
Name: "Broadcast",
SchemaName: "broadcast",
Null: !c.Flags.Has(5),
},
{
Name: "Verified",
SchemaName: "verified",
Null: !c.Flags.Has(7),
},
{
Name: "Megagroup",
SchemaName: "megagroup",
Null: !c.Flags.Has(8),
},
{
Name: "Restricted",
SchemaName: "restricted",
Null: !c.Flags.Has(9),
},
{
Name: "Signatures",
SchemaName: "signatures",
Null: !c.Flags.Has(11),
},
{
Name: "Min",
SchemaName: "min",
Null: !c.Flags.Has(12),
},
{
Name: "Scam",
SchemaName: "scam",
Null: !c.Flags.Has(19),
},
{
Name: "HasLink",
SchemaName: "has_link",
Null: !c.Flags.Has(20),
},
{
Name: "HasGeo",
SchemaName: "has_geo",
Null: !c.Flags.Has(21),
},
{
Name: "SlowmodeEnabled",
SchemaName: "slowmode_enabled",
Null: !c.Flags.Has(22),
},
{
Name: "CallActive",
SchemaName: "call_active",
Null: !c.Flags.Has(23),
},
{
Name: "CallNotEmpty",
SchemaName: "call_not_empty",
Null: !c.Flags.Has(24),
},
{
Name: "Fake",
SchemaName: "fake",
Null: !c.Flags.Has(25),
},
{
Name: "Gigagroup",
SchemaName: "gigagroup",
Null: !c.Flags.Has(26),
},
{
Name: "Noforwards",
SchemaName: "noforwards",
Null: !c.Flags.Has(27),
},
{
Name: "ID",
SchemaName: "id",
},
{
Name: "AccessHash",
SchemaName: "access_hash",
Null: !c.Flags.Has(13),
},
{
Name: "Title",
SchemaName: "title",
},
{
Name: "Username",
SchemaName: "username",
Null: !c.Flags.Has(6),
},
{
Name: "Photo",
SchemaName: "photo",
},
{
Name: "Date",
SchemaName: "date",
},
{
Name: "RestrictionReason",
SchemaName: "restriction_reason",
Null: !c.Flags.Has(9),
},
{
Name: "AdminRights",
SchemaName: "admin_rights",
Null: !c.Flags.Has(14),
},
{
Name: "BannedRights",
SchemaName: "banned_rights",
Null: !c.Flags.Has(15),
},
{
Name: "DefaultBannedRights",
SchemaName: "default_banned_rights",
Null: !c.Flags.Has(18),
},
{
Name: "ParticipantsCount",
SchemaName: "participants_count",
Null: !c.Flags.Has(17),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *Channel) SetFlags() {
if !(c.Creator == false) {
c.Flags.Set(0)
}
if !(c.Left == false) {
c.Flags.Set(2)
}
if !(c.Broadcast == false) {
c.Flags.Set(5)
}
if !(c.Verified == false) {
c.Flags.Set(7)
}
if !(c.Megagroup == false) {
c.Flags.Set(8)
}
if !(c.Restricted == false) {
c.Flags.Set(9)
}
if !(c.Signatures == false) {
c.Flags.Set(11)
}
if !(c.Min == false) {
c.Flags.Set(12)
}
if !(c.Scam == false) {
c.Flags.Set(19)
}
if !(c.HasLink == false) {
c.Flags.Set(20)
}
if !(c.HasGeo == false) {
c.Flags.Set(21)
}
if !(c.SlowmodeEnabled == false) {
c.Flags.Set(22)
}
if !(c.CallActive == false) {
c.Flags.Set(23)
}
if !(c.CallNotEmpty == false) {
c.Flags.Set(24)
}
if !(c.Fake == false) {
c.Flags.Set(25)
}
if !(c.Gigagroup == false) {
c.Flags.Set(26)
}
if !(c.Noforwards == false) {
c.Flags.Set(27)
}
if !(c.AccessHash == 0) {
c.Flags.Set(13)
}
if !(c.Username == "") {
c.Flags.Set(6)
}
if !(c.RestrictionReason == nil) {
c.Flags.Set(9)
}
if !(c.AdminRights.Zero()) {
c.Flags.Set(14)
}
if !(c.BannedRights.Zero()) {
c.Flags.Set(15)
}
if !(c.DefaultBannedRights.Zero()) {
c.Flags.Set(18)
}
if !(c.ParticipantsCount == 0) {
c.Flags.Set(17)
}
}
// Encode implements bin.Encoder.
func (c *Channel) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channel#8261ac61 as nil")
}
b.PutID(ChannelTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *Channel) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channel#8261ac61 as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode channel#8261ac61: field flags: %w", err)
}
b.PutLong(c.ID)
if c.Flags.Has(13) {
b.PutLong(c.AccessHash)
}
b.PutString(c.Title)
if c.Flags.Has(6) {
b.PutString(c.Username)
}
if c.Photo == nil {
return fmt.Errorf("unable to encode channel#8261ac61: field photo is nil")
}
if err := c.Photo.Encode(b); err != nil {
return fmt.Errorf("unable to encode channel#8261ac61: field photo: %w", err)
}
b.PutInt(c.Date)
if c.Flags.Has(9) {
b.PutVectorHeader(len(c.RestrictionReason))
for idx, v := range c.RestrictionReason {
if err := v.Encode(b); err != nil {
return fmt.Errorf("unable to encode channel#8261ac61: field restriction_reason element with index %d: %w", idx, err)
}
}
}
if c.Flags.Has(14) {
if err := c.AdminRights.Encode(b); err != nil {
return fmt.Errorf("unable to encode channel#8261ac61: field admin_rights: %w", err)
}
}
if c.Flags.Has(15) {
if err := c.BannedRights.Encode(b); err != nil {
return fmt.Errorf("unable to encode channel#8261ac61: field banned_rights: %w", err)
}
}
if c.Flags.Has(18) {
if err := c.DefaultBannedRights.Encode(b); err != nil {
return fmt.Errorf("unable to encode channel#8261ac61: field default_banned_rights: %w", err)
}
}
if c.Flags.Has(17) {
b.PutInt(c.ParticipantsCount)
}
return nil
}
// Decode implements bin.Decoder.
func (c *Channel) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channel#8261ac61 to nil")
}
if err := b.ConsumeID(ChannelTypeID); err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *Channel) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channel#8261ac61 to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field flags: %w", err)
}
}
c.Creator = c.Flags.Has(0)
c.Left = c.Flags.Has(2)
c.Broadcast = c.Flags.Has(5)
c.Verified = c.Flags.Has(7)
c.Megagroup = c.Flags.Has(8)
c.Restricted = c.Flags.Has(9)
c.Signatures = c.Flags.Has(11)
c.Min = c.Flags.Has(12)
c.Scam = c.Flags.Has(19)
c.HasLink = c.Flags.Has(20)
c.HasGeo = c.Flags.Has(21)
c.SlowmodeEnabled = c.Flags.Has(22)
c.CallActive = c.Flags.Has(23)
c.CallNotEmpty = c.Flags.Has(24)
c.Fake = c.Flags.Has(25)
c.Gigagroup = c.Flags.Has(26)
c.Noforwards = c.Flags.Has(27)
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field id: %w", err)
}
c.ID = value
}
if c.Flags.Has(13) {
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field access_hash: %w", err)
}
c.AccessHash = value
}
{
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field title: %w", err)
}
c.Title = value
}
if c.Flags.Has(6) {
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field username: %w", err)
}
c.Username = value
}
{
value, err := DecodeChatPhoto(b)
if err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field photo: %w", err)
}
c.Photo = value
}
{
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field date: %w", err)
}
c.Date = value
}
if c.Flags.Has(9) {
headerLen, err := b.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field restriction_reason: %w", err)
}
if headerLen > 0 {
c.RestrictionReason = make([]RestrictionReason, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
var value RestrictionReason
if err := value.Decode(b); err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field restriction_reason: %w", err)
}
c.RestrictionReason = append(c.RestrictionReason, value)
}
}
if c.Flags.Has(14) {
if err := c.AdminRights.Decode(b); err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field admin_rights: %w", err)
}
}
if c.Flags.Has(15) {
if err := c.BannedRights.Decode(b); err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field banned_rights: %w", err)
}
}
if c.Flags.Has(18) {
if err := c.DefaultBannedRights.Decode(b); err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field default_banned_rights: %w", err)
}
}
if c.Flags.Has(17) {
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channel#8261ac61: field participants_count: %w", err)
}
c.ParticipantsCount = value
}
return nil
}
// SetCreator sets value of Creator conditional field.
func (c *Channel) SetCreator(value bool) {
if value {
c.Flags.Set(0)
c.Creator = true
} else {
c.Flags.Unset(0)
c.Creator = false
}
}
// GetCreator returns value of Creator conditional field.
func (c *Channel) GetCreator() (value bool) {
if c == nil {
return
}
return c.Flags.Has(0)
}
// SetLeft sets value of Left conditional field.
func (c *Channel) SetLeft(value bool) {
if value {
c.Flags.Set(2)
c.Left = true
} else {
c.Flags.Unset(2)
c.Left = false
}
}
// GetLeft returns value of Left conditional field.
func (c *Channel) GetLeft() (value bool) {
if c == nil {
return
}
return c.Flags.Has(2)
}
// SetBroadcast sets value of Broadcast conditional field.
func (c *Channel) SetBroadcast(value bool) {
if value {
c.Flags.Set(5)
c.Broadcast = true
} else {
c.Flags.Unset(5)
c.Broadcast = false
}
}
// GetBroadcast returns value of Broadcast conditional field.
func (c *Channel) GetBroadcast() (value bool) {
if c == nil {
return
}
return c.Flags.Has(5)
}
// SetVerified sets value of Verified conditional field.
func (c *Channel) SetVerified(value bool) {
if value {
c.Flags.Set(7)
c.Verified = true
} else {
c.Flags.Unset(7)
c.Verified = false
}
}
// GetVerified returns value of Verified conditional field.
func (c *Channel) GetVerified() (value bool) {
if c == nil {
return
}
return c.Flags.Has(7)
}
// SetMegagroup sets value of Megagroup conditional field.
func (c *Channel) SetMegagroup(value bool) {
if value {
c.Flags.Set(8)
c.Megagroup = true
} else {
c.Flags.Unset(8)
c.Megagroup = false
}
}
// GetMegagroup returns value of Megagroup conditional field.
func (c *Channel) GetMegagroup() (value bool) {
if c == nil {
return
}
return c.Flags.Has(8)
}
// SetRestricted sets value of Restricted conditional field.
func (c *Channel) SetRestricted(value bool) {
if value {
c.Flags.Set(9)
c.Restricted = true
} else {
c.Flags.Unset(9)
c.Restricted = false
}
}
// GetRestricted returns value of Restricted conditional field.
func (c *Channel) GetRestricted() (value bool) {
if c == nil {
return
}
return c.Flags.Has(9)
}
// SetSignatures sets value of Signatures conditional field.
func (c *Channel) SetSignatures(value bool) {
if value {
c.Flags.Set(11)
c.Signatures = true
} else {
c.Flags.Unset(11)
c.Signatures = false
}
}
// GetSignatures returns value of Signatures conditional field.
func (c *Channel) GetSignatures() (value bool) {
if c == nil {
return
}
return c.Flags.Has(11)
}
// SetMin sets value of Min conditional field.
func (c *Channel) SetMin(value bool) {
if value {
c.Flags.Set(12)
c.Min = true
} else {
c.Flags.Unset(12)
c.Min = false
}
}
// GetMin returns value of Min conditional field.
func (c *Channel) GetMin() (value bool) {
if c == nil {
return
}
return c.Flags.Has(12)
}
// SetScam sets value of Scam conditional field.
func (c *Channel) SetScam(value bool) {
if value {
c.Flags.Set(19)
c.Scam = true
} else {
c.Flags.Unset(19)
c.Scam = false
}
}
// GetScam returns value of Scam conditional field.
func (c *Channel) GetScam() (value bool) {
if c == nil {
return
}
return c.Flags.Has(19)
}
// SetHasLink sets value of HasLink conditional field.
func (c *Channel) SetHasLink(value bool) {
if value {
c.Flags.Set(20)
c.HasLink = true
} else {
c.Flags.Unset(20)
c.HasLink = false
}
}
// GetHasLink returns value of HasLink conditional field.
func (c *Channel) GetHasLink() (value bool) {
if c == nil {
return
}
return c.Flags.Has(20)
}
// SetHasGeo sets value of HasGeo conditional field.
func (c *Channel) SetHasGeo(value bool) {
if value {
c.Flags.Set(21)
c.HasGeo = true
} else {
c.Flags.Unset(21)
c.HasGeo = false
}
}
// GetHasGeo returns value of HasGeo conditional field.
func (c *Channel) GetHasGeo() (value bool) {
if c == nil {
return
}
return c.Flags.Has(21)
}
// SetSlowmodeEnabled sets value of SlowmodeEnabled conditional field.
func (c *Channel) SetSlowmodeEnabled(value bool) {
if value {
c.Flags.Set(22)
c.SlowmodeEnabled = true
} else {
c.Flags.Unset(22)
c.SlowmodeEnabled = false
}
}
// GetSlowmodeEnabled returns value of SlowmodeEnabled conditional field.
func (c *Channel) GetSlowmodeEnabled() (value bool) {
if c == nil {
return
}
return c.Flags.Has(22)
}
// SetCallActive sets value of CallActive conditional field.
func (c *Channel) SetCallActive(value bool) {
if value {
c.Flags.Set(23)
c.CallActive = true
} else {
c.Flags.Unset(23)
c.CallActive = false
}
}
// GetCallActive returns value of CallActive conditional field.
func (c *Channel) GetCallActive() (value bool) {
if c == nil {
return
}
return c.Flags.Has(23)
}
// SetCallNotEmpty sets value of CallNotEmpty conditional field.
func (c *Channel) SetCallNotEmpty(value bool) {
if value {
c.Flags.Set(24)
c.CallNotEmpty = true
} else {
c.Flags.Unset(24)
c.CallNotEmpty = false
}
}
// GetCallNotEmpty returns value of CallNotEmpty conditional field.
func (c *Channel) GetCallNotEmpty() (value bool) {
if c == nil {
return
}
return c.Flags.Has(24)
}
// SetFake sets value of Fake conditional field.
func (c *Channel) SetFake(value bool) {
if value {
c.Flags.Set(25)
c.Fake = true
} else {
c.Flags.Unset(25)
c.Fake = false
}
}
// GetFake returns value of Fake conditional field.
func (c *Channel) GetFake() (value bool) {
if c == nil {
return
}
return c.Flags.Has(25)
}
// SetGigagroup sets value of Gigagroup conditional field.
func (c *Channel) SetGigagroup(value bool) {
if value {
c.Flags.Set(26)
c.Gigagroup = true
} else {
c.Flags.Unset(26)
c.Gigagroup = false
}
}
// GetGigagroup returns value of Gigagroup conditional field.
func (c *Channel) GetGigagroup() (value bool) {
if c == nil {
return
}
return c.Flags.Has(26)
}
// SetNoforwards sets value of Noforwards conditional field.
func (c *Channel) SetNoforwards(value bool) {
if value {
c.Flags.Set(27)
c.Noforwards = true
} else {
c.Flags.Unset(27)
c.Noforwards = false
}
}
// GetNoforwards returns value of Noforwards conditional field.
func (c *Channel) GetNoforwards() (value bool) {
if c == nil {
return
}
return c.Flags.Has(27)
}
// GetID returns value of ID field.
func (c *Channel) GetID() (value int64) {
if c == nil {
return
}
return c.ID
}
// SetAccessHash sets value of AccessHash conditional field.
func (c *Channel) SetAccessHash(value int64) {
c.Flags.Set(13)
c.AccessHash = value
}
// GetAccessHash returns value of AccessHash conditional field and
// boolean which is true if field was set.
func (c *Channel) GetAccessHash() (value int64, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(13) {
return value, false
}
return c.AccessHash, true
}
// GetTitle returns value of Title field.
func (c *Channel) GetTitle() (value string) {
if c == nil {
return
}
return c.Title
}
// SetUsername sets value of Username conditional field.
func (c *Channel) SetUsername(value string) {
c.Flags.Set(6)
c.Username = value
}
// GetUsername returns value of Username conditional field and
// boolean which is true if field was set.
func (c *Channel) GetUsername() (value string, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(6) {
return value, false
}
return c.Username, true
}
// GetPhoto returns value of Photo field.
func (c *Channel) GetPhoto() (value ChatPhotoClass) {
if c == nil {
return
}
return c.Photo
}
// GetDate returns value of Date field.
func (c *Channel) GetDate() (value int) {
if c == nil {
return
}
return c.Date
}
// SetRestrictionReason sets value of RestrictionReason conditional field.
func (c *Channel) SetRestrictionReason(value []RestrictionReason) {
c.Flags.Set(9)
c.RestrictionReason = value
}
// GetRestrictionReason returns value of RestrictionReason conditional field and
// boolean which is true if field was set.
func (c *Channel) GetRestrictionReason() (value []RestrictionReason, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(9) {
return value, false
}
return c.RestrictionReason, true
}
// SetAdminRights sets value of AdminRights conditional field.
func (c *Channel) SetAdminRights(value ChatAdminRights) {
c.Flags.Set(14)
c.AdminRights = value
}
// GetAdminRights returns value of AdminRights conditional field and
// boolean which is true if field was set.
func (c *Channel) GetAdminRights() (value ChatAdminRights, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(14) {
return value, false
}
return c.AdminRights, true
}
// SetBannedRights sets value of BannedRights conditional field.
func (c *Channel) SetBannedRights(value ChatBannedRights) {
c.Flags.Set(15)
c.BannedRights = value
}
// GetBannedRights returns value of BannedRights conditional field and
// boolean which is true if field was set.
func (c *Channel) GetBannedRights() (value ChatBannedRights, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(15) {
return value, false
}
return c.BannedRights, true
}
// SetDefaultBannedRights sets value of DefaultBannedRights conditional field.
func (c *Channel) SetDefaultBannedRights(value ChatBannedRights) {
c.Flags.Set(18)
c.DefaultBannedRights = value
}
// GetDefaultBannedRights returns value of DefaultBannedRights conditional field and
// boolean which is true if field was set.
func (c *Channel) GetDefaultBannedRights() (value ChatBannedRights, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(18) {
return value, false
}
return c.DefaultBannedRights, true
}
// SetParticipantsCount sets value of ParticipantsCount conditional field.
func (c *Channel) SetParticipantsCount(value int) {
c.Flags.Set(17)
c.ParticipantsCount = value
}
// GetParticipantsCount returns value of ParticipantsCount conditional field and
// boolean which is true if field was set.
func (c *Channel) GetParticipantsCount() (value int, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(17) {
return value, false
}
return c.ParticipantsCount, true
}
// ChannelForbidden represents TL type `channelForbidden#17d493d5`.
// Indicates a channel/supergroup we can't access because we were banned, or for some
// other reason.
//
// See https://core.telegram.org/constructor/channelForbidden for reference.
type ChannelForbidden struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Is this a channel
Broadcast bool
// Is this a supergroup
Megagroup bool
// Channel ID
ID int64
// Access hash
AccessHash int64
// Title
Title string
// The ban is valid until the specified date
//
// Use SetUntilDate and GetUntilDate helpers.
UntilDate int
}
// ChannelForbiddenTypeID is TL type id of ChannelForbidden.
const ChannelForbiddenTypeID = 0x17d493d5
// construct implements constructor of ChatClass.
func (c ChannelForbidden) construct() ChatClass { return &c }
// Ensuring interfaces in compile-time for ChannelForbidden.
var (
_ bin.Encoder = &ChannelForbidden{}
_ bin.Decoder = &ChannelForbidden{}
_ bin.BareEncoder = &ChannelForbidden{}
_ bin.BareDecoder = &ChannelForbidden{}
_ ChatClass = &ChannelForbidden{}
)
func (c *ChannelForbidden) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.Broadcast == false) {
return false
}
if !(c.Megagroup == false) {
return false
}
if !(c.ID == 0) {
return false
}
if !(c.AccessHash == 0) {
return false
}
if !(c.Title == "") {
return false
}
if !(c.UntilDate == 0) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChannelForbidden) String() string {
if c == nil {
return "ChannelForbidden(nil)"
}
type Alias ChannelForbidden
return fmt.Sprintf("ChannelForbidden%+v", Alias(*c))
}
// FillFrom fills ChannelForbidden from given interface.
func (c *ChannelForbidden) FillFrom(from interface {
GetBroadcast() (value bool)
GetMegagroup() (value bool)
GetID() (value int64)
GetAccessHash() (value int64)
GetTitle() (value string)
GetUntilDate() (value int, ok bool)
}) {
c.Broadcast = from.GetBroadcast()
c.Megagroup = from.GetMegagroup()
c.ID = from.GetID()
c.AccessHash = from.GetAccessHash()
c.Title = from.GetTitle()
if val, ok := from.GetUntilDate(); ok {
c.UntilDate = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChannelForbidden) TypeID() uint32 {
return ChannelForbiddenTypeID
}
// TypeName returns name of type in TL schema.
func (*ChannelForbidden) TypeName() string {
return "channelForbidden"
}
// TypeInfo returns info about TL type.
func (c *ChannelForbidden) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "channelForbidden",
ID: ChannelForbiddenTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "Broadcast",
SchemaName: "broadcast",
Null: !c.Flags.Has(5),
},
{
Name: "Megagroup",
SchemaName: "megagroup",
Null: !c.Flags.Has(8),
},
{
Name: "ID",
SchemaName: "id",
},
{
Name: "AccessHash",
SchemaName: "access_hash",
},
{
Name: "Title",
SchemaName: "title",
},
{
Name: "UntilDate",
SchemaName: "until_date",
Null: !c.Flags.Has(16),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *ChannelForbidden) SetFlags() {
if !(c.Broadcast == false) {
c.Flags.Set(5)
}
if !(c.Megagroup == false) {
c.Flags.Set(8)
}
if !(c.UntilDate == 0) {
c.Flags.Set(16)
}
}
// Encode implements bin.Encoder.
func (c *ChannelForbidden) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelForbidden#17d493d5 as nil")
}
b.PutID(ChannelForbiddenTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChannelForbidden) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelForbidden#17d493d5 as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelForbidden#17d493d5: field flags: %w", err)
}
b.PutLong(c.ID)
b.PutLong(c.AccessHash)
b.PutString(c.Title)
if c.Flags.Has(16) {
b.PutInt(c.UntilDate)
}
return nil
}
// Decode implements bin.Decoder.
func (c *ChannelForbidden) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelForbidden#17d493d5 to nil")
}
if err := b.ConsumeID(ChannelForbiddenTypeID); err != nil {
return fmt.Errorf("unable to decode channelForbidden#17d493d5: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChannelForbidden) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelForbidden#17d493d5 to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelForbidden#17d493d5: field flags: %w", err)
}
}
c.Broadcast = c.Flags.Has(5)
c.Megagroup = c.Flags.Has(8)
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelForbidden#17d493d5: field id: %w", err)
}
c.ID = value
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelForbidden#17d493d5: field access_hash: %w", err)
}
c.AccessHash = value
}
{
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode channelForbidden#17d493d5: field title: %w", err)
}
c.Title = value
}
if c.Flags.Has(16) {
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channelForbidden#17d493d5: field until_date: %w", err)
}
c.UntilDate = value
}
return nil
}
// SetBroadcast sets value of Broadcast conditional field.
func (c *ChannelForbidden) SetBroadcast(value bool) {
if value {
c.Flags.Set(5)
c.Broadcast = true
} else {
c.Flags.Unset(5)
c.Broadcast = false
}
}
// GetBroadcast returns value of Broadcast conditional field.
func (c *ChannelForbidden) GetBroadcast() (value bool) {
if c == nil {
return
}
return c.Flags.Has(5)
}
// SetMegagroup sets value of Megagroup conditional field.
func (c *ChannelForbidden) SetMegagroup(value bool) {
if value {
c.Flags.Set(8)
c.Megagroup = true
} else {
c.Flags.Unset(8)
c.Megagroup = false
}
}
// GetMegagroup returns value of Megagroup conditional field.
func (c *ChannelForbidden) GetMegagroup() (value bool) {
if c == nil {
return
}
return c.Flags.Has(8)
}
// GetID returns value of ID field.
func (c *ChannelForbidden) GetID() (value int64) {
if c == nil {
return
}
return c.ID
}
// GetAccessHash returns value of AccessHash field.
func (c *ChannelForbidden) GetAccessHash() (value int64) {
if c == nil {
return
}
return c.AccessHash
}
// GetTitle returns value of Title field.
func (c *ChannelForbidden) GetTitle() (value string) {
if c == nil {
return
}
return c.Title
}
// SetUntilDate sets value of UntilDate conditional field.
func (c *ChannelForbidden) SetUntilDate(value int) {
c.Flags.Set(16)
c.UntilDate = value
}
// GetUntilDate returns value of UntilDate conditional field and
// boolean which is true if field was set.
func (c *ChannelForbidden) GetUntilDate() (value int, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(16) {
return value, false
}
return c.UntilDate, true
}
// ChatClassName is schema name of ChatClass.
const ChatClassName = "Chat"
// ChatClass represents Chat generic type.
//
// See https://core.telegram.org/type/Chat for reference.
//
// Example:
// g, err := tg.DecodeChat(buf)
// if err != nil {
// panic(err)
// }
// switch v := g.(type) {
// case *tg.ChatEmpty: // chatEmpty#29562865
// case *tg.Chat: // chat#41cbf256
// case *tg.ChatForbidden: // chatForbidden#6592a1a7
// case *tg.Channel: // channel#8261ac61
// case *tg.ChannelForbidden: // channelForbidden#17d493d5
// default: panic(v)
// }
type ChatClass interface {
bin.Encoder
bin.Decoder
bin.BareEncoder
bin.BareDecoder
construct() ChatClass
// 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
// Group identifier
GetID() (value int64)
// AsNotEmpty tries to map ChatClass to NotEmptyChat.
AsNotEmpty() (NotEmptyChat, bool)
// AsNotForbidden tries to map ChatClass to NotForbiddenChat.
AsNotForbidden() (NotForbiddenChat, bool)
// AsFull tries to map ChatClass to FullChat.
AsFull() (FullChat, bool)
}
// AsInputPeer tries to map Chat to InputPeerChat.
func (c *Chat) AsInputPeer() *InputPeerChat {
value := new(InputPeerChat)
value.ChatID = c.GetID()
return value
}
// AsInputPeer tries to map Channel to InputPeerChannel.
func (c *Channel) AsInputPeer() *InputPeerChannel {
value := new(InputPeerChannel)
value.ChannelID = c.GetID()
if fieldValue, ok := c.GetAccessHash(); ok {
value.AccessHash = fieldValue
}
return value
}
// AsInput tries to map Channel to InputChannel.
func (c *Channel) AsInput() *InputChannel {
value := new(InputChannel)
value.ChannelID = c.GetID()
if fieldValue, ok := c.GetAccessHash(); ok {
value.AccessHash = fieldValue
}
return value
}
// NotEmptyChat represents NotEmpty subset of ChatClass.
type NotEmptyChat interface {
bin.Encoder
bin.Decoder
bin.BareEncoder
bin.BareDecoder
construct() ChatClass
// 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
// ID of the group
GetID() (value int64)
// Title
GetTitle() (value string)
}
// AsNotEmpty tries to map ChatEmpty to NotEmptyChat.
func (c *ChatEmpty) AsNotEmpty() (NotEmptyChat, bool) {
value, ok := (ChatClass(c)).(NotEmptyChat)
return value, ok
}
// AsNotEmpty tries to map Chat to NotEmptyChat.
func (c *Chat) AsNotEmpty() (NotEmptyChat, bool) {
value, ok := (ChatClass(c)).(NotEmptyChat)
return value, ok
}
// AsNotEmpty tries to map ChatForbidden to NotEmptyChat.
func (c *ChatForbidden) AsNotEmpty() (NotEmptyChat, bool) {
value, ok := (ChatClass(c)).(NotEmptyChat)
return value, ok
}
// AsNotEmpty tries to map Channel to NotEmptyChat.
func (c *Channel) AsNotEmpty() (NotEmptyChat, bool) {
value, ok := (ChatClass(c)).(NotEmptyChat)
return value, ok
}
// AsNotEmpty tries to map ChannelForbidden to NotEmptyChat.
func (c *ChannelForbidden) AsNotEmpty() (NotEmptyChat, bool) {
value, ok := (ChatClass(c)).(NotEmptyChat)
return value, ok
}
// NotForbiddenChat represents NotForbidden subset of ChatClass.
type NotForbiddenChat interface {
bin.Encoder
bin.Decoder
bin.BareEncoder
bin.BareDecoder
construct() ChatClass
// 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
// Group identifier
GetID() (value int64)
}
// AsNotForbidden tries to map ChatEmpty to NotForbiddenChat.
func (c *ChatEmpty) AsNotForbidden() (NotForbiddenChat, bool) {
value, ok := (ChatClass(c)).(NotForbiddenChat)
return value, ok
}
// AsNotForbidden tries to map Chat to NotForbiddenChat.
func (c *Chat) AsNotForbidden() (NotForbiddenChat, bool) {
value, ok := (ChatClass(c)).(NotForbiddenChat)
return value, ok
}
// AsNotForbidden tries to map ChatForbidden to NotForbiddenChat.
func (c *ChatForbidden) AsNotForbidden() (NotForbiddenChat, bool) {
value, ok := (ChatClass(c)).(NotForbiddenChat)
return value, ok
}
// AsNotForbidden tries to map Channel to NotForbiddenChat.
func (c *Channel) AsNotForbidden() (NotForbiddenChat, bool) {
value, ok := (ChatClass(c)).(NotForbiddenChat)
return value, ok
}
// AsNotForbidden tries to map ChannelForbidden to NotForbiddenChat.
func (c *ChannelForbidden) AsNotForbidden() (NotForbiddenChat, bool) {
value, ok := (ChatClass(c)).(NotForbiddenChat)
return value, ok
}
// FullChat represents Full subset of ChatClass.
type FullChat interface {
bin.Encoder
bin.Decoder
bin.BareEncoder
bin.BareDecoder
construct() ChatClass
// 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
// Whether the current user is the creator of the group
GetCreator() (value bool)
// Whether the current user has left the group
GetLeft() (value bool)
// Whether a group call is currently active
GetCallActive() (value bool)
// Whether there's anyone in the group call
GetCallNotEmpty() (value bool)
// Noforwards field of Chat.
GetNoforwards() (value bool)
// ID of the group
GetID() (value int64)
// Title
GetTitle() (value string)
// Chat photo
GetPhoto() (value ChatPhotoClass)
// Date of creation of the group
GetDate() (value int)
// Admin rights¹ of the user in the group
//
// Links:
// 1) https://core.telegram.org/api/rights
GetAdminRights() (value ChatAdminRights, ok bool)
// Default banned rights¹ of all users in the group
//
// Links:
// 1) https://core.telegram.org/api/rights
GetDefaultBannedRights() (value ChatBannedRights, ok bool)
}
// AsFull tries to map ChatEmpty to FullChat.
func (c *ChatEmpty) AsFull() (FullChat, bool) {
value, ok := (ChatClass(c)).(FullChat)
return value, ok
}
// AsFull tries to map Chat to FullChat.
func (c *Chat) AsFull() (FullChat, bool) {
value, ok := (ChatClass(c)).(FullChat)
return value, ok
}
// AsFull tries to map ChatForbidden to FullChat.
func (c *ChatForbidden) AsFull() (FullChat, bool) {
value, ok := (ChatClass(c)).(FullChat)
return value, ok
}
// AsFull tries to map Channel to FullChat.
func (c *Channel) AsFull() (FullChat, bool) {
value, ok := (ChatClass(c)).(FullChat)
return value, ok
}
// AsFull tries to map ChannelForbidden to FullChat.
func (c *ChannelForbidden) AsFull() (FullChat, bool) {
value, ok := (ChatClass(c)).(FullChat)
return value, ok
}
// DecodeChat implements binary de-serialization for ChatClass.
func DecodeChat(buf *bin.Buffer) (ChatClass, error) {
id, err := buf.PeekID()
if err != nil {
return nil, err
}
switch id {
case ChatEmptyTypeID:
// Decoding chatEmpty#29562865.
v := ChatEmpty{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChatClass: %w", err)
}
return &v, nil
case ChatTypeID:
// Decoding chat#41cbf256.
v := Chat{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChatClass: %w", err)
}
return &v, nil
case ChatForbiddenTypeID:
// Decoding chatForbidden#6592a1a7.
v := ChatForbidden{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChatClass: %w", err)
}
return &v, nil
case ChannelTypeID:
// Decoding channel#8261ac61.
v := Channel{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChatClass: %w", err)
}
return &v, nil
case ChannelForbiddenTypeID:
// Decoding channelForbidden#17d493d5.
v := ChannelForbidden{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChatClass: %w", err)
}
return &v, nil
default:
return nil, fmt.Errorf("unable to decode ChatClass: %w", bin.NewUnexpectedID(id))
}
}
// Chat boxes the ChatClass providing a helper.
type ChatBox struct {
Chat ChatClass
}
// Decode implements bin.Decoder for ChatBox.
func (b *ChatBox) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("unable to decode ChatBox to nil")
}
v, err := DecodeChat(buf)
if err != nil {
return fmt.Errorf("unable to decode boxed value: %w", err)
}
b.Chat = v
return nil
}
// Encode implements bin.Encode for ChatBox.
func (b *ChatBox) Encode(buf *bin.Buffer) error {
if b == nil || b.Chat == nil {
return fmt.Errorf("unable to encode ChatClass as nil")
}
return b.Chat.Encode(buf)
}