package domain const ( // MaxChannelDifferenceLimit limits a single updates.getChannelDifference page. MaxChannelDifferenceLimit = 100 // MaxChannelDifferenceTooLongMessages limits the latest message snapshot returned by channelDifferenceTooLong. MaxChannelDifferenceTooLongMessages = 100 // MaxChannelParticipantsLimit limits a single participants page. MaxChannelParticipantsLimit = 200 // MaxChannelParticipantsOffset bounds channels.getParticipants deep OFFSET work. MaxChannelParticipantsOffset = 10000 // MaxChannelParticipantsQueryLength bounds member search strings before LIKE scans. MaxChannelParticipantsQueryLength = 128 // MaxChannelInviteUsers limits a single inviteToChannel/createChat member batch. MaxChannelInviteUsers = 200 // MaxChannelRealtimeFanout caps best-effort realtime channel pushes until a presence/subscription index exists. MaxChannelRealtimeFanout = 500 // MaxSynchronousChannelDialogFanout bounds per-member channel_dialogs writes in the send transaction. MaxSynchronousChannelDialogFanout = 1000 // MaxChannelTypingFanout caps transient typing fanout. MaxChannelTypingFanout = MaxChannelRealtimeFanout // MaxChannelAdminRankLength limits custom admin rank text. MaxChannelAdminRankLength = 32 // MaxChannelInviteTitleLength limits invite link admin-only labels. MaxChannelInviteTitleLength = 32 // MaxChannelInviteListLimit limits invite management pages. MaxChannelInviteListLimit = 100 // MaxChannelHideJoinRequests limits one hideAllChatJoinRequests batch. MaxChannelHideJoinRequests = 1000 // MaxChannelPendingJoinRecentRequesters limits recent_requesters carried in pending join request updates. MaxChannelPendingJoinRecentRequesters = 5 // MaxAdminedPublicChannels limits channels.getAdminedPublicChannels payload size. MaxAdminedPublicChannels = 200 // MaxChannelAdminLogLimit limits one channels.getAdminLog page. MaxChannelAdminLogLimit = 100 // MaxChannelAdminLogAdmins limits admin filter fan-in. MaxChannelAdminLogAdmins = 100 // MaxChannelAdminLogQueryLength limits free-text admin log search. MaxChannelAdminLogQueryLength = 128 // MaxChannelHistoryQueryLength limits channel history/search query strings before LIKE scans. MaxChannelHistoryQueryLength = 256 // MaxChannelSearchPostsLimit limits one global public posts search page. MaxChannelSearchPostsLimit = 50 // MaxChannelGlobalSearchLimit limits one messages.searchGlobal channel page. MaxChannelGlobalSearchLimit = 50 // MaxPublicChannelSearchLimit limits one contacts.search public peer lookup page. MaxPublicChannelSearchLimit = 50 // MaxPublicChannelSearchQueryLength bounds public channel peer search strings. MaxPublicChannelSearchQueryLength = 256 // MaxChannelReactionItems limits one channel reaction policy payload. MaxChannelReactionItems = 64 // MaxChannelReactionEmoticonLength limits one emoji reaction string. MaxChannelReactionEmoticonLength = 32 // MaxChannelMessageReactionsPerUser limits one user's reactions on one channel message. MaxChannelMessageReactionsPerUser = 16 // MaxChannelMessageReactionRecent limits recent reactors embedded in messageReactions. MaxChannelMessageReactionRecent = 3 // MaxChannelMessageReactionListLimit limits one messages.getMessageReactionsList page. MaxChannelMessageReactionListLimit = 100 // MaxRecentMessageReactions limits one messages.getRecentReactions page. MaxRecentMessageReactions = 100 // MaxTopMessageReactions limits one messages.getTopReactions page. MaxTopMessageReactions = 100 // MaxSavedReactionTags limits one messages.getSavedReactionTags page. MaxSavedReactionTags = 100 // MaxChannelReadParticipants limits per-message read receipt fan-in. MaxChannelReadParticipants = 50 // ChannelReadMarkExpirePeriod matches TDesktop's default chat_read_mark_expire_period. ChannelReadMarkExpirePeriod = 7 * 24 * 60 * 60 // MaxChannelReadOutboxFanout caps senders notified by one channel readHistory. MaxChannelReadOutboxFanout = 128 // MaxChannelReadOutboxScanMessages bounds the read delta scanned for sender receipts. MaxChannelReadOutboxScanMessages = 1000 // MaxCommonChannelsLimit limits one messages.getCommonChats page. MaxCommonChannelsLimit = 100 // MaxLeftChannelsLimit limits one channels.getLeftChannels page. MaxLeftChannelsLimit = 100 // MaxLeftChannelsOffset bounds the legacy count-offset export API. MaxLeftChannelsOffset = 10000 // MaxInactiveChannelsLimit limits one channels.getInactiveChannels payload. MaxInactiveChannelsLimit = 100 // DefaultChannelRecommendationsLimit matches Telegram Desktop's default similar channel preview cap. DefaultChannelRecommendationsLimit = 10 // MaxChannelRecommendationsLimit bounds one channels.getChannelRecommendations payload. MaxChannelRecommendationsLimit = 100 // MaxDiscussionGroupsLimit limits the channels.getGroupsForDiscussion payload. MaxDiscussionGroupsLimit = 200 // MaxChannelRepliesLimit limits one messages.getReplies page. MaxChannelRepliesLimit = 100 // MaxChannelUnreadMentionsLimit limits one messages.getUnreadMentions page. MaxChannelUnreadMentionsLimit = 100 // MaxChannelUnreadReactionsLimit limits one messages.getUnreadReactions page. MaxChannelUnreadReactionsLimit = 100 // MaxChannelForumTopicsLimit limits one messages.getForumTopics page. MaxChannelForumTopicsLimit = 100 // MaxChannelForumTopicIDs limits one messages.getForumTopicsByID vector. MaxChannelForumTopicIDs = 100 // MaxChannelForumTopicTitleLength bounds topic titles before persistence. MaxChannelForumTopicTitleLength = 128 // DefaultForumTopicIconColor is Telegram Desktop's General-topic fallback blue. DefaultForumTopicIconColor = 0x6FB9F0 // MaxChannelReadMentionsBatch limits one messages.readMentions clearing batch. MaxChannelReadMentionsBatch = 1000 // MaxChannelReadReactionsBatch limits one messages.readReactions clearing batch. MaxChannelReadReactionsBatch = 1000 // MaxDeleteParticipantReactionsBatch limits one moderation clear batch. MaxDeleteParticipantReactionsBatch = 1000 // MaxChannelMentionRecipients limits mention state writes for one channel message. MaxChannelMentionRecipients = 100 ) // ValidChannelSlowModeSeconds reports whether seconds is accepted by Telegram clients. func ValidChannelSlowModeSeconds(seconds int) bool { switch seconds { case 0, 10, 30, 60, 300, 900, 3600: return true default: return false } } // ChannelMemberRole describes a member's role in a channel or megagroup. type ChannelMemberRole string const ( ChannelRoleCreator ChannelMemberRole = "creator" ChannelRoleAdmin ChannelMemberRole = "admin" ChannelRoleMember ChannelMemberRole = "member" ) // ChannelMemberStatus describes current membership state. type ChannelMemberStatus string const ( ChannelMemberActive ChannelMemberStatus = "active" ChannelMemberLeft ChannelMemberStatus = "left" ChannelMemberKicked ChannelMemberStatus = "kicked" ChannelMemberBanned ChannelMemberStatus = "banned" ) // ChannelAdminRights is a domain-only representation of Telegram admin rights. type ChannelAdminRights struct { ChangeInfo bool PostMessages bool EditMessages bool DeleteMessages bool BanUsers bool InviteUsers bool PinMessages bool AddAdmins bool ManageCall bool Anonymous bool } // ChannelBannedRights is a domain-only representation of Telegram banned rights. type ChannelBannedRights struct { ViewMessages bool SendMessages bool SendMedia bool SendStickers bool SendGifs bool SendGames bool SendInline bool EmbedLinks bool SendPolls bool ChangeInfo bool InviteUsers bool PinMessages bool UntilDate int } // ChannelReactionPolicyType describes which reactions are allowed in a channel. type ChannelReactionPolicyType string const ( ChannelReactionPolicyDefault ChannelReactionPolicyType = "" ChannelReactionPolicyNone ChannelReactionPolicyType = "none" ChannelReactionPolicyAll ChannelReactionPolicyType = "all" ChannelReactionPolicySome ChannelReactionPolicyType = "some" ) // ChannelReactionPolicy is a domain-only representation of chatReactions*. type ChannelReactionPolicy struct { Type ChannelReactionPolicyType AllowCustom bool Emoticons []string CustomEmojiIDs []int64 Limit int PaidEnabled bool } // ChannelPeerColor is a domain-only representation of PeerColor. type ChannelPeerColor struct { HasColor bool Color int BackgroundEmojiID int64 } // Empty reports whether the peer has no explicit color state. func (c ChannelPeerColor) Empty() bool { return !c.HasColor && c.BackgroundEmojiID == 0 } // ChannelEmojiStatus is a domain-only representation of a regular EmojiStatus. type ChannelEmojiStatus struct { DocumentID int64 Until int } // Empty reports whether no emoji status is set. func (s ChannelEmojiStatus) Empty() bool { return s.DocumentID == 0 } // Channel is a Telegram channel/supergroup entity. type Channel struct { ID int64 AccessHash int64 CreatorUserID int64 Title string About string Username string Broadcast bool Megagroup bool Forum bool ForumTabs bool Autotranslation bool RestrictedSponsored bool BroadcastMessagesAllowed bool SendPaidMessagesStars int64 NoForwards bool JoinToSend bool JoinRequest bool Signatures bool PreHistoryHidden bool ParticipantsHidden bool AntiSpam bool LinkedChatID int64 SlowmodeSeconds int DefaultBannedRights ChannelBannedRights ReactionPolicy ChannelReactionPolicy Color ChannelPeerColor ProfileColor ChannelPeerColor EmojiStatus ChannelEmojiStatus ParticipantsCount int AdminsCount int KickedCount int BannedCount int TopMessageID int PinnedMessageID int Pts int TTLPeriod int Date int Deleted bool // 当前头像(反范式存于 channels 表)。PhotoID==0 表示无头像。 PhotoID int64 PhotoDCID int PhotoStripped []byte } // ChannelMember is one user's channel membership and read state. type ChannelMember struct { ChannelID int64 UserID int64 InviterUserID int64 Role ChannelMemberRole Status ChannelMemberStatus JoinedAt int LeftAt int AdminRights ChannelAdminRights BannedRights ChannelBannedRights Rank string AvailableMinID int AvailableMinPts int ReadInboxMaxID int ReadInboxDate int ReadOutboxMaxID int UnreadMark bool SlowmodeLastSendDate int } // ChannelDialog is the current user's owner-view dialog state for a channel. type ChannelDialog struct { UserID int64 ChannelID int64 FolderID int TopMessageID int TopMessageDate int ReadInboxMaxID int ReadOutboxMaxID int UnreadCount int UnreadMentions int UnreadReactions int Pinned bool PinnedOrder int UnreadMark bool ViewForumAsMessages bool DefaultSendAs *Peer } // ChannelMessageActionType identifies service messages generated by channel operations. type ChannelMessageActionType string const ( ChannelActionNone ChannelMessageActionType = "" ChannelActionCreate ChannelMessageActionType = "channel_create" ChannelActionChatAddUser ChannelMessageActionType = "chat_add_user" ChannelActionChatDelete ChannelMessageActionType = "chat_delete_user" ChannelActionChatJoined ChannelMessageActionType = "chat_joined" ChannelActionEditTitle ChannelMessageActionType = "chat_edit_title" ChannelActionTopicCreate ChannelMessageActionType = "topic_create" ChannelActionTopicEdit ChannelMessageActionType = "topic_edit" ) // ChannelMessageAction describes a service action without depending on tg.*. type ChannelMessageAction struct { Type ChannelMessageActionType Title string IconColor int IconEmojiID int64 IconEmojiIDSet bool TitleMissing bool Closed *bool Hidden *bool UserIDs []int64 } // ChannelMessage is a single stored message in a channel/supergroup. type ChannelMessage struct { ChannelID int64 ID int RandomID int64 SenderUserID int64 From Peer SendAs *Peer Date int EditDate int Post bool Silent bool NoForwards bool Body string Entities []MessageEntity ReplyTo *MessageReply Forward *MessageForward Discussion *ChannelDiscussionRef Replies *ChannelMessageReplies Reactions *ChannelMessageReactions Action *ChannelMessageAction Media *MessageMedia Mentioned bool MediaUnread bool Pts int Deleted bool } // MessageReactionType identifies one stored reaction constructor without depending on TL types. type MessageReactionType string const ( MessageReactionEmoji MessageReactionType = "emoji" ) // MessageReaction describes one supported message reaction value. type MessageReaction struct { Type MessageReactionType Emoticon string } // ChannelMessageReactionCount is an aggregated reaction counter for one message. type ChannelMessageReactionCount struct { Reaction MessageReaction Count int ChosenOrder int } // ChannelMessagePeerReaction describes one peer's reaction entry. type ChannelMessagePeerReaction struct { ChannelID int64 MessageID int SenderUserID int64 UserID int64 Reaction MessageReaction Big bool Unread bool My bool ChosenOrder int Date int } // ChannelMessageReactions is the read model carried by channel messages and reaction updates. type ChannelMessageReactions struct { CanSeeList bool Results []ChannelMessageReactionCount Recent []ChannelMessagePeerReaction } // SetChannelMessageReactionsRequest replaces the current user's reactions for one message. type SetChannelMessageReactionsRequest struct { UserID int64 ChannelID int64 MessageID int Reactions []MessageReaction Big bool AddToRecent bool Date int } // ChannelMessageReactionsResult describes one reaction update. type ChannelMessageReactionsResult struct { Channel Channel Message ChannelMessage Messages []ChannelMessage Reactions ChannelMessageReactions Recipients []int64 } // DeleteChannelParticipantReactionRequest removes one participant reaction on one message. type DeleteChannelParticipantReactionRequest struct { UserID int64 ChannelID int64 MessageID int ParticipantUserID int64 Date int } // DeleteChannelParticipantReactionsRequest removes a bounded page of one participant's reactions. type DeleteChannelParticipantReactionsRequest struct { UserID int64 ChannelID int64 ParticipantUserID int64 Limit int Date int } // DeleteChannelParticipantReactionsResult describes moderation reaction clears. type DeleteChannelParticipantReactionsResult struct { Channel Channel Messages []ChannelMessage Recipients []int64 Deleted int } // ChannelMessageReactionsRequest fetches reaction summaries for exact message ids. type ChannelMessageReactionsRequest struct { UserID int64 ChannelID int64 IDs []int } // ChannelMessageReactionsListRequest pages per-peer reactions for one message. type ChannelMessageReactionsListRequest struct { UserID int64 ChannelID int64 MessageID int Reaction *MessageReaction Offset string Limit int } // ChannelMessageReactionsList is a bounded page for messages.getMessageReactionsList. type ChannelMessageReactionsList struct { Channel Channel Message ChannelMessage Count int Reactions []ChannelMessagePeerReaction NextOffset string } // RecentMessageReaction is one account-level recently used message reaction. type RecentMessageReaction struct { UserID int64 Reaction MessageReaction Date int } // TopMessageReaction is one account-level frequently used message reaction. type TopMessageReaction struct { UserID int64 Reaction MessageReaction Count int Date int } // SavedReactionTag is one account-level custom title for a saved-message reaction tag. type SavedReactionTag struct { UserID int64 Reaction MessageReaction Title string Count int } // ChannelDiscussionRef links a broadcast post to its discussion megagroup root message. type ChannelDiscussionRef struct { ChannelID int64 MessageID int } // ChannelMessageReplies describes thread/comment counters without depending on TL types. type ChannelMessageReplies struct { Comments bool Replies int RepliesPts int RecentRepliers []Peer ChannelID int64 MaxID int ReadMaxID int } // ChannelUpdateEventType identifies channel pts events. type ChannelUpdateEventType string const ( ChannelUpdateNewMessage ChannelUpdateEventType = "new_channel_message" ChannelUpdateEditMessage ChannelUpdateEventType = "edit_channel_message" ChannelUpdateDeleteMessages ChannelUpdateEventType = "delete_channel_messages" ChannelUpdateParticipant ChannelUpdateEventType = "channel_participant" ChannelUpdatePinnedMessages ChannelUpdateEventType = "pinned_channel_messages" ChannelUpdateNoop ChannelUpdateEventType = "noop" ) // ChannelUpdateEvent is the channel-scoped durable update log entry. type ChannelUpdateEvent struct { ChannelID int64 Type ChannelUpdateEventType Pts int PtsCount int Date int Message ChannelMessage MessageIDs []int SenderUserID int64 UserIDs []int64 Pinned bool Previous ChannelMember Participant ChannelMember } // FilterChannelUpdateEventForAvailableMinID hides message-scoped updates that // belong to a member's pre-history-hidden range while preserving pts progress. func FilterChannelUpdateEventForAvailableMinID(event ChannelUpdateEvent, availableMinID int) (ChannelUpdateEvent, bool) { if availableMinID <= 0 { return event, true } switch event.Type { case ChannelUpdateNewMessage, ChannelUpdateEditMessage: if event.Message.ID != 0 && event.Message.ID <= availableMinID { return event, false } case ChannelUpdateDeleteMessages, ChannelUpdatePinnedMessages: if len(event.MessageIDs) == 0 { return event, true } ids := make([]int, 0, len(event.MessageIDs)) for _, id := range event.MessageIDs { if id > availableMinID { ids = append(ids, id) } } if len(ids) == 0 { return event, false } event.MessageIDs = ids } return event, true } // ChannelAdminLogEventType identifies durable admin log actions. type ChannelAdminLogEventType string const ( ChannelAdminLogChangeTitle ChannelAdminLogEventType = "change_title" ChannelAdminLogChangeUsername ChannelAdminLogEventType = "change_username" ChannelAdminLogChangeLinkedChat ChannelAdminLogEventType = "change_linked_chat" ChannelAdminLogToggleSignatures ChannelAdminLogEventType = "toggle_signatures" ChannelAdminLogTogglePreHistoryHidden ChannelAdminLogEventType = "toggle_pre_history_hidden" ChannelAdminLogToggleForum ChannelAdminLogEventType = "toggle_forum" ChannelAdminLogToggleAutotranslation ChannelAdminLogEventType = "toggle_autotranslation" ChannelAdminLogToggleAntiSpam ChannelAdminLogEventType = "toggle_anti_spam" ChannelAdminLogToggleSlowMode ChannelAdminLogEventType = "toggle_slow_mode" ChannelAdminLogParticipantInvite ChannelAdminLogEventType = "participant_invite" ChannelAdminLogParticipantJoin ChannelAdminLogEventType = "participant_join" ChannelAdminLogParticipantLeave ChannelAdminLogEventType = "participant_leave" ChannelAdminLogParticipantPromote ChannelAdminLogEventType = "participant_promote" ChannelAdminLogParticipantDemote ChannelAdminLogEventType = "participant_demote" ChannelAdminLogParticipantBan ChannelAdminLogEventType = "participant_ban" ChannelAdminLogParticipantUnban ChannelAdminLogEventType = "participant_unban" ChannelAdminLogParticipantKick ChannelAdminLogEventType = "participant_kick" ChannelAdminLogParticipantUnkick ChannelAdminLogEventType = "participant_unkick" ChannelAdminLogUpdatePinned ChannelAdminLogEventType = "update_pinned" ChannelAdminLogSendMessage ChannelAdminLogEventType = "send_message" ChannelAdminLogEditMessage ChannelAdminLogEventType = "edit_message" ChannelAdminLogDeleteMessage ChannelAdminLogEventType = "delete_message" ) // ChannelAdminLogEvent is a channel-scoped audit entry. type ChannelAdminLogEvent struct { ID int64 ChannelID int64 UserID int64 Date int Type ChannelAdminLogEventType PrevString string NewString string PrevBool bool NewBool bool PrevInt int NewInt int PrevParticipant *ChannelMember NewParticipant *ChannelMember Participant *ChannelMember Message *ChannelMessage PrevMessage *ChannelMessage NewMessage *ChannelMessage Query string } // ChannelAdminLogFilter mirrors the user-visible admin log filter categories. type ChannelAdminLogFilter struct { Join bool Leave bool Invite bool Ban bool Unban bool Kick bool Unkick bool Promote bool Demote bool Info bool Settings bool Pinned bool Edit bool Delete bool Send bool Invites bool Forums bool SubExtend bool EditRank bool } // Empty reports whether no admin log category filter was supplied. func (f ChannelAdminLogFilter) Empty() bool { return !f.Join && !f.Leave && !f.Invite && !f.Ban && !f.Unban && !f.Kick && !f.Unkick && !f.Promote && !f.Demote && !f.Info && !f.Settings && !f.Pinned && !f.Edit && !f.Delete && !f.Send && !f.Invites && !f.Forums && !f.SubExtend && !f.EditRank } // ChannelAdminLogRequest describes one bounded admin log page. type ChannelAdminLogRequest struct { UserID int64 ChannelID int64 Query string AdminUserIDs []int64 MaxID int64 MinID int64 Limit int Filter ChannelAdminLogFilter } // ChannelAdminLogResult is returned by channels.getAdminLog. type ChannelAdminLogResult struct { Channel Channel Events []ChannelAdminLogEvent } // ChannelView contains channel data personalized for a viewer. type ChannelView struct { Channel Channel Self ChannelMember Dialog ChannelDialog } // ChannelParticipantList is a paged participant response. type ChannelParticipantList struct { Channel Channel Participants []ChannelMember Users []User Count int Hash int64 } // ChannelParticipantsFilterKind identifies channels.getParticipants filters. type ChannelParticipantsFilterKind string const ( ChannelParticipantsRecent ChannelParticipantsFilterKind = "recent" ChannelParticipantsAdmins ChannelParticipantsFilterKind = "admins" ChannelParticipantsKicked ChannelParticipantsFilterKind = "kicked" ChannelParticipantsBanned ChannelParticipantsFilterKind = "banned" ChannelParticipantsSearch ChannelParticipantsFilterKind = "search" ChannelParticipantsBots ChannelParticipantsFilterKind = "bots" ChannelParticipantsContacts ChannelParticipantsFilterKind = "contacts" ChannelParticipantsMentions ChannelParticipantsFilterKind = "mentions" ) // ChannelParticipantsFilter is a domain-only participant list filter. type ChannelParticipantsFilter struct { Kind ChannelParticipantsFilterKind Query string } // ChannelDialogList is a paged dialog response for channel/supergroup peers. type ChannelDialogList struct { Dialogs []Dialog Messages []ChannelMessage Channels []Channel Users []User Count int Hash int64 } // CommonChannelsRequest describes a bounded common-supergroup page. type CommonChannelsRequest struct { UserID int64 TargetUserID int64 MaxID int64 Limit int CountOnly bool } // CommonChannelsResult contains shared megagroups and the full shared count. type CommonChannelsResult struct { Count int Channels []Channel } // ChannelRecommendationsRequest describes one public broadcast channel recommendation page. type ChannelRecommendationsRequest struct { UserID int64 SourceChannelID int64 Limit int } // ChannelRecommendationsResult contains public broadcast channel recommendations and total count. type ChannelRecommendationsResult struct { Count int Channels []Channel } // PublicChannelSearchResult contains contacts.search public channel/supergroup matches. type PublicChannelSearchResult struct { MyResults []Channel Results []Channel } // LeftChannel is one channel/supergroup the user has left. type LeftChannel struct { Channel Channel Self ChannelMember } // LeftChannelsResult contains a bounded page plus the full left count. type LeftChannelsResult struct { Count int Channels []LeftChannel } // DiscussionGroupUpdateResult contains channels whose linked_chat_id changed. type DiscussionGroupUpdateResult struct { Channels []Channel } // ChannelHistory is a paged channel history response. type ChannelHistory struct { Channel Channel Self ChannelMember Channels []Channel Topics []ChannelForumTopic Messages []ChannelMessage Users []User Count int Hash int64 } // ChannelForumTopic is a forum topic materialized from the topic root service message. type ChannelForumTopic struct { ChannelID int64 TopicID int CreatorUserID int64 Title string IconColor int IconEmojiID int64 TitleMissing bool Closed bool Hidden bool Pinned bool PinnedOrder int Date int TopMessageID int ReadInboxMaxID int ReadOutboxMaxID int UnreadCount int UnreadMentionsCount int UnreadReactionsCount int UnreadPollVotesCount int } // ChannelForumTopicFilter pages a forum topic list without OFFSET scans. type ChannelForumTopicFilter struct { ChannelID int64 Query string OffsetDate int OffsetID int OffsetTopic int Limit int } // ChannelForumTopicList contains a bounded topic page and channel context. type ChannelForumTopicList struct { Channel Channel Dialog ChannelDialog Topics []ChannelForumTopic Messages []ChannelMessage Users []User Count int } // ChannelDifference is updates.getChannelDifference domain output. type ChannelDifference struct { Channel Channel Self ChannelMember Events []ChannelUpdateEvent NewMessages []ChannelMessage OtherUpdates []ChannelUpdateEvent Users []User Channels []Channel Pts int Final bool TooLong bool Dialog ChannelDialog Timeout int } // DirtyChannel identifies an active channel with channel-scoped updates after an account difference date. type DirtyChannel struct { ChannelID int64 Pts int } // CreateChannelRequest creates a broadcast channel or megagroup. type CreateChannelRequest struct { CreatorUserID int64 Title string About string RandomID int64 Broadcast bool Megagroup bool Forum bool ForumTabs bool TTLPeriod int MemberUserIDs []int64 Date int } // CreateChannelResult is returned by channel creation paths. type CreateChannelResult struct { Channel Channel Members []ChannelMember Message ChannelMessage Event ChannelUpdateEvent Recipients []int64 } // EditChannelTitleRequest edits a channel/supergroup title and emits a service message. type EditChannelTitleRequest struct { UserID int64 ChannelID int64 Title string Date int } // EditChannelTitleResult describes one title edit. type EditChannelTitleResult struct { Channel Channel Message ChannelMessage Event ChannelUpdateEvent Recipients []int64 } // EditChannelAboutRequest modifies a channel/supergroup description. type EditChannelAboutRequest struct { UserID int64 ChannelID int64 About string Date int } // EditChannelAdminRequest modifies a member's admin rights. type EditChannelAdminRequest struct { UserID int64 ChannelID int64 MemberID int64 AdminRights ChannelAdminRights Rank string Date int } // EditChannelAdminResult describes the participant transition. type EditChannelAdminResult struct { Channel Channel Previous ChannelMember Participant ChannelMember Event ChannelUpdateEvent Recipients []int64 Date int } // EditChannelBannedRequest modifies a participant's banned rights. type EditChannelBannedRequest struct { UserID int64 ChannelID int64 Participant Peer BannedRights ChannelBannedRights Date int } // EditChannelDefaultBannedRightsRequest modifies global default restrictions. type EditChannelDefaultBannedRightsRequest struct { UserID int64 ChannelID int64 BannedRights ChannelBannedRights Date int } // EditChannelBannedResult describes the participant transition. type EditChannelBannedResult struct { Channel Channel Previous ChannelMember Participant ChannelMember Event ChannelUpdateEvent Recipients []int64 Date int } // DeleteChannelRequest deletes a channel/supergroup. Only the creator may do this. type DeleteChannelRequest struct { UserID int64 ChannelID int64 Date int } // UpdateChannelUsernameRequest updates or clears a channel public username. type UpdateChannelUsernameRequest struct { UserID int64 ChannelID int64 Username string } // DeleteChannelResult describes a deleted channel. type DeleteChannelResult struct { Channel Channel Recipients []int64 } // SendChannelMessageRequest sends one channel/supergroup message. type SendChannelMessageRequest struct { UserID int64 ChannelID int64 RandomID int64 Message string Entities []MessageEntity Media *MessageMedia MentionUserIDs []int64 Silent bool NoForwards bool ReplyTo *MessageReply Forward *MessageForward SendAs *Peer Action *ChannelMessageAction Date int } // SaveChannelDefaultSendAsRequest stores the current user's default send-as peer for a channel dialog. type SaveChannelDefaultSendAsRequest struct { UserID int64 ChannelID int64 SendAs *Peer } // ChannelMessageViewsRequest reads and optionally increments channel-scoped message view counters. type ChannelMessageViewsRequest struct { UserID int64 ChannelID int64 IDs []int Increment bool Date int } // ChannelMessageViewsResult returns current view counters by visible message id. type ChannelMessageViewsResult struct { Views map[int]int } // ReadChannelMessageContentsRequest marks channel/supergroup content-read hints for one viewer. type ReadChannelMessageContentsRequest struct { UserID int64 ChannelID int64 IDs []int } // ReadChannelMessageContentsResult contains visible messages whose content-read hint can be synced. type ReadChannelMessageContentsResult struct { Channel Channel Messages []ChannelMessage ClearedUnreadReactionMessageIDs []int } // GetChannelMessageAuthorRequest resolves the original user author of one channel message. type GetChannelMessageAuthorRequest struct { UserID int64 ChannelID int64 ID int } // GetChannelMessageAuthorResult contains the resolved message author user id. type GetChannelMessageAuthorResult struct { Channel Channel MessageID int SenderUserID int64 } // SendChannelMessageResult describes a channel message send. type SendChannelMessageResult struct { Channel Channel Message ChannelMessage Event ChannelUpdateEvent Recipients []int64 Duplicate bool Discussion *SendChannelDiscussionResult } // SendChannelDiscussionResult describes the discussion megagroup root created for a broadcast post. type SendChannelDiscussionResult struct { Channel Channel Message ChannelMessage Event ChannelUpdateEvent Recipients []int64 } // CreateChannelForumTopicRequest creates one forum topic root service message. type CreateChannelForumTopicRequest struct { UserID int64 ChannelID int64 Title string TitleMissing bool IconColor int IconEmojiID int64 RandomID int64 SendAs *Peer Date int } // CreateChannelForumTopicResult describes the topic root message and topic state. type CreateChannelForumTopicResult struct { Channel Channel Topic ChannelForumTopic Message ChannelMessage Event ChannelUpdateEvent Recipients []int64 Duplicate bool } // EditChannelForumTopicRequest edits topic metadata and emits a service message. type EditChannelForumTopicRequest struct { UserID int64 ChannelID int64 TopicID int Title *string IconEmojiID *int64 Closed *bool Hidden *bool Date int } // EditChannelForumTopicResult describes one topic edit service message. type EditChannelForumTopicResult struct { Channel Channel Topic ChannelForumTopic Message ChannelMessage Event ChannelUpdateEvent Recipients []int64 } // UpdateChannelForumTopicPinnedRequest pins or unpins one topic. type UpdateChannelForumTopicPinnedRequest struct { UserID int64 ChannelID int64 TopicID int Pinned bool Date int } // UpdateChannelForumTopicPinnedResult describes one pinned-topic update. type UpdateChannelForumTopicPinnedResult struct { Channel Channel Topic ChannelForumTopic Recipients []int64 } // ReorderChannelPinnedForumTopicsRequest stores a bounded pinned topic order. type ReorderChannelPinnedForumTopicsRequest struct { UserID int64 ChannelID int64 Order []int Force bool Date int } // ReorderChannelPinnedForumTopicsResult describes a pinned topic order update. type ReorderChannelPinnedForumTopicsResult struct { Channel Channel Order []int Recipients []int64 } // DeleteChannelForumTopicHistoryRequest deletes one forum topic page. type DeleteChannelForumTopicHistoryRequest struct { UserID int64 ChannelID int64 TopicID int Date int } // EditChannelMessageRequest edits one text message in a channel/supergroup. type EditChannelMessageRequest struct { UserID int64 ChannelID int64 ID int Message string Entities []MessageEntity EditDate int } // EditChannelMessageResult describes one channel edit update. type EditChannelMessageResult struct { Channel Channel Message ChannelMessage Event ChannelUpdateEvent Recipients []int64 } // DeleteChannelMessagesRequest deletes a bounded set of channel/supergroup messages. type DeleteChannelMessagesRequest struct { UserID int64 ChannelID int64 IDs []int Date int } // DeleteChannelMessagesResult describes one channel delete update. type DeleteChannelMessagesResult struct { Channel Channel Event ChannelUpdateEvent DeletedIDs []int Recipients []int64 } // DeleteChannelHistoryRequest clears or deletes a bounded channel/supergroup history page. type DeleteChannelHistoryRequest struct { UserID int64 ChannelID int64 MaxID int ForEveryone bool Date int } // DeleteChannelParticipantHistoryRequest deletes one bounded page of messages sent by a participant. type DeleteChannelParticipantHistoryRequest struct { UserID int64 ChannelID int64 ParticipantUserID int64 Date int } // DeleteChannelHistoryResult describes a channel history delete/clear page. type DeleteChannelHistoryResult struct { Channel Channel Event ChannelUpdateEvent DeletedIDs []int Recipients []int64 Offset int AvailableMinID int } // UpdateChannelPinnedMessageRequest pins or unpins one channel/supergroup message. type UpdateChannelPinnedMessageRequest struct { UserID int64 ChannelID int64 MessageID int Pinned bool Silent bool Date int } // UpdateChannelPinnedMessageResult describes one pinned-message update. type UpdateChannelPinnedMessageResult struct { Channel Channel Event ChannelUpdateEvent Recipients []int64 } // ChannelInvite is an exported invite link without TL dependencies. type ChannelInvite struct { ChannelID int64 InviteID int64 Hash string AdminUserID int64 Title string Permanent bool Revoked bool RequestNeeded bool ExpireDate int UsageLimit int UsageCount int RequestedCount int Date int } // ExportChannelInviteRequest creates one invite link. type ExportChannelInviteRequest struct { UserID int64 ChannelID int64 Title string RequestNeeded bool ExpireDate int UsageLimit int LegacyRevokePermanent bool Date int } // ExportChannelInviteResult returns the exported invite. type ExportChannelInviteResult struct { Channel Channel Invite ChannelInvite } // CheckChannelInviteResult returns public invite preview info. type CheckChannelInviteResult struct { Channel Channel Invite ChannelInvite Already bool Self ChannelMember } // ImportChannelInviteRequest imports an invite and joins the channel when no approval is needed. type ImportChannelInviteRequest struct { UserID int64 Hash string Date int } // ChannelInviteListRequest describes an exported invite management page. type ChannelInviteListRequest struct { UserID int64 ChannelID int64 AdminUserID int64 Revoked bool OffsetDate int OffsetHash string Limit int } // ChannelInviteList is a bounded exported invite page. type ChannelInviteList struct { Count int Invites []ChannelInvite } // GetChannelInviteRequest fetches one exported invite by hash. type GetChannelInviteRequest struct { UserID int64 ChannelID int64 Hash string } // EditChannelInviteRequest edits or revokes an exported invite. type EditChannelInviteRequest struct { UserID int64 ChannelID int64 Hash string Revoked bool HasExpireDate bool ExpireDate int HasUsageLimit bool UsageLimit int HasRequestNeeded bool RequestNeeded bool HasTitle bool Title string Date int } // EditChannelInviteResult returns the edited invite and optional replacement. type EditChannelInviteResult struct { Invite ChannelInvite NewInvite *ChannelInvite } // DeleteChannelInviteRequest removes one exported invite. type DeleteChannelInviteRequest struct { UserID int64 ChannelID int64 Hash string } // DeleteRevokedChannelInvitesRequest removes revoked invites for one admin. type DeleteRevokedChannelInvitesRequest struct { UserID int64 ChannelID int64 AdminUserID int64 Limit int } // ChannelAdminInviteCount aggregates invite counters for one admin. type ChannelAdminInviteCount struct { AdminUserID int64 InvitesCount int RevokedInvitesCount int } // ChannelInviteImporter describes a user that joined or requested via an invite. type ChannelInviteImporter struct { ChannelID int64 InviteID int64 UserID int64 Date int Requested bool ApprovedBy int64 ViaChatlist bool About string } // ChannelInviteImportersRequest describes importer/join-request pagination. type ChannelInviteImportersRequest struct { UserID int64 ChannelID int64 Hash string Requested bool Query string OffsetDate int OffsetUserID int64 Limit int } // ChannelInviteImporterList is a bounded importer page. type ChannelInviteImporterList struct { Count int Importers []ChannelInviteImporter } // ChannelPendingJoinRequests is the admin-visible pending join request summary. type ChannelPendingJoinRequests struct { ChannelID int64 Count int RecentRequesters []int64 } // HideChannelJoinRequestRequest approves or dismisses one pending join request. type HideChannelJoinRequestRequest struct { UserID int64 ChannelID int64 TargetUserID int64 Approved bool Date int } // HideChannelJoinRequestsRequest approves or dismisses pending join requests in a bounded batch. type HideChannelJoinRequestsRequest struct { UserID int64 ChannelID int64 Hash string Approved bool Limit int Date int } // ChannelHistoryFilter describes channel history query conditions. type ChannelHistoryFilter struct { ChannelID int64 Query string SenderUserID int64 OffsetID int OffsetDate int AddOffset int Limit int MinDate int MaxDate int MaxID int MinID int Hash int64 } // ChannelSearchPostsRequest describes a bounded global public post search. type ChannelSearchPostsRequest struct { Hashtag string Query string OffsetRate int OffsetChannelID int64 OffsetID int Limit int } // ChannelGlobalSearchRequest describes a bounded messages.searchGlobal page // over channel/supergroup messages visible to the current account. type ChannelGlobalSearchRequest struct { Query string BroadcastsOnly bool GroupsOnly bool HasFolderID bool FolderID int OffsetRate int OffsetChannelID int64 OffsetID int MinDate int MaxDate int Limit int } // ChannelRepliesFilter describes messages.getReplies query conditions. type ChannelRepliesFilter struct { ChannelID int64 RootMessageID int OffsetID int OffsetDate int AddOffset int Limit int MaxID int MinID int Hash int64 } // ChannelUnreadMentionsFilter describes messages.getUnreadMentions query conditions. type ChannelUnreadMentionsFilter struct { ChannelID int64 TopMsgID int OffsetID int OffsetDate int AddOffset int Limit int MaxID int MinID int } // ChannelUnreadReactionsFilter describes messages.getUnreadReactions query conditions. type ChannelUnreadReactionsFilter struct { ChannelID int64 TopMsgID int OffsetID int AddOffset int Limit int MaxID int MinID int } // ReadChannelMentionsRequest clears unread mention state for a channel/supergroup. type ReadChannelMentionsRequest struct { UserID int64 ChannelID int64 TopMsgID int Limit int } // ReadChannelMentionsResult describes a bounded mentions clear operation. type ReadChannelMentionsResult struct { Channel Channel Cleared int Remaining int Offset int ChannelPts int } // ReadChannelReactionsRequest clears unread reaction state for a channel/supergroup. type ReadChannelReactionsRequest struct { UserID int64 ChannelID int64 TopMsgID int Limit int } // ReadChannelReactionsResult describes a bounded reactions clear operation. type ReadChannelReactionsResult struct { Channel Channel Cleared int Remaining int Offset int ChannelPts int } // ChannelDiscussionMessage describes messages.getDiscussionMessage output. type ChannelDiscussionMessage struct { PostChannel Channel DiscussionChannel Channel Messages []ChannelMessage Channels []Channel Users []User MaxID int ReadInboxMaxID int ReadOutboxMaxID int UnreadCount int } // ChannelDifferenceRequest describes a channel difference query. type ChannelDifferenceRequest struct { UserID int64 ChannelID int64 Pts int Limit int Force bool } // ReadChannelHistoryRequest advances the current user's channel read watermark. type ReadChannelHistoryRequest struct { UserID int64 ChannelID int64 MaxID int Date int } // ReadChannelHistoryResult describes a readHistory channel result. type ReadChannelHistoryResult struct { ChannelID int64 MaxID int StillUnreadCount int Changed bool Pts int Dialog ChannelDialog OutboxUpdates []ChannelReadOutboxUpdate } // ChannelReadOutboxUpdate advances one sender's channel outbox read watermark. type ChannelReadOutboxUpdate struct { UserID int64 MaxID int } // ChannelReadParticipant describes one member's read receipt for a channel message. type ChannelReadParticipant struct { UserID int64 Date int } // ChannelReadParticipantsRequest queries read receipts for one small megagroup message. type ChannelReadParticipantsRequest struct { UserID int64 ChannelID int64 MessageID int Limit int Date int } // ChannelReadParticipantsResult is a bounded set of read receipt participants. type ChannelReadParticipantsResult struct { Channel Channel Message ChannelMessage Participants []ChannelReadParticipant }