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.
2920 lines
64 KiB
2920 lines
64 KiB
3 years ago
|
// 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)
|
||
|
}
|