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

1507 lines
39 KiB
Go

// Code generated by gotdgen, DO NOT EDIT.
package tdapi
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{}
)
// Message represents TL type `message#1ca31b5b`.
type Message struct {
// Message identifier; unique for the chat to which the message belongs
ID int64
// Identifier of the sender of the message
SenderID MessageSenderClass
// Chat identifier
ChatID int64
// The sending state of the message; may be null if the message isn't being sent and
// didn't fail to be sent
SendingState MessageSendingStateClass
// The scheduling state of the message; may be null if the message isn't scheduled
SchedulingState MessageSchedulingStateClass
// True, if the message is outgoing
IsOutgoing bool
// True, if the message is pinned
IsPinned bool
// True, if the message was sent because of a scheduled action by the message sender, for
// example, as away, or greeting service message
IsFromOffline bool
// True, if content of the message can be saved locally
CanBeSaved bool
// True, if media timestamp entities refers to a media in this message as opposed to a
// media in the replied message
HasTimestampedMedia bool
// True, if the message is a channel post. All messages to channels are channel posts,
// all other messages are not channel posts
IsChannelPost bool
// True, if the message contains an unread mention for the current user
ContainsUnreadMention bool
// Point in time (Unix timestamp) when the message was sent; 0 for scheduled messages
Date int32
// Point in time (Unix timestamp) when the message was last edited; 0 for scheduled
// messages
EditDate int32
// Information about the initial message sender; may be null if none or unknown
ForwardInfo MessageForwardInfo
// Information about the initial message for messages created with importMessages; may be
// null if the message isn't imported
ImportInfo MessageImportInfo
// Information about interactions with the message; may be null if none
InteractionInfo MessageInteractionInfo
// Information about unread reactions added to the message
UnreadReactions []UnreadReaction
// Information about fact-check added to the message; may be null if none
FactCheck FactCheck
// Information about the message or the story this message is replying to; may be null if
// none
ReplyTo MessageReplyToClass
// If non-zero, the identifier of the message thread the message belongs to; unique
// within the chat to which the message belongs
MessageThreadID int64
// Identifier of the topic within the chat to which the message belongs; may be null if
// none
TopicID MessageTopicClass
// The message's self-destruct type; may be null if none
SelfDestructType MessageSelfDestructTypeClass
// Time left before the message self-destruct timer expires, in seconds; 0 if
// self-destruction isn't scheduled yet
SelfDestructIn float64
// Time left before the message will be automatically deleted by message_auto_delete_time
// setting of the chat, in seconds; 0 if never
AutoDeleteIn float64
// If non-zero, the user identifier of the inline bot through which this message was sent
ViaBotUserID int64
// If non-zero, the user identifier of the business bot that sent this message
SenderBusinessBotUserID int64
// Number of times the sender of the message boosted the supergroup at the time the
// message was sent; 0 if none or unknown. For messages sent by the current user,
// supergroupFullInfo.my_boost_count must be used instead
SenderBoostCount int32
// The number of Telegram Stars the sender paid to send the message
PaidMessageStarCount int64
// For channel posts and anonymous group messages, optional author signature
AuthorSignature string
// Unique identifier of an album this message belongs to; 0 if none. Only audios,
// documents, photos and videos can be grouped together in albums
MediaAlbumID int64
// Unique identifier of the effect added to the message; 0 if none
EffectID int64
// True, if media content of the message must be hidden with 18+ spoiler
HasSensitiveContent bool
// If non-empty, contains a human-readable description of the reason why access to this
// message must be restricted
RestrictionReason string
// Content of the message
Content MessageContentClass
// Reply markup for the message; may be null if none
ReplyMarkup ReplyMarkupClass
}
// MessageTypeID is TL type id of Message.
const MessageTypeID = 0x1ca31b5b
// Ensuring interfaces in compile-time for Message.
var (
_ bin.Encoder = &Message{}
_ bin.Decoder = &Message{}
_ bin.BareEncoder = &Message{}
_ bin.BareDecoder = &Message{}
)
func (m *Message) Zero() bool {
if m == nil {
return true
}
if !(m.ID == 0) {
return false
}
if !(m.SenderID == nil) {
return false
}
if !(m.ChatID == 0) {
return false
}
if !(m.SendingState == nil) {
return false
}
if !(m.SchedulingState == nil) {
return false
}
if !(m.IsOutgoing == false) {
return false
}
if !(m.IsPinned == false) {
return false
}
if !(m.IsFromOffline == false) {
return false
}
if !(m.CanBeSaved == false) {
return false
}
if !(m.HasTimestampedMedia == false) {
return false
}
if !(m.IsChannelPost == false) {
return false
}
if !(m.ContainsUnreadMention == false) {
return false
}
if !(m.Date == 0) {
return false
}
if !(m.EditDate == 0) {
return false
}
if !(m.ForwardInfo.Zero()) {
return false
}
if !(m.ImportInfo.Zero()) {
return false
}
if !(m.InteractionInfo.Zero()) {
return false
}
if !(m.UnreadReactions == nil) {
return false
}
if !(m.FactCheck.Zero()) {
return false
}
if !(m.ReplyTo == nil) {
return false
}
if !(m.MessageThreadID == 0) {
return false
}
if !(m.TopicID == nil) {
return false
}
if !(m.SelfDestructType == nil) {
return false
}
if !(m.SelfDestructIn == 0) {
return false
}
if !(m.AutoDeleteIn == 0) {
return false
}
if !(m.ViaBotUserID == 0) {
return false
}
if !(m.SenderBusinessBotUserID == 0) {
return false
}
if !(m.SenderBoostCount == 0) {
return false
}
if !(m.PaidMessageStarCount == 0) {
return false
}
if !(m.AuthorSignature == "") {
return false
}
if !(m.MediaAlbumID == 0) {
return false
}
if !(m.EffectID == 0) {
return false
}
if !(m.HasSensitiveContent == false) {
return false
}
if !(m.RestrictionReason == "") {
return false
}
if !(m.Content == nil) {
return false
}
if !(m.ReplyMarkup == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (m *Message) String() string {
if m == nil {
return "Message(nil)"
}
type Alias Message
return fmt.Sprintf("Message%+v", Alias(*m))
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*Message) TypeID() uint32 {
return MessageTypeID
}
// TypeName returns name of type in TL schema.
func (*Message) TypeName() string {
return "message"
}
// TypeInfo returns info about TL type.
func (m *Message) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "message",
ID: MessageTypeID,
}
if m == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "ID",
SchemaName: "id",
},
{
Name: "SenderID",
SchemaName: "sender_id",
},
{
Name: "ChatID",
SchemaName: "chat_id",
},
{
Name: "SendingState",
SchemaName: "sending_state",
},
{
Name: "SchedulingState",
SchemaName: "scheduling_state",
},
{
Name: "IsOutgoing",
SchemaName: "is_outgoing",
},
{
Name: "IsPinned",
SchemaName: "is_pinned",
},
{
Name: "IsFromOffline",
SchemaName: "is_from_offline",
},
{
Name: "CanBeSaved",
SchemaName: "can_be_saved",
},
{
Name: "HasTimestampedMedia",
SchemaName: "has_timestamped_media",
},
{
Name: "IsChannelPost",
SchemaName: "is_channel_post",
},
{
Name: "ContainsUnreadMention",
SchemaName: "contains_unread_mention",
},
{
Name: "Date",
SchemaName: "date",
},
{
Name: "EditDate",
SchemaName: "edit_date",
},
{
Name: "ForwardInfo",
SchemaName: "forward_info",
},
{
Name: "ImportInfo",
SchemaName: "import_info",
},
{
Name: "InteractionInfo",
SchemaName: "interaction_info",
},
{
Name: "UnreadReactions",
SchemaName: "unread_reactions",
},
{
Name: "FactCheck",
SchemaName: "fact_check",
},
{
Name: "ReplyTo",
SchemaName: "reply_to",
},
{
Name: "MessageThreadID",
SchemaName: "message_thread_id",
},
{
Name: "TopicID",
SchemaName: "topic_id",
},
{
Name: "SelfDestructType",
SchemaName: "self_destruct_type",
},
{
Name: "SelfDestructIn",
SchemaName: "self_destruct_in",
},
{
Name: "AutoDeleteIn",
SchemaName: "auto_delete_in",
},
{
Name: "ViaBotUserID",
SchemaName: "via_bot_user_id",
},
{
Name: "SenderBusinessBotUserID",
SchemaName: "sender_business_bot_user_id",
},
{
Name: "SenderBoostCount",
SchemaName: "sender_boost_count",
},
{
Name: "PaidMessageStarCount",
SchemaName: "paid_message_star_count",
},
{
Name: "AuthorSignature",
SchemaName: "author_signature",
},
{
Name: "MediaAlbumID",
SchemaName: "media_album_id",
},
{
Name: "EffectID",
SchemaName: "effect_id",
},
{
Name: "HasSensitiveContent",
SchemaName: "has_sensitive_content",
},
{
Name: "RestrictionReason",
SchemaName: "restriction_reason",
},
{
Name: "Content",
SchemaName: "content",
},
{
Name: "ReplyMarkup",
SchemaName: "reply_markup",
},
}
return typ
}
// Encode implements bin.Encoder.
func (m *Message) Encode(b *bin.Buffer) error {
if m == nil {
return fmt.Errorf("can't encode message#1ca31b5b as nil")
}
b.PutID(MessageTypeID)
return m.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (m *Message) EncodeBare(b *bin.Buffer) error {
if m == nil {
return fmt.Errorf("can't encode message#1ca31b5b as nil")
}
b.PutInt53(m.ID)
if m.SenderID == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field sender_id is nil")
}
if err := m.SenderID.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field sender_id: %w", err)
}
b.PutInt53(m.ChatID)
if m.SendingState == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field sending_state is nil")
}
if err := m.SendingState.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field sending_state: %w", err)
}
if m.SchedulingState == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field scheduling_state is nil")
}
if err := m.SchedulingState.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field scheduling_state: %w", err)
}
b.PutBool(m.IsOutgoing)
b.PutBool(m.IsPinned)
b.PutBool(m.IsFromOffline)
b.PutBool(m.CanBeSaved)
b.PutBool(m.HasTimestampedMedia)
b.PutBool(m.IsChannelPost)
b.PutBool(m.ContainsUnreadMention)
b.PutInt32(m.Date)
b.PutInt32(m.EditDate)
if err := m.ForwardInfo.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field forward_info: %w", err)
}
if err := m.ImportInfo.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field import_info: %w", err)
}
if err := m.InteractionInfo.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field interaction_info: %w", err)
}
b.PutInt(len(m.UnreadReactions))
for idx, v := range m.UnreadReactions {
if err := v.EncodeBare(b); err != nil {
return fmt.Errorf("unable to encode bare message#1ca31b5b: field unread_reactions element with index %d: %w", idx, err)
}
}
if err := m.FactCheck.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field fact_check: %w", err)
}
if m.ReplyTo == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field reply_to is nil")
}
if err := m.ReplyTo.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field reply_to: %w", err)
}
b.PutInt53(m.MessageThreadID)
if m.TopicID == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field topic_id is nil")
}
if err := m.TopicID.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field topic_id: %w", err)
}
if m.SelfDestructType == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field self_destruct_type is nil")
}
if err := m.SelfDestructType.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field self_destruct_type: %w", err)
}
b.PutDouble(m.SelfDestructIn)
b.PutDouble(m.AutoDeleteIn)
b.PutInt53(m.ViaBotUserID)
b.PutInt53(m.SenderBusinessBotUserID)
b.PutInt32(m.SenderBoostCount)
b.PutInt53(m.PaidMessageStarCount)
b.PutString(m.AuthorSignature)
b.PutLong(m.MediaAlbumID)
b.PutLong(m.EffectID)
b.PutBool(m.HasSensitiveContent)
b.PutString(m.RestrictionReason)
if m.Content == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field content is nil")
}
if err := m.Content.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field content: %w", err)
}
if m.ReplyMarkup == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field reply_markup is nil")
}
if err := m.ReplyMarkup.Encode(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field reply_markup: %w", err)
}
return nil
}
// Decode implements bin.Decoder.
func (m *Message) Decode(b *bin.Buffer) error {
if m == nil {
return fmt.Errorf("can't decode message#1ca31b5b to nil")
}
if err := b.ConsumeID(MessageTypeID); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: %w", err)
}
return m.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (m *Message) DecodeBare(b *bin.Buffer) error {
if m == nil {
return fmt.Errorf("can't decode message#1ca31b5b to nil")
}
{
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field id: %w", err)
}
m.ID = value
}
{
value, err := DecodeMessageSender(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field sender_id: %w", err)
}
m.SenderID = value
}
{
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field chat_id: %w", err)
}
m.ChatID = value
}
{
value, err := DecodeMessageSendingState(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field sending_state: %w", err)
}
m.SendingState = value
}
{
value, err := DecodeMessageSchedulingState(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field scheduling_state: %w", err)
}
m.SchedulingState = value
}
{
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field is_outgoing: %w", err)
}
m.IsOutgoing = value
}
{
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field is_pinned: %w", err)
}
m.IsPinned = value
}
{
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field is_from_offline: %w", err)
}
m.IsFromOffline = value
}
{
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field can_be_saved: %w", err)
}
m.CanBeSaved = value
}
{
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field has_timestamped_media: %w", err)
}
m.HasTimestampedMedia = value
}
{
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field is_channel_post: %w", err)
}
m.IsChannelPost = value
}
{
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field contains_unread_mention: %w", err)
}
m.ContainsUnreadMention = value
}
{
value, err := b.Int32()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field date: %w", err)
}
m.Date = value
}
{
value, err := b.Int32()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field edit_date: %w", err)
}
m.EditDate = value
}
{
if err := m.ForwardInfo.Decode(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field forward_info: %w", err)
}
}
{
if err := m.ImportInfo.Decode(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field import_info: %w", err)
}
}
{
if err := m.InteractionInfo.Decode(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field interaction_info: %w", err)
}
}
{
headerLen, err := b.Int()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field unread_reactions: %w", err)
}
if headerLen > 0 {
m.UnreadReactions = make([]UnreadReaction, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
var value UnreadReaction
if err := value.DecodeBare(b); err != nil {
return fmt.Errorf("unable to decode bare message#1ca31b5b: field unread_reactions: %w", err)
}
m.UnreadReactions = append(m.UnreadReactions, value)
}
}
{
if err := m.FactCheck.Decode(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field fact_check: %w", err)
}
}
{
value, err := DecodeMessageReplyTo(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field reply_to: %w", err)
}
m.ReplyTo = value
}
{
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field message_thread_id: %w", err)
}
m.MessageThreadID = value
}
{
value, err := DecodeMessageTopic(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field topic_id: %w", err)
}
m.TopicID = value
}
{
value, err := DecodeMessageSelfDestructType(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field self_destruct_type: %w", err)
}
m.SelfDestructType = value
}
{
value, err := b.Double()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field self_destruct_in: %w", err)
}
m.SelfDestructIn = value
}
{
value, err := b.Double()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field auto_delete_in: %w", err)
}
m.AutoDeleteIn = value
}
{
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field via_bot_user_id: %w", err)
}
m.ViaBotUserID = value
}
{
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field sender_business_bot_user_id: %w", err)
}
m.SenderBusinessBotUserID = value
}
{
value, err := b.Int32()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field sender_boost_count: %w", err)
}
m.SenderBoostCount = value
}
{
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field paid_message_star_count: %w", err)
}
m.PaidMessageStarCount = value
}
{
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field author_signature: %w", err)
}
m.AuthorSignature = value
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field media_album_id: %w", err)
}
m.MediaAlbumID = value
}
{
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field effect_id: %w", err)
}
m.EffectID = value
}
{
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field has_sensitive_content: %w", err)
}
m.HasSensitiveContent = value
}
{
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field restriction_reason: %w", err)
}
m.RestrictionReason = value
}
{
value, err := DecodeMessageContent(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field content: %w", err)
}
m.Content = value
}
{
value, err := DecodeReplyMarkup(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field reply_markup: %w", err)
}
m.ReplyMarkup = value
}
return nil
}
// EncodeTDLibJSON implements tdjson.TDLibEncoder.
func (m *Message) EncodeTDLibJSON(b tdjson.Encoder) error {
if m == nil {
return fmt.Errorf("can't encode message#1ca31b5b as nil")
}
b.ObjStart()
b.PutID("message")
b.Comma()
b.FieldStart("id")
b.PutInt53(m.ID)
b.Comma()
b.FieldStart("sender_id")
if m.SenderID == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field sender_id is nil")
}
if err := m.SenderID.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field sender_id: %w", err)
}
b.Comma()
b.FieldStart("chat_id")
b.PutInt53(m.ChatID)
b.Comma()
b.FieldStart("sending_state")
if m.SendingState == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field sending_state is nil")
}
if err := m.SendingState.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field sending_state: %w", err)
}
b.Comma()
b.FieldStart("scheduling_state")
if m.SchedulingState == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field scheduling_state is nil")
}
if err := m.SchedulingState.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field scheduling_state: %w", err)
}
b.Comma()
b.FieldStart("is_outgoing")
b.PutBool(m.IsOutgoing)
b.Comma()
b.FieldStart("is_pinned")
b.PutBool(m.IsPinned)
b.Comma()
b.FieldStart("is_from_offline")
b.PutBool(m.IsFromOffline)
b.Comma()
b.FieldStart("can_be_saved")
b.PutBool(m.CanBeSaved)
b.Comma()
b.FieldStart("has_timestamped_media")
b.PutBool(m.HasTimestampedMedia)
b.Comma()
b.FieldStart("is_channel_post")
b.PutBool(m.IsChannelPost)
b.Comma()
b.FieldStart("contains_unread_mention")
b.PutBool(m.ContainsUnreadMention)
b.Comma()
b.FieldStart("date")
b.PutInt32(m.Date)
b.Comma()
b.FieldStart("edit_date")
b.PutInt32(m.EditDate)
b.Comma()
b.FieldStart("forward_info")
if err := m.ForwardInfo.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field forward_info: %w", err)
}
b.Comma()
b.FieldStart("import_info")
if err := m.ImportInfo.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field import_info: %w", err)
}
b.Comma()
b.FieldStart("interaction_info")
if err := m.InteractionInfo.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field interaction_info: %w", err)
}
b.Comma()
b.FieldStart("unread_reactions")
b.ArrStart()
for idx, v := range m.UnreadReactions {
if err := v.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field unread_reactions element with index %d: %w", idx, err)
}
b.Comma()
}
b.StripComma()
b.ArrEnd()
b.Comma()
b.FieldStart("fact_check")
if err := m.FactCheck.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field fact_check: %w", err)
}
b.Comma()
b.FieldStart("reply_to")
if m.ReplyTo == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field reply_to is nil")
}
if err := m.ReplyTo.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field reply_to: %w", err)
}
b.Comma()
b.FieldStart("message_thread_id")
b.PutInt53(m.MessageThreadID)
b.Comma()
b.FieldStart("topic_id")
if m.TopicID == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field topic_id is nil")
}
if err := m.TopicID.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field topic_id: %w", err)
}
b.Comma()
b.FieldStart("self_destruct_type")
if m.SelfDestructType == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field self_destruct_type is nil")
}
if err := m.SelfDestructType.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field self_destruct_type: %w", err)
}
b.Comma()
b.FieldStart("self_destruct_in")
b.PutDouble(m.SelfDestructIn)
b.Comma()
b.FieldStart("auto_delete_in")
b.PutDouble(m.AutoDeleteIn)
b.Comma()
b.FieldStart("via_bot_user_id")
b.PutInt53(m.ViaBotUserID)
b.Comma()
b.FieldStart("sender_business_bot_user_id")
b.PutInt53(m.SenderBusinessBotUserID)
b.Comma()
b.FieldStart("sender_boost_count")
b.PutInt32(m.SenderBoostCount)
b.Comma()
b.FieldStart("paid_message_star_count")
b.PutInt53(m.PaidMessageStarCount)
b.Comma()
b.FieldStart("author_signature")
b.PutString(m.AuthorSignature)
b.Comma()
b.FieldStart("media_album_id")
b.PutLong(m.MediaAlbumID)
b.Comma()
b.FieldStart("effect_id")
b.PutLong(m.EffectID)
b.Comma()
b.FieldStart("has_sensitive_content")
b.PutBool(m.HasSensitiveContent)
b.Comma()
b.FieldStart("restriction_reason")
b.PutString(m.RestrictionReason)
b.Comma()
b.FieldStart("content")
if m.Content == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field content is nil")
}
if err := m.Content.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field content: %w", err)
}
b.Comma()
b.FieldStart("reply_markup")
if m.ReplyMarkup == nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field reply_markup is nil")
}
if err := m.ReplyMarkup.EncodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to encode message#1ca31b5b: field reply_markup: %w", err)
}
b.Comma()
b.StripComma()
b.ObjEnd()
return nil
}
// DecodeTDLibJSON implements tdjson.TDLibDecoder.
func (m *Message) DecodeTDLibJSON(b tdjson.Decoder) error {
if m == nil {
return fmt.Errorf("can't decode message#1ca31b5b to nil")
}
return b.Obj(func(b tdjson.Decoder, key []byte) error {
switch string(key) {
case tdjson.TypeField:
if err := b.ConsumeID("message"); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: %w", err)
}
case "id":
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field id: %w", err)
}
m.ID = value
case "sender_id":
value, err := DecodeTDLibJSONMessageSender(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field sender_id: %w", err)
}
m.SenderID = value
case "chat_id":
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field chat_id: %w", err)
}
m.ChatID = value
case "sending_state":
value, err := DecodeTDLibJSONMessageSendingState(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field sending_state: %w", err)
}
m.SendingState = value
case "scheduling_state":
value, err := DecodeTDLibJSONMessageSchedulingState(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field scheduling_state: %w", err)
}
m.SchedulingState = value
case "is_outgoing":
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field is_outgoing: %w", err)
}
m.IsOutgoing = value
case "is_pinned":
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field is_pinned: %w", err)
}
m.IsPinned = value
case "is_from_offline":
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field is_from_offline: %w", err)
}
m.IsFromOffline = value
case "can_be_saved":
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field can_be_saved: %w", err)
}
m.CanBeSaved = value
case "has_timestamped_media":
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field has_timestamped_media: %w", err)
}
m.HasTimestampedMedia = value
case "is_channel_post":
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field is_channel_post: %w", err)
}
m.IsChannelPost = value
case "contains_unread_mention":
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field contains_unread_mention: %w", err)
}
m.ContainsUnreadMention = value
case "date":
value, err := b.Int32()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field date: %w", err)
}
m.Date = value
case "edit_date":
value, err := b.Int32()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field edit_date: %w", err)
}
m.EditDate = value
case "forward_info":
if err := m.ForwardInfo.DecodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field forward_info: %w", err)
}
case "import_info":
if err := m.ImportInfo.DecodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field import_info: %w", err)
}
case "interaction_info":
if err := m.InteractionInfo.DecodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field interaction_info: %w", err)
}
case "unread_reactions":
if err := b.Arr(func(b tdjson.Decoder) error {
var value UnreadReaction
if err := value.DecodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field unread_reactions: %w", err)
}
m.UnreadReactions = append(m.UnreadReactions, value)
return nil
}); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field unread_reactions: %w", err)
}
case "fact_check":
if err := m.FactCheck.DecodeTDLibJSON(b); err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field fact_check: %w", err)
}
case "reply_to":
value, err := DecodeTDLibJSONMessageReplyTo(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field reply_to: %w", err)
}
m.ReplyTo = value
case "message_thread_id":
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field message_thread_id: %w", err)
}
m.MessageThreadID = value
case "topic_id":
value, err := DecodeTDLibJSONMessageTopic(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field topic_id: %w", err)
}
m.TopicID = value
case "self_destruct_type":
value, err := DecodeTDLibJSONMessageSelfDestructType(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field self_destruct_type: %w", err)
}
m.SelfDestructType = value
case "self_destruct_in":
value, err := b.Double()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field self_destruct_in: %w", err)
}
m.SelfDestructIn = value
case "auto_delete_in":
value, err := b.Double()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field auto_delete_in: %w", err)
}
m.AutoDeleteIn = value
case "via_bot_user_id":
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field via_bot_user_id: %w", err)
}
m.ViaBotUserID = value
case "sender_business_bot_user_id":
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field sender_business_bot_user_id: %w", err)
}
m.SenderBusinessBotUserID = value
case "sender_boost_count":
value, err := b.Int32()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field sender_boost_count: %w", err)
}
m.SenderBoostCount = value
case "paid_message_star_count":
value, err := b.Int53()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field paid_message_star_count: %w", err)
}
m.PaidMessageStarCount = value
case "author_signature":
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field author_signature: %w", err)
}
m.AuthorSignature = value
case "media_album_id":
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field media_album_id: %w", err)
}
m.MediaAlbumID = value
case "effect_id":
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field effect_id: %w", err)
}
m.EffectID = value
case "has_sensitive_content":
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field has_sensitive_content: %w", err)
}
m.HasSensitiveContent = value
case "restriction_reason":
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field restriction_reason: %w", err)
}
m.RestrictionReason = value
case "content":
value, err := DecodeTDLibJSONMessageContent(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field content: %w", err)
}
m.Content = value
case "reply_markup":
value, err := DecodeTDLibJSONReplyMarkup(b)
if err != nil {
return fmt.Errorf("unable to decode message#1ca31b5b: field reply_markup: %w", err)
}
m.ReplyMarkup = value
default:
return b.Skip()
}
return nil
})
}
// GetID returns value of ID field.
func (m *Message) GetID() (value int64) {
if m == nil {
return
}
return m.ID
}
// GetSenderID returns value of SenderID field.
func (m *Message) GetSenderID() (value MessageSenderClass) {
if m == nil {
return
}
return m.SenderID
}
// GetChatID returns value of ChatID field.
func (m *Message) GetChatID() (value int64) {
if m == nil {
return
}
return m.ChatID
}
// GetSendingState returns value of SendingState field.
func (m *Message) GetSendingState() (value MessageSendingStateClass) {
if m == nil {
return
}
return m.SendingState
}
// GetSchedulingState returns value of SchedulingState field.
func (m *Message) GetSchedulingState() (value MessageSchedulingStateClass) {
if m == nil {
return
}
return m.SchedulingState
}
// GetIsOutgoing returns value of IsOutgoing field.
func (m *Message) GetIsOutgoing() (value bool) {
if m == nil {
return
}
return m.IsOutgoing
}
// GetIsPinned returns value of IsPinned field.
func (m *Message) GetIsPinned() (value bool) {
if m == nil {
return
}
return m.IsPinned
}
// GetIsFromOffline returns value of IsFromOffline field.
func (m *Message) GetIsFromOffline() (value bool) {
if m == nil {
return
}
return m.IsFromOffline
}
// GetCanBeSaved returns value of CanBeSaved field.
func (m *Message) GetCanBeSaved() (value bool) {
if m == nil {
return
}
return m.CanBeSaved
}
// GetHasTimestampedMedia returns value of HasTimestampedMedia field.
func (m *Message) GetHasTimestampedMedia() (value bool) {
if m == nil {
return
}
return m.HasTimestampedMedia
}
// GetIsChannelPost returns value of IsChannelPost field.
func (m *Message) GetIsChannelPost() (value bool) {
if m == nil {
return
}
return m.IsChannelPost
}
// GetContainsUnreadMention returns value of ContainsUnreadMention field.
func (m *Message) GetContainsUnreadMention() (value bool) {
if m == nil {
return
}
return m.ContainsUnreadMention
}
// GetDate returns value of Date field.
func (m *Message) GetDate() (value int32) {
if m == nil {
return
}
return m.Date
}
// GetEditDate returns value of EditDate field.
func (m *Message) GetEditDate() (value int32) {
if m == nil {
return
}
return m.EditDate
}
// GetForwardInfo returns value of ForwardInfo field.
func (m *Message) GetForwardInfo() (value MessageForwardInfo) {
if m == nil {
return
}
return m.ForwardInfo
}
// GetImportInfo returns value of ImportInfo field.
func (m *Message) GetImportInfo() (value MessageImportInfo) {
if m == nil {
return
}
return m.ImportInfo
}
// GetInteractionInfo returns value of InteractionInfo field.
func (m *Message) GetInteractionInfo() (value MessageInteractionInfo) {
if m == nil {
return
}
return m.InteractionInfo
}
// GetUnreadReactions returns value of UnreadReactions field.
func (m *Message) GetUnreadReactions() (value []UnreadReaction) {
if m == nil {
return
}
return m.UnreadReactions
}
// GetFactCheck returns value of FactCheck field.
func (m *Message) GetFactCheck() (value FactCheck) {
if m == nil {
return
}
return m.FactCheck
}
// GetReplyTo returns value of ReplyTo field.
func (m *Message) GetReplyTo() (value MessageReplyToClass) {
if m == nil {
return
}
return m.ReplyTo
}
// GetMessageThreadID returns value of MessageThreadID field.
func (m *Message) GetMessageThreadID() (value int64) {
if m == nil {
return
}
return m.MessageThreadID
}
// GetTopicID returns value of TopicID field.
func (m *Message) GetTopicID() (value MessageTopicClass) {
if m == nil {
return
}
return m.TopicID
}
// GetSelfDestructType returns value of SelfDestructType field.
func (m *Message) GetSelfDestructType() (value MessageSelfDestructTypeClass) {
if m == nil {
return
}
return m.SelfDestructType
}
// GetSelfDestructIn returns value of SelfDestructIn field.
func (m *Message) GetSelfDestructIn() (value float64) {
if m == nil {
return
}
return m.SelfDestructIn
}
// GetAutoDeleteIn returns value of AutoDeleteIn field.
func (m *Message) GetAutoDeleteIn() (value float64) {
if m == nil {
return
}
return m.AutoDeleteIn
}
// GetViaBotUserID returns value of ViaBotUserID field.
func (m *Message) GetViaBotUserID() (value int64) {
if m == nil {
return
}
return m.ViaBotUserID
}
// GetSenderBusinessBotUserID returns value of SenderBusinessBotUserID field.
func (m *Message) GetSenderBusinessBotUserID() (value int64) {
if m == nil {
return
}
return m.SenderBusinessBotUserID
}
// GetSenderBoostCount returns value of SenderBoostCount field.
func (m *Message) GetSenderBoostCount() (value int32) {
if m == nil {
return
}
return m.SenderBoostCount
}
// GetPaidMessageStarCount returns value of PaidMessageStarCount field.
func (m *Message) GetPaidMessageStarCount() (value int64) {
if m == nil {
return
}
return m.PaidMessageStarCount
}
// GetAuthorSignature returns value of AuthorSignature field.
func (m *Message) GetAuthorSignature() (value string) {
if m == nil {
return
}
return m.AuthorSignature
}
// GetMediaAlbumID returns value of MediaAlbumID field.
func (m *Message) GetMediaAlbumID() (value int64) {
if m == nil {
return
}
return m.MediaAlbumID
}
// GetEffectID returns value of EffectID field.
func (m *Message) GetEffectID() (value int64) {
if m == nil {
return
}
return m.EffectID
}
// GetHasSensitiveContent returns value of HasSensitiveContent field.
func (m *Message) GetHasSensitiveContent() (value bool) {
if m == nil {
return
}
return m.HasSensitiveContent
}
// GetRestrictionReason returns value of RestrictionReason field.
func (m *Message) GetRestrictionReason() (value string) {
if m == nil {
return
}
return m.RestrictionReason
}
// GetContent returns value of Content field.
func (m *Message) GetContent() (value MessageContentClass) {
if m == nil {
return
}
return m.Content
}
// GetReplyMarkup returns value of ReplyMarkup field.
func (m *Message) GetReplyMarkup() (value ReplyMarkupClass) {
if m == nil {
return
}
return m.ReplyMarkup
}