// 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{} ) // Chat represents TL type `chat#e5bae2e4`. type Chat struct { // Chat unique identifier ID int64 // Type of the chat Type ChatTypeClass // Chat title Title string // Chat photo; may be null Photo ChatPhotoInfo // Identifier of the accent color for message sender name, and backgrounds of chat photo, // reply header, and link preview AccentColorID int32 // Identifier of a custom emoji to be shown on the reply header and link preview // background for messages sent by the chat; 0 if none BackgroundCustomEmojiID int64 // Identifier of the profile accent color for the chat's profile; -1 if none ProfileAccentColorID int32 // Identifier of a custom emoji to be shown on the background of the chat's profile; 0 if // none ProfileBackgroundCustomEmojiID int64 // Actions that non-administrator chat members are allowed to take in the chat Permissions ChatPermissions // Last message in the chat; may be null if none or unknown LastMessage Message // Positions of the chat in chat lists Positions []ChatPosition // Chat lists to which the chat belongs. A chat can have a non-zero position in a chat // list even it doesn't belong to the chat list and have no position in a chat list even // it belongs to the chat list ChatLists []ChatListClass // Identifier of a user or chat that is selected to send messages in the chat; may be // null if the user can't change message sender MessageSenderID MessageSenderClass // Block list to which the chat is added; may be null if none BlockList BlockListClass // True, if chat content can't be saved locally, forwarded, or copied HasProtectedContent bool // True, if translation of all messages in the chat must be suggested to the user IsTranslatable bool // True, if the chat is marked as unread IsMarkedAsUnread bool // True, if the chat is a forum supergroup that must be shown in the "View as topics" // mode, or Saved Messages chat that must be shown in the "View as chats" ViewAsTopics bool // True, if the chat has scheduled messages HasScheduledMessages bool // True, if the chat messages can be deleted only for the current user while other users // will continue to see the messages CanBeDeletedOnlyForSelf bool // True, if the chat messages can be deleted for all users CanBeDeletedForAllUsers bool // True, if the chat can be reported to Telegram moderators through reportChat or // reportChatPhoto CanBeReported bool // Default value of the disable_notification parameter, used when a message is sent to // the chat DefaultDisableNotification bool // Number of unread messages in the chat UnreadCount int32 // Identifier of the last read incoming message LastReadInboxMessageID int64 // Identifier of the last read outgoing message LastReadOutboxMessageID int64 // Number of unread messages with a mention/reply in the chat UnreadMentionCount int32 // Number of messages with unread reactions in the chat UnreadReactionCount int32 // Notification settings for the chat NotificationSettings ChatNotificationSettings // Types of reaction, available in the chat AvailableReactions ChatAvailableReactionsClass // Current message auto-delete or self-destruct timer setting for the chat, in seconds; 0 // if disabled. Self-destruct timer in secret chats starts after the message or its // content is viewed. Auto-delete timer in other chats starts from the send date MessageAutoDeleteTime int32 // Emoji status to be shown along with chat title; may be null EmojiStatus EmojiStatus // Background set for the chat; may be null if none Background ChatBackground // If non-empty, name of a theme, set for the chat ThemeName string // Information about actions which must be possible to do through the chat action bar; // may be null if none ActionBar ChatActionBarClass // Information about bar for managing a business bot in the chat; may be null if none BusinessBotManageBar BusinessBotManageBar // Information about video chat of the chat VideoChat VideoChat // Information about pending join requests; may be null if none PendingJoinRequests ChatJoinRequestsInfo // Identifier of the message from which reply markup needs to be used; 0 if there is no // default custom reply markup in the chat ReplyMarkupMessageID int64 // A draft of a message in the chat; may be null if none DraftMessage DraftMessage // Application-specific data associated with the chat. (For example, the chat scroll // position or local chat notification settings can be stored here.) Persistent if the // message database is used ClientData string } // ChatTypeID is TL type id of Chat. const ChatTypeID = 0xe5bae2e4 // Ensuring interfaces in compile-time for Chat. var ( _ bin.Encoder = &Chat{} _ bin.Decoder = &Chat{} _ bin.BareEncoder = &Chat{} _ bin.BareDecoder = &Chat{} ) func (c *Chat) Zero() bool { if c == nil { return true } if !(c.ID == 0) { return false } if !(c.Type == nil) { return false } if !(c.Title == "") { return false } if !(c.Photo.Zero()) { return false } if !(c.AccentColorID == 0) { return false } if !(c.BackgroundCustomEmojiID == 0) { return false } if !(c.ProfileAccentColorID == 0) { return false } if !(c.ProfileBackgroundCustomEmojiID == 0) { return false } if !(c.Permissions.Zero()) { return false } if !(c.LastMessage.Zero()) { return false } if !(c.Positions == nil) { return false } if !(c.ChatLists == nil) { return false } if !(c.MessageSenderID == nil) { return false } if !(c.BlockList == nil) { return false } if !(c.HasProtectedContent == false) { return false } if !(c.IsTranslatable == false) { return false } if !(c.IsMarkedAsUnread == false) { return false } if !(c.ViewAsTopics == false) { return false } if !(c.HasScheduledMessages == false) { return false } if !(c.CanBeDeletedOnlyForSelf == false) { return false } if !(c.CanBeDeletedForAllUsers == false) { return false } if !(c.CanBeReported == false) { return false } if !(c.DefaultDisableNotification == false) { return false } if !(c.UnreadCount == 0) { return false } if !(c.LastReadInboxMessageID == 0) { return false } if !(c.LastReadOutboxMessageID == 0) { return false } if !(c.UnreadMentionCount == 0) { return false } if !(c.UnreadReactionCount == 0) { return false } if !(c.NotificationSettings.Zero()) { return false } if !(c.AvailableReactions == nil) { return false } if !(c.MessageAutoDeleteTime == 0) { return false } if !(c.EmojiStatus.Zero()) { return false } if !(c.Background.Zero()) { return false } if !(c.ThemeName == "") { return false } if !(c.ActionBar == nil) { return false } if !(c.BusinessBotManageBar.Zero()) { return false } if !(c.VideoChat.Zero()) { return false } if !(c.PendingJoinRequests.Zero()) { return false } if !(c.ReplyMarkupMessageID == 0) { return false } if !(c.DraftMessage.Zero()) { return false } if !(c.ClientData == "") { 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)) } // 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: "ID", SchemaName: "id", }, { Name: "Type", SchemaName: "type", }, { Name: "Title", SchemaName: "title", }, { Name: "Photo", SchemaName: "photo", }, { Name: "AccentColorID", SchemaName: "accent_color_id", }, { Name: "BackgroundCustomEmojiID", SchemaName: "background_custom_emoji_id", }, { Name: "ProfileAccentColorID", SchemaName: "profile_accent_color_id", }, { Name: "ProfileBackgroundCustomEmojiID", SchemaName: "profile_background_custom_emoji_id", }, { Name: "Permissions", SchemaName: "permissions", }, { Name: "LastMessage", SchemaName: "last_message", }, { Name: "Positions", SchemaName: "positions", }, { Name: "ChatLists", SchemaName: "chat_lists", }, { Name: "MessageSenderID", SchemaName: "message_sender_id", }, { Name: "BlockList", SchemaName: "block_list", }, { Name: "HasProtectedContent", SchemaName: "has_protected_content", }, { Name: "IsTranslatable", SchemaName: "is_translatable", }, { Name: "IsMarkedAsUnread", SchemaName: "is_marked_as_unread", }, { Name: "ViewAsTopics", SchemaName: "view_as_topics", }, { Name: "HasScheduledMessages", SchemaName: "has_scheduled_messages", }, { Name: "CanBeDeletedOnlyForSelf", SchemaName: "can_be_deleted_only_for_self", }, { Name: "CanBeDeletedForAllUsers", SchemaName: "can_be_deleted_for_all_users", }, { Name: "CanBeReported", SchemaName: "can_be_reported", }, { Name: "DefaultDisableNotification", SchemaName: "default_disable_notification", }, { Name: "UnreadCount", SchemaName: "unread_count", }, { Name: "LastReadInboxMessageID", SchemaName: "last_read_inbox_message_id", }, { Name: "LastReadOutboxMessageID", SchemaName: "last_read_outbox_message_id", }, { Name: "UnreadMentionCount", SchemaName: "unread_mention_count", }, { Name: "UnreadReactionCount", SchemaName: "unread_reaction_count", }, { Name: "NotificationSettings", SchemaName: "notification_settings", }, { Name: "AvailableReactions", SchemaName: "available_reactions", }, { Name: "MessageAutoDeleteTime", SchemaName: "message_auto_delete_time", }, { Name: "EmojiStatus", SchemaName: "emoji_status", }, { Name: "Background", SchemaName: "background", }, { Name: "ThemeName", SchemaName: "theme_name", }, { Name: "ActionBar", SchemaName: "action_bar", }, { Name: "BusinessBotManageBar", SchemaName: "business_bot_manage_bar", }, { Name: "VideoChat", SchemaName: "video_chat", }, { Name: "PendingJoinRequests", SchemaName: "pending_join_requests", }, { Name: "ReplyMarkupMessageID", SchemaName: "reply_markup_message_id", }, { Name: "DraftMessage", SchemaName: "draft_message", }, { Name: "ClientData", SchemaName: "client_data", }, } return typ } // Encode implements bin.Encoder. func (c *Chat) Encode(b *bin.Buffer) error { if c == nil { return fmt.Errorf("can't encode chat#e5bae2e4 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#e5bae2e4 as nil") } b.PutInt53(c.ID) if c.Type == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field type is nil") } if err := c.Type.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field type: %w", err) } b.PutString(c.Title) if err := c.Photo.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field photo: %w", err) } b.PutInt32(c.AccentColorID) b.PutLong(c.BackgroundCustomEmojiID) b.PutInt32(c.ProfileAccentColorID) b.PutLong(c.ProfileBackgroundCustomEmojiID) if err := c.Permissions.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field permissions: %w", err) } if err := c.LastMessage.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field last_message: %w", err) } b.PutInt(len(c.Positions)) for idx, v := range c.Positions { if err := v.EncodeBare(b); err != nil { return fmt.Errorf("unable to encode bare chat#e5bae2e4: field positions element with index %d: %w", idx, err) } } b.PutInt(len(c.ChatLists)) for idx, v := range c.ChatLists { if v == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field chat_lists element with index %d is nil", idx) } if err := v.EncodeBare(b); err != nil { return fmt.Errorf("unable to encode bare chat#e5bae2e4: field chat_lists element with index %d: %w", idx, err) } } if c.MessageSenderID == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field message_sender_id is nil") } if err := c.MessageSenderID.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field message_sender_id: %w", err) } if c.BlockList == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field block_list is nil") } if err := c.BlockList.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field block_list: %w", err) } b.PutBool(c.HasProtectedContent) b.PutBool(c.IsTranslatable) b.PutBool(c.IsMarkedAsUnread) b.PutBool(c.ViewAsTopics) b.PutBool(c.HasScheduledMessages) b.PutBool(c.CanBeDeletedOnlyForSelf) b.PutBool(c.CanBeDeletedForAllUsers) b.PutBool(c.CanBeReported) b.PutBool(c.DefaultDisableNotification) b.PutInt32(c.UnreadCount) b.PutInt53(c.LastReadInboxMessageID) b.PutInt53(c.LastReadOutboxMessageID) b.PutInt32(c.UnreadMentionCount) b.PutInt32(c.UnreadReactionCount) if err := c.NotificationSettings.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field notification_settings: %w", err) } if c.AvailableReactions == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field available_reactions is nil") } if err := c.AvailableReactions.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field available_reactions: %w", err) } b.PutInt32(c.MessageAutoDeleteTime) if err := c.EmojiStatus.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field emoji_status: %w", err) } if err := c.Background.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field background: %w", err) } b.PutString(c.ThemeName) if c.ActionBar == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field action_bar is nil") } if err := c.ActionBar.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field action_bar: %w", err) } if err := c.BusinessBotManageBar.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field business_bot_manage_bar: %w", err) } if err := c.VideoChat.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field video_chat: %w", err) } if err := c.PendingJoinRequests.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field pending_join_requests: %w", err) } b.PutInt53(c.ReplyMarkupMessageID) if err := c.DraftMessage.Encode(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field draft_message: %w", err) } b.PutString(c.ClientData) return nil } // Decode implements bin.Decoder. func (c *Chat) Decode(b *bin.Buffer) error { if c == nil { return fmt.Errorf("can't decode chat#e5bae2e4 to nil") } if err := b.ConsumeID(ChatTypeID); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: %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#e5bae2e4 to nil") } { value, err := b.Int53() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field id: %w", err) } c.ID = value } { value, err := DecodeChatType(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field type: %w", err) } c.Type = value } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field title: %w", err) } c.Title = value } { if err := c.Photo.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field photo: %w", err) } } { value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field accent_color_id: %w", err) } c.AccentColorID = value } { value, err := b.Long() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field background_custom_emoji_id: %w", err) } c.BackgroundCustomEmojiID = value } { value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field profile_accent_color_id: %w", err) } c.ProfileAccentColorID = value } { value, err := b.Long() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field profile_background_custom_emoji_id: %w", err) } c.ProfileBackgroundCustomEmojiID = value } { if err := c.Permissions.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field permissions: %w", err) } } { if err := c.LastMessage.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field last_message: %w", err) } } { headerLen, err := b.Int() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field positions: %w", err) } if headerLen > 0 { c.Positions = make([]ChatPosition, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { var value ChatPosition if err := value.DecodeBare(b); err != nil { return fmt.Errorf("unable to decode bare chat#e5bae2e4: field positions: %w", err) } c.Positions = append(c.Positions, value) } } { headerLen, err := b.Int() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field chat_lists: %w", err) } if headerLen > 0 { c.ChatLists = make([]ChatListClass, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { value, err := DecodeChatList(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field chat_lists: %w", err) } c.ChatLists = append(c.ChatLists, value) } } { value, err := DecodeMessageSender(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field message_sender_id: %w", err) } c.MessageSenderID = value } { value, err := DecodeBlockList(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field block_list: %w", err) } c.BlockList = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field has_protected_content: %w", err) } c.HasProtectedContent = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field is_translatable: %w", err) } c.IsTranslatable = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field is_marked_as_unread: %w", err) } c.IsMarkedAsUnread = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field view_as_topics: %w", err) } c.ViewAsTopics = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field has_scheduled_messages: %w", err) } c.HasScheduledMessages = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field can_be_deleted_only_for_self: %w", err) } c.CanBeDeletedOnlyForSelf = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field can_be_deleted_for_all_users: %w", err) } c.CanBeDeletedForAllUsers = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field can_be_reported: %w", err) } c.CanBeReported = value } { value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field default_disable_notification: %w", err) } c.DefaultDisableNotification = value } { value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field unread_count: %w", err) } c.UnreadCount = value } { value, err := b.Int53() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field last_read_inbox_message_id: %w", err) } c.LastReadInboxMessageID = value } { value, err := b.Int53() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field last_read_outbox_message_id: %w", err) } c.LastReadOutboxMessageID = value } { value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field unread_mention_count: %w", err) } c.UnreadMentionCount = value } { value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field unread_reaction_count: %w", err) } c.UnreadReactionCount = value } { if err := c.NotificationSettings.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field notification_settings: %w", err) } } { value, err := DecodeChatAvailableReactions(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field available_reactions: %w", err) } c.AvailableReactions = value } { value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field message_auto_delete_time: %w", err) } c.MessageAutoDeleteTime = value } { if err := c.EmojiStatus.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field emoji_status: %w", err) } } { if err := c.Background.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field background: %w", err) } } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field theme_name: %w", err) } c.ThemeName = value } { value, err := DecodeChatActionBar(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field action_bar: %w", err) } c.ActionBar = value } { if err := c.BusinessBotManageBar.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field business_bot_manage_bar: %w", err) } } { if err := c.VideoChat.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field video_chat: %w", err) } } { if err := c.PendingJoinRequests.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field pending_join_requests: %w", err) } } { value, err := b.Int53() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field reply_markup_message_id: %w", err) } c.ReplyMarkupMessageID = value } { if err := c.DraftMessage.Decode(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field draft_message: %w", err) } } { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field client_data: %w", err) } c.ClientData = value } return nil } // EncodeTDLibJSON implements tdjson.TDLibEncoder. func (c *Chat) EncodeTDLibJSON(b tdjson.Encoder) error { if c == nil { return fmt.Errorf("can't encode chat#e5bae2e4 as nil") } b.ObjStart() b.PutID("chat") b.Comma() b.FieldStart("id") b.PutInt53(c.ID) b.Comma() b.FieldStart("type") if c.Type == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field type is nil") } if err := c.Type.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field type: %w", err) } b.Comma() b.FieldStart("title") b.PutString(c.Title) b.Comma() b.FieldStart("photo") if err := c.Photo.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field photo: %w", err) } b.Comma() b.FieldStart("accent_color_id") b.PutInt32(c.AccentColorID) b.Comma() b.FieldStart("background_custom_emoji_id") b.PutLong(c.BackgroundCustomEmojiID) b.Comma() b.FieldStart("profile_accent_color_id") b.PutInt32(c.ProfileAccentColorID) b.Comma() b.FieldStart("profile_background_custom_emoji_id") b.PutLong(c.ProfileBackgroundCustomEmojiID) b.Comma() b.FieldStart("permissions") if err := c.Permissions.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field permissions: %w", err) } b.Comma() b.FieldStart("last_message") if err := c.LastMessage.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field last_message: %w", err) } b.Comma() b.FieldStart("positions") b.ArrStart() for idx, v := range c.Positions { if err := v.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field positions element with index %d: %w", idx, err) } b.Comma() } b.StripComma() b.ArrEnd() b.Comma() b.FieldStart("chat_lists") b.ArrStart() for idx, v := range c.ChatLists { if v == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field chat_lists element with index %d is nil", idx) } if err := v.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field chat_lists element with index %d: %w", idx, err) } b.Comma() } b.StripComma() b.ArrEnd() b.Comma() b.FieldStart("message_sender_id") if c.MessageSenderID == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field message_sender_id is nil") } if err := c.MessageSenderID.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field message_sender_id: %w", err) } b.Comma() b.FieldStart("block_list") if c.BlockList == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field block_list is nil") } if err := c.BlockList.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field block_list: %w", err) } b.Comma() b.FieldStart("has_protected_content") b.PutBool(c.HasProtectedContent) b.Comma() b.FieldStart("is_translatable") b.PutBool(c.IsTranslatable) b.Comma() b.FieldStart("is_marked_as_unread") b.PutBool(c.IsMarkedAsUnread) b.Comma() b.FieldStart("view_as_topics") b.PutBool(c.ViewAsTopics) b.Comma() b.FieldStart("has_scheduled_messages") b.PutBool(c.HasScheduledMessages) b.Comma() b.FieldStart("can_be_deleted_only_for_self") b.PutBool(c.CanBeDeletedOnlyForSelf) b.Comma() b.FieldStart("can_be_deleted_for_all_users") b.PutBool(c.CanBeDeletedForAllUsers) b.Comma() b.FieldStart("can_be_reported") b.PutBool(c.CanBeReported) b.Comma() b.FieldStart("default_disable_notification") b.PutBool(c.DefaultDisableNotification) b.Comma() b.FieldStart("unread_count") b.PutInt32(c.UnreadCount) b.Comma() b.FieldStart("last_read_inbox_message_id") b.PutInt53(c.LastReadInboxMessageID) b.Comma() b.FieldStart("last_read_outbox_message_id") b.PutInt53(c.LastReadOutboxMessageID) b.Comma() b.FieldStart("unread_mention_count") b.PutInt32(c.UnreadMentionCount) b.Comma() b.FieldStart("unread_reaction_count") b.PutInt32(c.UnreadReactionCount) b.Comma() b.FieldStart("notification_settings") if err := c.NotificationSettings.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field notification_settings: %w", err) } b.Comma() b.FieldStart("available_reactions") if c.AvailableReactions == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field available_reactions is nil") } if err := c.AvailableReactions.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field available_reactions: %w", err) } b.Comma() b.FieldStart("message_auto_delete_time") b.PutInt32(c.MessageAutoDeleteTime) b.Comma() b.FieldStart("emoji_status") if err := c.EmojiStatus.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field emoji_status: %w", err) } b.Comma() b.FieldStart("background") if err := c.Background.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field background: %w", err) } b.Comma() b.FieldStart("theme_name") b.PutString(c.ThemeName) b.Comma() b.FieldStart("action_bar") if c.ActionBar == nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field action_bar is nil") } if err := c.ActionBar.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field action_bar: %w", err) } b.Comma() b.FieldStart("business_bot_manage_bar") if err := c.BusinessBotManageBar.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field business_bot_manage_bar: %w", err) } b.Comma() b.FieldStart("video_chat") if err := c.VideoChat.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field video_chat: %w", err) } b.Comma() b.FieldStart("pending_join_requests") if err := c.PendingJoinRequests.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field pending_join_requests: %w", err) } b.Comma() b.FieldStart("reply_markup_message_id") b.PutInt53(c.ReplyMarkupMessageID) b.Comma() b.FieldStart("draft_message") if err := c.DraftMessage.EncodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to encode chat#e5bae2e4: field draft_message: %w", err) } b.Comma() b.FieldStart("client_data") b.PutString(c.ClientData) b.Comma() b.StripComma() b.ObjEnd() return nil } // DecodeTDLibJSON implements tdjson.TDLibDecoder. func (c *Chat) DecodeTDLibJSON(b tdjson.Decoder) error { if c == nil { return fmt.Errorf("can't decode chat#e5bae2e4 to nil") } return b.Obj(func(b tdjson.Decoder, key []byte) error { switch string(key) { case tdjson.TypeField: if err := b.ConsumeID("chat"); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: %w", err) } case "id": value, err := b.Int53() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field id: %w", err) } c.ID = value case "type": value, err := DecodeTDLibJSONChatType(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field type: %w", err) } c.Type = value case "title": value, err := b.String() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field title: %w", err) } c.Title = value case "photo": if err := c.Photo.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field photo: %w", err) } case "accent_color_id": value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field accent_color_id: %w", err) } c.AccentColorID = value case "background_custom_emoji_id": value, err := b.Long() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field background_custom_emoji_id: %w", err) } c.BackgroundCustomEmojiID = value case "profile_accent_color_id": value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field profile_accent_color_id: %w", err) } c.ProfileAccentColorID = value case "profile_background_custom_emoji_id": value, err := b.Long() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field profile_background_custom_emoji_id: %w", err) } c.ProfileBackgroundCustomEmojiID = value case "permissions": if err := c.Permissions.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field permissions: %w", err) } case "last_message": if err := c.LastMessage.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field last_message: %w", err) } case "positions": if err := b.Arr(func(b tdjson.Decoder) error { var value ChatPosition if err := value.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field positions: %w", err) } c.Positions = append(c.Positions, value) return nil }); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field positions: %w", err) } case "chat_lists": if err := b.Arr(func(b tdjson.Decoder) error { value, err := DecodeTDLibJSONChatList(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field chat_lists: %w", err) } c.ChatLists = append(c.ChatLists, value) return nil }); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field chat_lists: %w", err) } case "message_sender_id": value, err := DecodeTDLibJSONMessageSender(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field message_sender_id: %w", err) } c.MessageSenderID = value case "block_list": value, err := DecodeTDLibJSONBlockList(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field block_list: %w", err) } c.BlockList = value case "has_protected_content": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field has_protected_content: %w", err) } c.HasProtectedContent = value case "is_translatable": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field is_translatable: %w", err) } c.IsTranslatable = value case "is_marked_as_unread": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field is_marked_as_unread: %w", err) } c.IsMarkedAsUnread = value case "view_as_topics": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field view_as_topics: %w", err) } c.ViewAsTopics = value case "has_scheduled_messages": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field has_scheduled_messages: %w", err) } c.HasScheduledMessages = value case "can_be_deleted_only_for_self": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field can_be_deleted_only_for_self: %w", err) } c.CanBeDeletedOnlyForSelf = value case "can_be_deleted_for_all_users": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field can_be_deleted_for_all_users: %w", err) } c.CanBeDeletedForAllUsers = value case "can_be_reported": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field can_be_reported: %w", err) } c.CanBeReported = value case "default_disable_notification": value, err := b.Bool() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field default_disable_notification: %w", err) } c.DefaultDisableNotification = value case "unread_count": value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field unread_count: %w", err) } c.UnreadCount = value case "last_read_inbox_message_id": value, err := b.Int53() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field last_read_inbox_message_id: %w", err) } c.LastReadInboxMessageID = value case "last_read_outbox_message_id": value, err := b.Int53() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field last_read_outbox_message_id: %w", err) } c.LastReadOutboxMessageID = value case "unread_mention_count": value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field unread_mention_count: %w", err) } c.UnreadMentionCount = value case "unread_reaction_count": value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field unread_reaction_count: %w", err) } c.UnreadReactionCount = value case "notification_settings": if err := c.NotificationSettings.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field notification_settings: %w", err) } case "available_reactions": value, err := DecodeTDLibJSONChatAvailableReactions(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field available_reactions: %w", err) } c.AvailableReactions = value case "message_auto_delete_time": value, err := b.Int32() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field message_auto_delete_time: %w", err) } c.MessageAutoDeleteTime = value case "emoji_status": if err := c.EmojiStatus.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field emoji_status: %w", err) } case "background": if err := c.Background.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field background: %w", err) } case "theme_name": value, err := b.String() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field theme_name: %w", err) } c.ThemeName = value case "action_bar": value, err := DecodeTDLibJSONChatActionBar(b) if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field action_bar: %w", err) } c.ActionBar = value case "business_bot_manage_bar": if err := c.BusinessBotManageBar.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field business_bot_manage_bar: %w", err) } case "video_chat": if err := c.VideoChat.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field video_chat: %w", err) } case "pending_join_requests": if err := c.PendingJoinRequests.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field pending_join_requests: %w", err) } case "reply_markup_message_id": value, err := b.Int53() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field reply_markup_message_id: %w", err) } c.ReplyMarkupMessageID = value case "draft_message": if err := c.DraftMessage.DecodeTDLibJSON(b); err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field draft_message: %w", err) } case "client_data": value, err := b.String() if err != nil { return fmt.Errorf("unable to decode chat#e5bae2e4: field client_data: %w", err) } c.ClientData = value default: return b.Skip() } return nil }) } // GetID returns value of ID field. func (c *Chat) GetID() (value int64) { if c == nil { return } return c.ID } // GetType returns value of Type field. func (c *Chat) GetType() (value ChatTypeClass) { if c == nil { return } return c.Type } // 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 ChatPhotoInfo) { if c == nil { return } return c.Photo } // GetAccentColorID returns value of AccentColorID field. func (c *Chat) GetAccentColorID() (value int32) { if c == nil { return } return c.AccentColorID } // GetBackgroundCustomEmojiID returns value of BackgroundCustomEmojiID field. func (c *Chat) GetBackgroundCustomEmojiID() (value int64) { if c == nil { return } return c.BackgroundCustomEmojiID } // GetProfileAccentColorID returns value of ProfileAccentColorID field. func (c *Chat) GetProfileAccentColorID() (value int32) { if c == nil { return } return c.ProfileAccentColorID } // GetProfileBackgroundCustomEmojiID returns value of ProfileBackgroundCustomEmojiID field. func (c *Chat) GetProfileBackgroundCustomEmojiID() (value int64) { if c == nil { return } return c.ProfileBackgroundCustomEmojiID } // GetPermissions returns value of Permissions field. func (c *Chat) GetPermissions() (value ChatPermissions) { if c == nil { return } return c.Permissions } // GetLastMessage returns value of LastMessage field. func (c *Chat) GetLastMessage() (value Message) { if c == nil { return } return c.LastMessage } // GetPositions returns value of Positions field. func (c *Chat) GetPositions() (value []ChatPosition) { if c == nil { return } return c.Positions } // GetChatLists returns value of ChatLists field. func (c *Chat) GetChatLists() (value []ChatListClass) { if c == nil { return } return c.ChatLists } // GetMessageSenderID returns value of MessageSenderID field. func (c *Chat) GetMessageSenderID() (value MessageSenderClass) { if c == nil { return } return c.MessageSenderID } // GetBlockList returns value of BlockList field. func (c *Chat) GetBlockList() (value BlockListClass) { if c == nil { return } return c.BlockList } // GetHasProtectedContent returns value of HasProtectedContent field. func (c *Chat) GetHasProtectedContent() (value bool) { if c == nil { return } return c.HasProtectedContent } // GetIsTranslatable returns value of IsTranslatable field. func (c *Chat) GetIsTranslatable() (value bool) { if c == nil { return } return c.IsTranslatable } // GetIsMarkedAsUnread returns value of IsMarkedAsUnread field. func (c *Chat) GetIsMarkedAsUnread() (value bool) { if c == nil { return } return c.IsMarkedAsUnread } // GetViewAsTopics returns value of ViewAsTopics field. func (c *Chat) GetViewAsTopics() (value bool) { if c == nil { return } return c.ViewAsTopics } // GetHasScheduledMessages returns value of HasScheduledMessages field. func (c *Chat) GetHasScheduledMessages() (value bool) { if c == nil { return } return c.HasScheduledMessages } // GetCanBeDeletedOnlyForSelf returns value of CanBeDeletedOnlyForSelf field. func (c *Chat) GetCanBeDeletedOnlyForSelf() (value bool) { if c == nil { return } return c.CanBeDeletedOnlyForSelf } // GetCanBeDeletedForAllUsers returns value of CanBeDeletedForAllUsers field. func (c *Chat) GetCanBeDeletedForAllUsers() (value bool) { if c == nil { return } return c.CanBeDeletedForAllUsers } // GetCanBeReported returns value of CanBeReported field. func (c *Chat) GetCanBeReported() (value bool) { if c == nil { return } return c.CanBeReported } // GetDefaultDisableNotification returns value of DefaultDisableNotification field. func (c *Chat) GetDefaultDisableNotification() (value bool) { if c == nil { return } return c.DefaultDisableNotification } // GetUnreadCount returns value of UnreadCount field. func (c *Chat) GetUnreadCount() (value int32) { if c == nil { return } return c.UnreadCount } // GetLastReadInboxMessageID returns value of LastReadInboxMessageID field. func (c *Chat) GetLastReadInboxMessageID() (value int64) { if c == nil { return } return c.LastReadInboxMessageID } // GetLastReadOutboxMessageID returns value of LastReadOutboxMessageID field. func (c *Chat) GetLastReadOutboxMessageID() (value int64) { if c == nil { return } return c.LastReadOutboxMessageID } // GetUnreadMentionCount returns value of UnreadMentionCount field. func (c *Chat) GetUnreadMentionCount() (value int32) { if c == nil { return } return c.UnreadMentionCount } // GetUnreadReactionCount returns value of UnreadReactionCount field. func (c *Chat) GetUnreadReactionCount() (value int32) { if c == nil { return } return c.UnreadReactionCount } // GetNotificationSettings returns value of NotificationSettings field. func (c *Chat) GetNotificationSettings() (value ChatNotificationSettings) { if c == nil { return } return c.NotificationSettings } // GetAvailableReactions returns value of AvailableReactions field. func (c *Chat) GetAvailableReactions() (value ChatAvailableReactionsClass) { if c == nil { return } return c.AvailableReactions } // GetMessageAutoDeleteTime returns value of MessageAutoDeleteTime field. func (c *Chat) GetMessageAutoDeleteTime() (value int32) { if c == nil { return } return c.MessageAutoDeleteTime } // GetEmojiStatus returns value of EmojiStatus field. func (c *Chat) GetEmojiStatus() (value EmojiStatus) { if c == nil { return } return c.EmojiStatus } // GetBackground returns value of Background field. func (c *Chat) GetBackground() (value ChatBackground) { if c == nil { return } return c.Background } // GetThemeName returns value of ThemeName field. func (c *Chat) GetThemeName() (value string) { if c == nil { return } return c.ThemeName } // GetActionBar returns value of ActionBar field. func (c *Chat) GetActionBar() (value ChatActionBarClass) { if c == nil { return } return c.ActionBar } // GetBusinessBotManageBar returns value of BusinessBotManageBar field. func (c *Chat) GetBusinessBotManageBar() (value BusinessBotManageBar) { if c == nil { return } return c.BusinessBotManageBar } // GetVideoChat returns value of VideoChat field. func (c *Chat) GetVideoChat() (value VideoChat) { if c == nil { return } return c.VideoChat } // GetPendingJoinRequests returns value of PendingJoinRequests field. func (c *Chat) GetPendingJoinRequests() (value ChatJoinRequestsInfo) { if c == nil { return } return c.PendingJoinRequests } // GetReplyMarkupMessageID returns value of ReplyMarkupMessageID field. func (c *Chat) GetReplyMarkupMessageID() (value int64) { if c == nil { return } return c.ReplyMarkupMessageID } // GetDraftMessage returns value of DraftMessage field. func (c *Chat) GetDraftMessage() (value DraftMessage) { if c == nil { return } return c.DraftMessage } // GetClientData returns value of ClientData field. func (c *Chat) GetClientData() (value string) { if c == nil { return } return c.ClientData }