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

1744 lines
43 KiB
Go

// Code generated by gotdgen, DO NOT EDIT.
package tg
import (
"context"
"errors"
"fmt"
"sort"
"strings"
"go.uber.org/multierr"
"go.mau.fi/mautrix-telegram/pkg/gotd/bin"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdjson"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdp"
"go.mau.fi/mautrix-telegram/pkg/gotd/tgerr"
)
// No-op definition for keeping imports.
var (
_ = bin.Buffer{}
_ = context.Background()
_ = fmt.Stringer(nil)
_ = strings.Builder{}
_ = errors.Is
_ = multierr.AppendInto
_ = sort.Ints
_ = tdp.Format
_ = tgerr.Error{}
_ = tdjson.Encoder{}
)
// ChannelParticipant represents TL type `channelParticipant#cb397619`.
// Channel/supergroup participant
//
// See https://core.telegram.org/constructor/channelParticipant for reference.
type ChannelParticipant struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Participant user ID
UserID int64
// Date joined
Date int
// If set, contains the expiration date of the current Telegram Star subscription period
// »¹ for the specified participant.
//
// Links:
// 1) https://core.telegram.org/api/stars#star-subscriptions
//
// Use SetSubscriptionUntilDate and GetSubscriptionUntilDate helpers.
SubscriptionUntilDate int
}
// ChannelParticipantTypeID is TL type id of ChannelParticipant.
const ChannelParticipantTypeID = 0xcb397619
// construct implements constructor of ChannelParticipantClass.
func (c ChannelParticipant) construct() ChannelParticipantClass { return &c }
// Ensuring interfaces in compile-time for ChannelParticipant.
var (
_ bin.Encoder = &ChannelParticipant{}
_ bin.Decoder = &ChannelParticipant{}
_ bin.BareEncoder = &ChannelParticipant{}
_ bin.BareDecoder = &ChannelParticipant{}
_ ChannelParticipantClass = &ChannelParticipant{}
)
func (c *ChannelParticipant) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.UserID == 0) {
return false
}
if !(c.Date == 0) {
return false
}
if !(c.SubscriptionUntilDate == 0) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChannelParticipant) String() string {
if c == nil {
return "ChannelParticipant(nil)"
}
type Alias ChannelParticipant
return fmt.Sprintf("ChannelParticipant%+v", Alias(*c))
}
// FillFrom fills ChannelParticipant from given interface.
func (c *ChannelParticipant) FillFrom(from interface {
GetUserID() (value int64)
GetDate() (value int)
GetSubscriptionUntilDate() (value int, ok bool)
}) {
c.UserID = from.GetUserID()
c.Date = from.GetDate()
if val, ok := from.GetSubscriptionUntilDate(); ok {
c.SubscriptionUntilDate = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChannelParticipant) TypeID() uint32 {
return ChannelParticipantTypeID
}
// TypeName returns name of type in TL schema.
func (*ChannelParticipant) TypeName() string {
return "channelParticipant"
}
// TypeInfo returns info about TL type.
func (c *ChannelParticipant) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "channelParticipant",
ID: ChannelParticipantTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "UserID",
SchemaName: "user_id",
},
{
Name: "Date",
SchemaName: "date",
},
{
Name: "SubscriptionUntilDate",
SchemaName: "subscription_until_date",
Null: !c.Flags.Has(0),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *ChannelParticipant) SetFlags() {
if !(c.SubscriptionUntilDate == 0) {
c.Flags.Set(0)
}
}
// Encode implements bin.Encoder.
func (c *ChannelParticipant) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipant#cb397619 as nil")
}
b.PutID(ChannelParticipantTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChannelParticipant) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipant#cb397619 as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipant#cb397619: field flags: %w", err)
}
b.PutLong(c.UserID)
b.PutInt(c.Date)
if c.Flags.Has(0) {
b.PutInt(c.SubscriptionUntilDate)
}
return nil
}
// Decode implements bin.Decoder.
func (c *ChannelParticipant) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipant#cb397619 to nil")
}
if err := b.ConsumeID(ChannelParticipantTypeID); err != nil {
return fmt.Errorf("unable to decode channelParticipant#cb397619: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChannelParticipant) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipant#cb397619 to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelParticipant#cb397619: field flags: %w", err)
}
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelParticipant#cb397619: field user_id: %w", err)
}
c.UserID = value
}
{
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channelParticipant#cb397619: field date: %w", err)
}
c.Date = value
}
if c.Flags.Has(0) {
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channelParticipant#cb397619: field subscription_until_date: %w", err)
}
c.SubscriptionUntilDate = value
}
return nil
}
// GetUserID returns value of UserID field.
func (c *ChannelParticipant) GetUserID() (value int64) {
if c == nil {
return
}
return c.UserID
}
// GetDate returns value of Date field.
func (c *ChannelParticipant) GetDate() (value int) {
if c == nil {
return
}
return c.Date
}
// SetSubscriptionUntilDate sets value of SubscriptionUntilDate conditional field.
func (c *ChannelParticipant) SetSubscriptionUntilDate(value int) {
c.Flags.Set(0)
c.SubscriptionUntilDate = value
}
// GetSubscriptionUntilDate returns value of SubscriptionUntilDate conditional field and
// boolean which is true if field was set.
func (c *ChannelParticipant) GetSubscriptionUntilDate() (value int, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(0) {
return value, false
}
return c.SubscriptionUntilDate, true
}
// ChannelParticipantSelf represents TL type `channelParticipantSelf#4f607bef`.
// Myself
//
// See https://core.telegram.org/constructor/channelParticipantSelf for reference.
type ChannelParticipantSelf struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Whether I joined upon specific approval of an admin
ViaRequest bool
// User ID
UserID int64
// User that invited me to the channel/supergroup
InviterID int64
// When did I join the channel/supergroup
Date int
// If set, contains the expiration date of the current Telegram Star subscription period
// »¹ for the specified participant.
//
// Links:
// 1) https://core.telegram.org/api/stars#star-subscriptions
//
// Use SetSubscriptionUntilDate and GetSubscriptionUntilDate helpers.
SubscriptionUntilDate int
}
// ChannelParticipantSelfTypeID is TL type id of ChannelParticipantSelf.
const ChannelParticipantSelfTypeID = 0x4f607bef
// construct implements constructor of ChannelParticipantClass.
func (c ChannelParticipantSelf) construct() ChannelParticipantClass { return &c }
// Ensuring interfaces in compile-time for ChannelParticipantSelf.
var (
_ bin.Encoder = &ChannelParticipantSelf{}
_ bin.Decoder = &ChannelParticipantSelf{}
_ bin.BareEncoder = &ChannelParticipantSelf{}
_ bin.BareDecoder = &ChannelParticipantSelf{}
_ ChannelParticipantClass = &ChannelParticipantSelf{}
)
func (c *ChannelParticipantSelf) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.ViaRequest == false) {
return false
}
if !(c.UserID == 0) {
return false
}
if !(c.InviterID == 0) {
return false
}
if !(c.Date == 0) {
return false
}
if !(c.SubscriptionUntilDate == 0) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChannelParticipantSelf) String() string {
if c == nil {
return "ChannelParticipantSelf(nil)"
}
type Alias ChannelParticipantSelf
return fmt.Sprintf("ChannelParticipantSelf%+v", Alias(*c))
}
// FillFrom fills ChannelParticipantSelf from given interface.
func (c *ChannelParticipantSelf) FillFrom(from interface {
GetViaRequest() (value bool)
GetUserID() (value int64)
GetInviterID() (value int64)
GetDate() (value int)
GetSubscriptionUntilDate() (value int, ok bool)
}) {
c.ViaRequest = from.GetViaRequest()
c.UserID = from.GetUserID()
c.InviterID = from.GetInviterID()
c.Date = from.GetDate()
if val, ok := from.GetSubscriptionUntilDate(); ok {
c.SubscriptionUntilDate = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChannelParticipantSelf) TypeID() uint32 {
return ChannelParticipantSelfTypeID
}
// TypeName returns name of type in TL schema.
func (*ChannelParticipantSelf) TypeName() string {
return "channelParticipantSelf"
}
// TypeInfo returns info about TL type.
func (c *ChannelParticipantSelf) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "channelParticipantSelf",
ID: ChannelParticipantSelfTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "ViaRequest",
SchemaName: "via_request",
Null: !c.Flags.Has(0),
},
{
Name: "UserID",
SchemaName: "user_id",
},
{
Name: "InviterID",
SchemaName: "inviter_id",
},
{
Name: "Date",
SchemaName: "date",
},
{
Name: "SubscriptionUntilDate",
SchemaName: "subscription_until_date",
Null: !c.Flags.Has(1),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *ChannelParticipantSelf) SetFlags() {
if !(c.ViaRequest == false) {
c.Flags.Set(0)
}
if !(c.SubscriptionUntilDate == 0) {
c.Flags.Set(1)
}
}
// Encode implements bin.Encoder.
func (c *ChannelParticipantSelf) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantSelf#4f607bef as nil")
}
b.PutID(ChannelParticipantSelfTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChannelParticipantSelf) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantSelf#4f607bef as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantSelf#4f607bef: field flags: %w", err)
}
b.PutLong(c.UserID)
b.PutLong(c.InviterID)
b.PutInt(c.Date)
if c.Flags.Has(1) {
b.PutInt(c.SubscriptionUntilDate)
}
return nil
}
// Decode implements bin.Decoder.
func (c *ChannelParticipantSelf) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantSelf#4f607bef to nil")
}
if err := b.ConsumeID(ChannelParticipantSelfTypeID); err != nil {
return fmt.Errorf("unable to decode channelParticipantSelf#4f607bef: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChannelParticipantSelf) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantSelf#4f607bef to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelParticipantSelf#4f607bef: field flags: %w", err)
}
}
c.ViaRequest = c.Flags.Has(0)
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantSelf#4f607bef: field user_id: %w", err)
}
c.UserID = value
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantSelf#4f607bef: field inviter_id: %w", err)
}
c.InviterID = value
}
{
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantSelf#4f607bef: field date: %w", err)
}
c.Date = value
}
if c.Flags.Has(1) {
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantSelf#4f607bef: field subscription_until_date: %w", err)
}
c.SubscriptionUntilDate = value
}
return nil
}
// SetViaRequest sets value of ViaRequest conditional field.
func (c *ChannelParticipantSelf) SetViaRequest(value bool) {
if value {
c.Flags.Set(0)
c.ViaRequest = true
} else {
c.Flags.Unset(0)
c.ViaRequest = false
}
}
// GetViaRequest returns value of ViaRequest conditional field.
func (c *ChannelParticipantSelf) GetViaRequest() (value bool) {
if c == nil {
return
}
return c.Flags.Has(0)
}
// GetUserID returns value of UserID field.
func (c *ChannelParticipantSelf) GetUserID() (value int64) {
if c == nil {
return
}
return c.UserID
}
// GetInviterID returns value of InviterID field.
func (c *ChannelParticipantSelf) GetInviterID() (value int64) {
if c == nil {
return
}
return c.InviterID
}
// GetDate returns value of Date field.
func (c *ChannelParticipantSelf) GetDate() (value int) {
if c == nil {
return
}
return c.Date
}
// SetSubscriptionUntilDate sets value of SubscriptionUntilDate conditional field.
func (c *ChannelParticipantSelf) SetSubscriptionUntilDate(value int) {
c.Flags.Set(1)
c.SubscriptionUntilDate = value
}
// GetSubscriptionUntilDate returns value of SubscriptionUntilDate conditional field and
// boolean which is true if field was set.
func (c *ChannelParticipantSelf) GetSubscriptionUntilDate() (value int, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(1) {
return value, false
}
return c.SubscriptionUntilDate, true
}
// ChannelParticipantCreator represents TL type `channelParticipantCreator#2fe601d3`.
// Channel/supergroup creator
//
// See https://core.telegram.org/constructor/channelParticipantCreator for reference.
type ChannelParticipantCreator struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// User ID
UserID int64
// Creator admin rights
AdminRights ChatAdminRights
// The role (rank) of the group creator in the group: just an arbitrary string, admin by
// default
//
// Use SetRank and GetRank helpers.
Rank string
}
// ChannelParticipantCreatorTypeID is TL type id of ChannelParticipantCreator.
const ChannelParticipantCreatorTypeID = 0x2fe601d3
// construct implements constructor of ChannelParticipantClass.
func (c ChannelParticipantCreator) construct() ChannelParticipantClass { return &c }
// Ensuring interfaces in compile-time for ChannelParticipantCreator.
var (
_ bin.Encoder = &ChannelParticipantCreator{}
_ bin.Decoder = &ChannelParticipantCreator{}
_ bin.BareEncoder = &ChannelParticipantCreator{}
_ bin.BareDecoder = &ChannelParticipantCreator{}
_ ChannelParticipantClass = &ChannelParticipantCreator{}
)
func (c *ChannelParticipantCreator) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.UserID == 0) {
return false
}
if !(c.AdminRights.Zero()) {
return false
}
if !(c.Rank == "") {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChannelParticipantCreator) String() string {
if c == nil {
return "ChannelParticipantCreator(nil)"
}
type Alias ChannelParticipantCreator
return fmt.Sprintf("ChannelParticipantCreator%+v", Alias(*c))
}
// FillFrom fills ChannelParticipantCreator from given interface.
func (c *ChannelParticipantCreator) FillFrom(from interface {
GetUserID() (value int64)
GetAdminRights() (value ChatAdminRights)
GetRank() (value string, ok bool)
}) {
c.UserID = from.GetUserID()
c.AdminRights = from.GetAdminRights()
if val, ok := from.GetRank(); ok {
c.Rank = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChannelParticipantCreator) TypeID() uint32 {
return ChannelParticipantCreatorTypeID
}
// TypeName returns name of type in TL schema.
func (*ChannelParticipantCreator) TypeName() string {
return "channelParticipantCreator"
}
// TypeInfo returns info about TL type.
func (c *ChannelParticipantCreator) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "channelParticipantCreator",
ID: ChannelParticipantCreatorTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "UserID",
SchemaName: "user_id",
},
{
Name: "AdminRights",
SchemaName: "admin_rights",
},
{
Name: "Rank",
SchemaName: "rank",
Null: !c.Flags.Has(0),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *ChannelParticipantCreator) SetFlags() {
if !(c.Rank == "") {
c.Flags.Set(0)
}
}
// Encode implements bin.Encoder.
func (c *ChannelParticipantCreator) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantCreator#2fe601d3 as nil")
}
b.PutID(ChannelParticipantCreatorTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChannelParticipantCreator) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantCreator#2fe601d3 as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantCreator#2fe601d3: field flags: %w", err)
}
b.PutLong(c.UserID)
if err := c.AdminRights.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantCreator#2fe601d3: field admin_rights: %w", err)
}
if c.Flags.Has(0) {
b.PutString(c.Rank)
}
return nil
}
// Decode implements bin.Decoder.
func (c *ChannelParticipantCreator) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantCreator#2fe601d3 to nil")
}
if err := b.ConsumeID(ChannelParticipantCreatorTypeID); err != nil {
return fmt.Errorf("unable to decode channelParticipantCreator#2fe601d3: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChannelParticipantCreator) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantCreator#2fe601d3 to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelParticipantCreator#2fe601d3: field flags: %w", err)
}
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantCreator#2fe601d3: field user_id: %w", err)
}
c.UserID = value
}
{
if err := c.AdminRights.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelParticipantCreator#2fe601d3: field admin_rights: %w", err)
}
}
if c.Flags.Has(0) {
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantCreator#2fe601d3: field rank: %w", err)
}
c.Rank = value
}
return nil
}
// GetUserID returns value of UserID field.
func (c *ChannelParticipantCreator) GetUserID() (value int64) {
if c == nil {
return
}
return c.UserID
}
// GetAdminRights returns value of AdminRights field.
func (c *ChannelParticipantCreator) GetAdminRights() (value ChatAdminRights) {
if c == nil {
return
}
return c.AdminRights
}
// SetRank sets value of Rank conditional field.
func (c *ChannelParticipantCreator) SetRank(value string) {
c.Flags.Set(0)
c.Rank = value
}
// GetRank returns value of Rank conditional field and
// boolean which is true if field was set.
func (c *ChannelParticipantCreator) GetRank() (value string, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(0) {
return value, false
}
return c.Rank, true
}
// ChannelParticipantAdmin represents TL type `channelParticipantAdmin#34c3bb53`.
// Admin
//
// See https://core.telegram.org/constructor/channelParticipantAdmin for reference.
type ChannelParticipantAdmin struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Can this admin promote other admins with the same permissions?
CanEdit bool
// Is this the current user
Self bool
// Admin user ID
UserID int64
// User that invited the admin to the channel/group
//
// Use SetInviterID and GetInviterID helpers.
InviterID int64
// User that promoted the user to admin
PromotedBy int64
// When did the user join
Date int
// Admin rights¹
//
// Links:
// 1) https://core.telegram.org/api/rights
AdminRights ChatAdminRights
// The role (rank) of the admin in the group: just an arbitrary string, admin by default
//
// Use SetRank and GetRank helpers.
Rank string
}
// ChannelParticipantAdminTypeID is TL type id of ChannelParticipantAdmin.
const ChannelParticipantAdminTypeID = 0x34c3bb53
// construct implements constructor of ChannelParticipantClass.
func (c ChannelParticipantAdmin) construct() ChannelParticipantClass { return &c }
// Ensuring interfaces in compile-time for ChannelParticipantAdmin.
var (
_ bin.Encoder = &ChannelParticipantAdmin{}
_ bin.Decoder = &ChannelParticipantAdmin{}
_ bin.BareEncoder = &ChannelParticipantAdmin{}
_ bin.BareDecoder = &ChannelParticipantAdmin{}
_ ChannelParticipantClass = &ChannelParticipantAdmin{}
)
func (c *ChannelParticipantAdmin) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.CanEdit == false) {
return false
}
if !(c.Self == false) {
return false
}
if !(c.UserID == 0) {
return false
}
if !(c.InviterID == 0) {
return false
}
if !(c.PromotedBy == 0) {
return false
}
if !(c.Date == 0) {
return false
}
if !(c.AdminRights.Zero()) {
return false
}
if !(c.Rank == "") {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChannelParticipantAdmin) String() string {
if c == nil {
return "ChannelParticipantAdmin(nil)"
}
type Alias ChannelParticipantAdmin
return fmt.Sprintf("ChannelParticipantAdmin%+v", Alias(*c))
}
// FillFrom fills ChannelParticipantAdmin from given interface.
func (c *ChannelParticipantAdmin) FillFrom(from interface {
GetCanEdit() (value bool)
GetSelf() (value bool)
GetUserID() (value int64)
GetInviterID() (value int64, ok bool)
GetPromotedBy() (value int64)
GetDate() (value int)
GetAdminRights() (value ChatAdminRights)
GetRank() (value string, ok bool)
}) {
c.CanEdit = from.GetCanEdit()
c.Self = from.GetSelf()
c.UserID = from.GetUserID()
if val, ok := from.GetInviterID(); ok {
c.InviterID = val
}
c.PromotedBy = from.GetPromotedBy()
c.Date = from.GetDate()
c.AdminRights = from.GetAdminRights()
if val, ok := from.GetRank(); ok {
c.Rank = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChannelParticipantAdmin) TypeID() uint32 {
return ChannelParticipantAdminTypeID
}
// TypeName returns name of type in TL schema.
func (*ChannelParticipantAdmin) TypeName() string {
return "channelParticipantAdmin"
}
// TypeInfo returns info about TL type.
func (c *ChannelParticipantAdmin) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "channelParticipantAdmin",
ID: ChannelParticipantAdminTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "CanEdit",
SchemaName: "can_edit",
Null: !c.Flags.Has(0),
},
{
Name: "Self",
SchemaName: "self",
Null: !c.Flags.Has(1),
},
{
Name: "UserID",
SchemaName: "user_id",
},
{
Name: "InviterID",
SchemaName: "inviter_id",
Null: !c.Flags.Has(1),
},
{
Name: "PromotedBy",
SchemaName: "promoted_by",
},
{
Name: "Date",
SchemaName: "date",
},
{
Name: "AdminRights",
SchemaName: "admin_rights",
},
{
Name: "Rank",
SchemaName: "rank",
Null: !c.Flags.Has(2),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *ChannelParticipantAdmin) SetFlags() {
if !(c.CanEdit == false) {
c.Flags.Set(0)
}
if !(c.Self == false) {
c.Flags.Set(1)
}
if !(c.InviterID == 0) {
c.Flags.Set(1)
}
if !(c.Rank == "") {
c.Flags.Set(2)
}
}
// Encode implements bin.Encoder.
func (c *ChannelParticipantAdmin) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantAdmin#34c3bb53 as nil")
}
b.PutID(ChannelParticipantAdminTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChannelParticipantAdmin) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantAdmin#34c3bb53 as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantAdmin#34c3bb53: field flags: %w", err)
}
b.PutLong(c.UserID)
if c.Flags.Has(1) {
b.PutLong(c.InviterID)
}
b.PutLong(c.PromotedBy)
b.PutInt(c.Date)
if err := c.AdminRights.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantAdmin#34c3bb53: field admin_rights: %w", err)
}
if c.Flags.Has(2) {
b.PutString(c.Rank)
}
return nil
}
// Decode implements bin.Decoder.
func (c *ChannelParticipantAdmin) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantAdmin#34c3bb53 to nil")
}
if err := b.ConsumeID(ChannelParticipantAdminTypeID); err != nil {
return fmt.Errorf("unable to decode channelParticipantAdmin#34c3bb53: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChannelParticipantAdmin) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantAdmin#34c3bb53 to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelParticipantAdmin#34c3bb53: field flags: %w", err)
}
}
c.CanEdit = c.Flags.Has(0)
c.Self = c.Flags.Has(1)
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantAdmin#34c3bb53: field user_id: %w", err)
}
c.UserID = value
}
if c.Flags.Has(1) {
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantAdmin#34c3bb53: field inviter_id: %w", err)
}
c.InviterID = value
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantAdmin#34c3bb53: field promoted_by: %w", err)
}
c.PromotedBy = value
}
{
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantAdmin#34c3bb53: field date: %w", err)
}
c.Date = value
}
{
if err := c.AdminRights.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelParticipantAdmin#34c3bb53: field admin_rights: %w", err)
}
}
if c.Flags.Has(2) {
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantAdmin#34c3bb53: field rank: %w", err)
}
c.Rank = value
}
return nil
}
// SetCanEdit sets value of CanEdit conditional field.
func (c *ChannelParticipantAdmin) SetCanEdit(value bool) {
if value {
c.Flags.Set(0)
c.CanEdit = true
} else {
c.Flags.Unset(0)
c.CanEdit = false
}
}
// GetCanEdit returns value of CanEdit conditional field.
func (c *ChannelParticipantAdmin) GetCanEdit() (value bool) {
if c == nil {
return
}
return c.Flags.Has(0)
}
// SetSelf sets value of Self conditional field.
func (c *ChannelParticipantAdmin) SetSelf(value bool) {
if value {
c.Flags.Set(1)
c.Self = true
} else {
c.Flags.Unset(1)
c.Self = false
}
}
// GetSelf returns value of Self conditional field.
func (c *ChannelParticipantAdmin) GetSelf() (value bool) {
if c == nil {
return
}
return c.Flags.Has(1)
}
// GetUserID returns value of UserID field.
func (c *ChannelParticipantAdmin) GetUserID() (value int64) {
if c == nil {
return
}
return c.UserID
}
// SetInviterID sets value of InviterID conditional field.
func (c *ChannelParticipantAdmin) SetInviterID(value int64) {
c.Flags.Set(1)
c.InviterID = value
}
// GetInviterID returns value of InviterID conditional field and
// boolean which is true if field was set.
func (c *ChannelParticipantAdmin) GetInviterID() (value int64, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(1) {
return value, false
}
return c.InviterID, true
}
// GetPromotedBy returns value of PromotedBy field.
func (c *ChannelParticipantAdmin) GetPromotedBy() (value int64) {
if c == nil {
return
}
return c.PromotedBy
}
// GetDate returns value of Date field.
func (c *ChannelParticipantAdmin) GetDate() (value int) {
if c == nil {
return
}
return c.Date
}
// GetAdminRights returns value of AdminRights field.
func (c *ChannelParticipantAdmin) GetAdminRights() (value ChatAdminRights) {
if c == nil {
return
}
return c.AdminRights
}
// SetRank sets value of Rank conditional field.
func (c *ChannelParticipantAdmin) SetRank(value string) {
c.Flags.Set(2)
c.Rank = value
}
// GetRank returns value of Rank conditional field and
// boolean which is true if field was set.
func (c *ChannelParticipantAdmin) GetRank() (value string, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(2) {
return value, false
}
return c.Rank, true
}
// ChannelParticipantBanned represents TL type `channelParticipantBanned#6df8014e`.
// Banned/kicked user
//
// See https://core.telegram.org/constructor/channelParticipantBanned for reference.
type ChannelParticipantBanned struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Whether the user has left the group
Left bool
// The banned peer
Peer PeerClass
// User was kicked by the specified admin
KickedBy int64
// When did the user join the group
Date int
// Banned rights¹
//
// Links:
// 1) https://core.telegram.org/api/rights
BannedRights ChatBannedRights
}
// ChannelParticipantBannedTypeID is TL type id of ChannelParticipantBanned.
const ChannelParticipantBannedTypeID = 0x6df8014e
// construct implements constructor of ChannelParticipantClass.
func (c ChannelParticipantBanned) construct() ChannelParticipantClass { return &c }
// Ensuring interfaces in compile-time for ChannelParticipantBanned.
var (
_ bin.Encoder = &ChannelParticipantBanned{}
_ bin.Decoder = &ChannelParticipantBanned{}
_ bin.BareEncoder = &ChannelParticipantBanned{}
_ bin.BareDecoder = &ChannelParticipantBanned{}
_ ChannelParticipantClass = &ChannelParticipantBanned{}
)
func (c *ChannelParticipantBanned) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.Left == false) {
return false
}
if !(c.Peer == nil) {
return false
}
if !(c.KickedBy == 0) {
return false
}
if !(c.Date == 0) {
return false
}
if !(c.BannedRights.Zero()) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChannelParticipantBanned) String() string {
if c == nil {
return "ChannelParticipantBanned(nil)"
}
type Alias ChannelParticipantBanned
return fmt.Sprintf("ChannelParticipantBanned%+v", Alias(*c))
}
// FillFrom fills ChannelParticipantBanned from given interface.
func (c *ChannelParticipantBanned) FillFrom(from interface {
GetLeft() (value bool)
GetPeer() (value PeerClass)
GetKickedBy() (value int64)
GetDate() (value int)
GetBannedRights() (value ChatBannedRights)
}) {
c.Left = from.GetLeft()
c.Peer = from.GetPeer()
c.KickedBy = from.GetKickedBy()
c.Date = from.GetDate()
c.BannedRights = from.GetBannedRights()
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChannelParticipantBanned) TypeID() uint32 {
return ChannelParticipantBannedTypeID
}
// TypeName returns name of type in TL schema.
func (*ChannelParticipantBanned) TypeName() string {
return "channelParticipantBanned"
}
// TypeInfo returns info about TL type.
func (c *ChannelParticipantBanned) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "channelParticipantBanned",
ID: ChannelParticipantBannedTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "Left",
SchemaName: "left",
Null: !c.Flags.Has(0),
},
{
Name: "Peer",
SchemaName: "peer",
},
{
Name: "KickedBy",
SchemaName: "kicked_by",
},
{
Name: "Date",
SchemaName: "date",
},
{
Name: "BannedRights",
SchemaName: "banned_rights",
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *ChannelParticipantBanned) SetFlags() {
if !(c.Left == false) {
c.Flags.Set(0)
}
}
// Encode implements bin.Encoder.
func (c *ChannelParticipantBanned) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantBanned#6df8014e as nil")
}
b.PutID(ChannelParticipantBannedTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChannelParticipantBanned) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantBanned#6df8014e as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantBanned#6df8014e: field flags: %w", err)
}
if c.Peer == nil {
return fmt.Errorf("unable to encode channelParticipantBanned#6df8014e: field peer is nil")
}
if err := c.Peer.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantBanned#6df8014e: field peer: %w", err)
}
b.PutLong(c.KickedBy)
b.PutInt(c.Date)
if err := c.BannedRights.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantBanned#6df8014e: field banned_rights: %w", err)
}
return nil
}
// Decode implements bin.Decoder.
func (c *ChannelParticipantBanned) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantBanned#6df8014e to nil")
}
if err := b.ConsumeID(ChannelParticipantBannedTypeID); err != nil {
return fmt.Errorf("unable to decode channelParticipantBanned#6df8014e: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChannelParticipantBanned) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantBanned#6df8014e to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelParticipantBanned#6df8014e: field flags: %w", err)
}
}
c.Left = c.Flags.Has(0)
{
value, err := DecodePeer(b)
if err != nil {
return fmt.Errorf("unable to decode channelParticipantBanned#6df8014e: field peer: %w", err)
}
c.Peer = value
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantBanned#6df8014e: field kicked_by: %w", err)
}
c.KickedBy = value
}
{
value, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode channelParticipantBanned#6df8014e: field date: %w", err)
}
c.Date = value
}
{
if err := c.BannedRights.Decode(b); err != nil {
return fmt.Errorf("unable to decode channelParticipantBanned#6df8014e: field banned_rights: %w", err)
}
}
return nil
}
// SetLeft sets value of Left conditional field.
func (c *ChannelParticipantBanned) SetLeft(value bool) {
if value {
c.Flags.Set(0)
c.Left = true
} else {
c.Flags.Unset(0)
c.Left = false
}
}
// GetLeft returns value of Left conditional field.
func (c *ChannelParticipantBanned) GetLeft() (value bool) {
if c == nil {
return
}
return c.Flags.Has(0)
}
// GetPeer returns value of Peer field.
func (c *ChannelParticipantBanned) GetPeer() (value PeerClass) {
if c == nil {
return
}
return c.Peer
}
// GetKickedBy returns value of KickedBy field.
func (c *ChannelParticipantBanned) GetKickedBy() (value int64) {
if c == nil {
return
}
return c.KickedBy
}
// GetDate returns value of Date field.
func (c *ChannelParticipantBanned) GetDate() (value int) {
if c == nil {
return
}
return c.Date
}
// GetBannedRights returns value of BannedRights field.
func (c *ChannelParticipantBanned) GetBannedRights() (value ChatBannedRights) {
if c == nil {
return
}
return c.BannedRights
}
// ChannelParticipantLeft represents TL type `channelParticipantLeft#1b03f006`.
// A participant that left the channel/supergroup
//
// See https://core.telegram.org/constructor/channelParticipantLeft for reference.
type ChannelParticipantLeft struct {
// The peer that left
Peer PeerClass
}
// ChannelParticipantLeftTypeID is TL type id of ChannelParticipantLeft.
const ChannelParticipantLeftTypeID = 0x1b03f006
// construct implements constructor of ChannelParticipantClass.
func (c ChannelParticipantLeft) construct() ChannelParticipantClass { return &c }
// Ensuring interfaces in compile-time for ChannelParticipantLeft.
var (
_ bin.Encoder = &ChannelParticipantLeft{}
_ bin.Decoder = &ChannelParticipantLeft{}
_ bin.BareEncoder = &ChannelParticipantLeft{}
_ bin.BareDecoder = &ChannelParticipantLeft{}
_ ChannelParticipantClass = &ChannelParticipantLeft{}
)
func (c *ChannelParticipantLeft) Zero() bool {
if c == nil {
return true
}
if !(c.Peer == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *ChannelParticipantLeft) String() string {
if c == nil {
return "ChannelParticipantLeft(nil)"
}
type Alias ChannelParticipantLeft
return fmt.Sprintf("ChannelParticipantLeft%+v", Alias(*c))
}
// FillFrom fills ChannelParticipantLeft from given interface.
func (c *ChannelParticipantLeft) FillFrom(from interface {
GetPeer() (value PeerClass)
}) {
c.Peer = from.GetPeer()
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*ChannelParticipantLeft) TypeID() uint32 {
return ChannelParticipantLeftTypeID
}
// TypeName returns name of type in TL schema.
func (*ChannelParticipantLeft) TypeName() string {
return "channelParticipantLeft"
}
// TypeInfo returns info about TL type.
func (c *ChannelParticipantLeft) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "channelParticipantLeft",
ID: ChannelParticipantLeftTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "Peer",
SchemaName: "peer",
},
}
return typ
}
// Encode implements bin.Encoder.
func (c *ChannelParticipantLeft) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantLeft#1b03f006 as nil")
}
b.PutID(ChannelParticipantLeftTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *ChannelParticipantLeft) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode channelParticipantLeft#1b03f006 as nil")
}
if c.Peer == nil {
return fmt.Errorf("unable to encode channelParticipantLeft#1b03f006: field peer is nil")
}
if err := c.Peer.Encode(b); err != nil {
return fmt.Errorf("unable to encode channelParticipantLeft#1b03f006: field peer: %w", err)
}
return nil
}
// Decode implements bin.Decoder.
func (c *ChannelParticipantLeft) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantLeft#1b03f006 to nil")
}
if err := b.ConsumeID(ChannelParticipantLeftTypeID); err != nil {
return fmt.Errorf("unable to decode channelParticipantLeft#1b03f006: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *ChannelParticipantLeft) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode channelParticipantLeft#1b03f006 to nil")
}
{
value, err := DecodePeer(b)
if err != nil {
return fmt.Errorf("unable to decode channelParticipantLeft#1b03f006: field peer: %w", err)
}
c.Peer = value
}
return nil
}
// GetPeer returns value of Peer field.
func (c *ChannelParticipantLeft) GetPeer() (value PeerClass) {
if c == nil {
return
}
return c.Peer
}
// ChannelParticipantClassName is schema name of ChannelParticipantClass.
const ChannelParticipantClassName = "ChannelParticipant"
// ChannelParticipantClass represents ChannelParticipant generic type.
//
// See https://core.telegram.org/type/ChannelParticipant for reference.
//
// Example:
//
// g, err := tg.DecodeChannelParticipant(buf)
// if err != nil {
// panic(err)
// }
// switch v := g.(type) {
// case *tg.ChannelParticipant: // channelParticipant#cb397619
// case *tg.ChannelParticipantSelf: // channelParticipantSelf#4f607bef
// case *tg.ChannelParticipantCreator: // channelParticipantCreator#2fe601d3
// case *tg.ChannelParticipantAdmin: // channelParticipantAdmin#34c3bb53
// case *tg.ChannelParticipantBanned: // channelParticipantBanned#6df8014e
// case *tg.ChannelParticipantLeft: // channelParticipantLeft#1b03f006
// default: panic(v)
// }
type ChannelParticipantClass interface {
bin.Encoder
bin.Decoder
bin.BareEncoder
bin.BareDecoder
construct() ChannelParticipantClass
// 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
}
// DecodeChannelParticipant implements binary de-serialization for ChannelParticipantClass.
func DecodeChannelParticipant(buf *bin.Buffer) (ChannelParticipantClass, error) {
id, err := buf.PeekID()
if err != nil {
return nil, err
}
switch id {
case ChannelParticipantTypeID:
// Decoding channelParticipant#cb397619.
v := ChannelParticipant{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChannelParticipantClass: %w", err)
}
return &v, nil
case ChannelParticipantSelfTypeID:
// Decoding channelParticipantSelf#4f607bef.
v := ChannelParticipantSelf{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChannelParticipantClass: %w", err)
}
return &v, nil
case ChannelParticipantCreatorTypeID:
// Decoding channelParticipantCreator#2fe601d3.
v := ChannelParticipantCreator{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChannelParticipantClass: %w", err)
}
return &v, nil
case ChannelParticipantAdminTypeID:
// Decoding channelParticipantAdmin#34c3bb53.
v := ChannelParticipantAdmin{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChannelParticipantClass: %w", err)
}
return &v, nil
case ChannelParticipantBannedTypeID:
// Decoding channelParticipantBanned#6df8014e.
v := ChannelParticipantBanned{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChannelParticipantClass: %w", err)
}
return &v, nil
case ChannelParticipantLeftTypeID:
// Decoding channelParticipantLeft#1b03f006.
v := ChannelParticipantLeft{}
if err := v.Decode(buf); err != nil {
return nil, fmt.Errorf("unable to decode ChannelParticipantClass: %w", err)
}
return &v, nil
default:
return nil, fmt.Errorf("unable to decode ChannelParticipantClass: %w", bin.NewUnexpectedID(id))
}
}
// ChannelParticipant boxes the ChannelParticipantClass providing a helper.
type ChannelParticipantBox struct {
ChannelParticipant ChannelParticipantClass
}
// Decode implements bin.Decoder for ChannelParticipantBox.
func (b *ChannelParticipantBox) Decode(buf *bin.Buffer) error {
if b == nil {
return fmt.Errorf("unable to decode ChannelParticipantBox to nil")
}
v, err := DecodeChannelParticipant(buf)
if err != nil {
return fmt.Errorf("unable to decode boxed value: %w", err)
}
b.ChannelParticipant = v
return nil
}
// Encode implements bin.Encode for ChannelParticipantBox.
func (b *ChannelParticipantBox) Encode(buf *bin.Buffer) error {
if b == nil || b.ChannelParticipant == nil {
return fmt.Errorf("unable to encode ChannelParticipantClass as nil")
}
return b.ChannelParticipant.Encode(buf)
}