diff --git a/_schema/tdesktop.tl b/_schema/tdesktop.tl index 11b8c21351..75e8c834b9 100644 --- a/_schema/tdesktop.tl +++ b/_schema/tdesktop.tl @@ -1,8 +1,8 @@ // Code generated by ./cmd/dltl, DO NOT EDIT. // // Source: https://raw.githubusercontent.com/telegramdesktop/tdesktop/dev/Telegram/Resources/tl/api.tl -// Layer: 137 -// SHA256: dc2233feb0976164571345f011fa531b1560a1c76531866f48bd2e504ad3a015 +// Layer: 138 +// SHA256: e4394d689aae7a56d9b81f444df7f182ec54f5b8eb2a0289a7ef9b19cfecabff boolFalse#bc799737 = Bool; @@ -272,7 +272,7 @@ messageActionSetChatTheme#aa786345 emoticon:string = MessageAction; messageActionChatJoinedByRequest#ebbca3cb = MessageAction; -dialog#2c171f72 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog; +dialog#a8edd0f5 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog; dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog; @@ -878,7 +878,7 @@ inputStickerSetDice#e67f520e emoticon:string = InputStickerSet; inputStickerSetAnimatedEmojiAnimations#cde3739 = InputStickerSet; -stickerSet#d7df217a flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector thumb_dc_id:flags.4?int thumb_version:flags.4?int count:int hash:int = StickerSet; +stickerSet#d7df217a flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true gifs:flags.6?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector thumb_dc_id:flags.4?int thumb_version:flags.4?int count:int hash:int = StickerSet; messages.stickerSet#b60a24a6 set:StickerSet packs:Vector documents:Vector = messages.StickerSet; @@ -1894,11 +1894,9 @@ auth.loggedOut#c3a2835f flags:# future_auth_token:flags.0?bytes = auth.LoggedOut reactionCount#6fb250d1 flags:# chosen:flags.0?true reaction:string count:int = ReactionCount; -messageReactions#87b6e36 flags:# min:flags.0?true can_see_list:flags.2?true results:Vector recent_reactons:flags.1?Vector = MessageReactions; +messageReactions#4f2b9479 flags:# min:flags.0?true can_see_list:flags.2?true results:Vector recent_reactions:flags.1?Vector = MessageReactions; -messageUserReaction#932844fa user_id:long reaction:string = MessageUserReaction; - -messages.messageReactionsList#a366923c flags:# count:int reactions:Vector users:Vector next_offset:flags.0?string = messages.MessageReactionsList; +messages.messageReactionsList#31bd492d flags:# count:int reactions:Vector chats:Vector users:Vector next_offset:flags.0?string = messages.MessageReactionsList; availableReaction#c077ec01 flags:# inactive:flags.0?true reaction:string title:string static_icon:Document appear_animation:Document select_animation:Document activate_animation:Document effect_animation:Document around_animation:flags.1?Document center_icon:flags.1?Document = AvailableReaction; @@ -1906,6 +1904,12 @@ messages.availableReactionsNotModified#9f071957 = messages.AvailableReactions; messages.availableReactions#768e3aad hash:int reactions:Vector = messages.AvailableReactions; +messages.translateNoResult#67ca4737 = messages.TranslatedText; + +messages.translateResultText#a214f7d0 text:string = messages.TranslatedText; + +messagePeerReaction#51b67eff flags:# big:flags.0?true unread:flags.1?true peer_id:Peer reaction:string = MessagePeerReaction; + ---functions--- @@ -2451,7 +2455,7 @@ messages.toggleNoForwards#b11eafa2 peer:InputPeer enabled:Bool = Updates; messages.saveDefaultSendAs#ccfddf96 peer:InputPeer send_as:InputPeer = Bool; -messages.sendReaction#25690ce4 flags:# peer:InputPeer msg_id:int reaction:flags.0?string = Updates; +messages.sendReaction#25690ce4 flags:# big:flags.1?true peer:InputPeer msg_id:int reaction:flags.0?string = Updates; messages.getMessagesReactions#8bba90e6 peer:InputPeer id:Vector = Updates; @@ -2463,6 +2467,12 @@ messages.getAvailableReactions#18dea0ac hash:int = messages.AvailableReactions; messages.setDefaultReaction#d960c4d4 reaction:string = Bool; +messages.translateText#24ce6dee flags:# peer:flags.0?InputPeer msg_id:flags.0?int text:flags.1?string from_lang:flags.2?string to_lang:string = messages.TranslatedText; + +messages.getUnreadReactions#e85bae1a peer:InputPeer offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; + +messages.readReactions#82e251d7 peer:InputPeer = messages.AffectedHistory; + updates.getState#edd4882a = updates.State; updates.getDifference#25939651 flags:# pts:int pts_total_limit:flags.0?int date:int qts:int = updates.Difference; @@ -2733,4 +2743,4 @@ stats.getMessagePublicForwards#5630281b channel:InputChannel msg_id:int offset_r stats.getMessageStats#b6e0a3f5 flags:# dark:flags.0?true channel:InputChannel msg_id:int = stats.MessageStats; -// LAYER 137 +// LAYER 138 diff --git a/_schema/tdlib.tl b/_schema/tdlib.tl index e11b460e47..62564aba96 100644 --- a/_schema/tdlib.tl +++ b/_schema/tdlib.tl @@ -1,8 +1,8 @@ // Code generated by ./cmd/dltl, DO NOT EDIT. // // Source: https://raw.githubusercontent.com/tdlib/td/master/td/generate/scheme/telegram_api.tl -// Layer: 136 -// SHA256: 45d8acb38ffc96fc46e51d5fcbabfeef9ed2bdc53152b9821ddb23f5e0b40be5 +// Layer: 138 +// SHA256: 9039c42865318b46a9dcb8c885d092b4305dd2bf74c3fbb6374db8a4298ecbbc int#a8509bda ? = Int; @@ -302,7 +302,7 @@ messageActionSetChatTheme#aa786345 emoticon:string = MessageAction; messageActionChatJoinedByRequest#ebbca3cb = MessageAction; -dialog#2c171f72 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog; +dialog#a8edd0f5 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog; dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog; @@ -908,7 +908,7 @@ inputStickerSetDice#e67f520e emoticon:string = InputStickerSet; inputStickerSetAnimatedEmojiAnimations#cde3739 = InputStickerSet; -stickerSet#d7df217a flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector thumb_dc_id:flags.4?int thumb_version:flags.4?int count:int hash:int = StickerSet; +stickerSet#d7df217a flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true videos:flags.6?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector thumb_dc_id:flags.4?int thumb_version:flags.4?int count:int hash:int = StickerSet; messages.stickerSet#b60a24a6 set:StickerSet packs:Vector documents:Vector = messages.StickerSet; @@ -1924,18 +1924,22 @@ auth.loggedOut#c3a2835f flags:# future_auth_token:flags.0?bytes = auth.LoggedOut reactionCount#6fb250d1 flags:# chosen:flags.0?true reaction:string count:int = ReactionCount; -messageReactions#87b6e36 flags:# min:flags.0?true can_see_list:flags.2?true results:Vector recent_reactons:flags.1?Vector = MessageReactions; +messageReactions#4f2b9479 flags:# min:flags.0?true can_see_list:flags.2?true results:Vector recent_reactions:flags.1?Vector = MessageReactions; -messageUserReaction#932844fa user_id:long reaction:string = MessageUserReaction; +messages.messageReactionsList#31bd492d flags:# count:int reactions:Vector chats:Vector users:Vector next_offset:flags.0?string = messages.MessageReactionsList; -messages.messageReactionsList#a366923c flags:# count:int reactions:Vector users:Vector next_offset:flags.0?string = messages.MessageReactionsList; - -availableReaction#21d7c4b flags:# inactive:flags.0?true reaction:string title:string static_icon:Document appear_animation:Document select_animation:Document activate_animation:Document effect_animation:Document = AvailableReaction; +availableReaction#c077ec01 flags:# inactive:flags.0?true reaction:string title:string static_icon:Document appear_animation:Document select_animation:Document activate_animation:Document effect_animation:Document around_animation:flags.1?Document center_icon:flags.1?Document = AvailableReaction; messages.availableReactionsNotModified#9f071957 = messages.AvailableReactions; messages.availableReactions#768e3aad hash:int reactions:Vector = messages.AvailableReactions; +messages.translateNoResult#67ca4737 = messages.TranslatedText; + +messages.translateResultText#a214f7d0 text:string = messages.TranslatedText; + +messagePeerReaction#51b67eff flags:# big:flags.0?true unread:flags.1?true peer_id:Peer reaction:string = MessagePeerReaction; + ---functions--- @@ -2481,7 +2485,7 @@ messages.toggleNoForwards#b11eafa2 peer:InputPeer enabled:Bool = Updates; messages.saveDefaultSendAs#ccfddf96 peer:InputPeer send_as:InputPeer = Bool; -messages.sendReaction#25690ce4 flags:# peer:InputPeer msg_id:int reaction:flags.0?string = Updates; +messages.sendReaction#25690ce4 flags:# big:flags.1?true peer:InputPeer msg_id:int reaction:flags.0?string = Updates; messages.getMessagesReactions#8bba90e6 peer:InputPeer id:Vector = Updates; @@ -2493,6 +2497,12 @@ messages.getAvailableReactions#18dea0ac hash:int = messages.AvailableReactions; messages.setDefaultReaction#d960c4d4 reaction:string = Bool; +messages.translateText#24ce6dee flags:# peer:flags.0?InputPeer msg_id:flags.0?int text:flags.1?string from_lang:flags.2?string to_lang:string = messages.TranslatedText; + +messages.getUnreadReactions#e85bae1a peer:InputPeer offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; + +messages.readReactions#82e251d7 peer:InputPeer = messages.AffectedHistory; + updates.getState#edd4882a = updates.State; updates.getDifference#25939651 flags:# pts:int pts_total_limit:flags.0?int date:int qts:int = updates.Difference; @@ -2669,7 +2679,7 @@ payments.clearSavedInfo#d83d70c1 flags:# credentials:flags.0?true info:flags.1?t payments.getBankCardData#2e79d779 number:string = payments.BankCardData; -stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true animated:flags.1?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector software:flags.3?string = messages.StickerSet; +stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true animated:flags.1?true videos:flags.4?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector software:flags.3?string = messages.StickerSet; stickers.removeStickerFromSet#f7760f51 sticker:InputDocument = messages.StickerSet; @@ -2763,4 +2773,4 @@ stats.getMessagePublicForwards#5630281b channel:InputChannel msg_id:int offset_r stats.getMessageStats#b6e0a3f5 flags:# dark:flags.0?true channel:InputChannel msg_id:int = stats.MessageStats; -// LAYER 136 +// LAYER 138 diff --git a/_schema/telegram.tl b/_schema/telegram.tl index 4976fc8119..580407f126 100644 --- a/_schema/telegram.tl +++ b/_schema/telegram.tl @@ -2,8 +2,8 @@ // // Source: https://raw.githubusercontent.com/telegramdesktop/tdesktop/dev/Telegram/Resources/tl/api.tl // Merge: _schema/legacy.tl -// Layer: 137 -// SHA256: dc2233feb0976164571345f011fa531b1560a1c76531866f48bd2e504ad3a015 +// Layer: 138 +// SHA256: e4394d689aae7a56d9b81f444df7f182ec54f5b8eb2a0289a7ef9b19cfecabff boolFalse#bc799737 = Bool; @@ -273,7 +273,7 @@ messageActionSetChatTheme#aa786345 emoticon:string = MessageAction; messageActionChatJoinedByRequest#ebbca3cb = MessageAction; -dialog#2c171f72 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog; +dialog#a8edd0f5 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog; dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog; @@ -879,7 +879,7 @@ inputStickerSetDice#e67f520e emoticon:string = InputStickerSet; inputStickerSetAnimatedEmojiAnimations#cde3739 = InputStickerSet; -stickerSet#d7df217a flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector thumb_dc_id:flags.4?int thumb_version:flags.4?int count:int hash:int = StickerSet; +stickerSet#d7df217a flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true gifs:flags.6?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector thumb_dc_id:flags.4?int thumb_version:flags.4?int count:int hash:int = StickerSet; messages.stickerSet#b60a24a6 set:StickerSet packs:Vector documents:Vector = messages.StickerSet; @@ -1895,11 +1895,9 @@ auth.loggedOut#c3a2835f flags:# future_auth_token:flags.0?bytes = auth.LoggedOut reactionCount#6fb250d1 flags:# chosen:flags.0?true reaction:string count:int = ReactionCount; -messageReactions#87b6e36 flags:# min:flags.0?true can_see_list:flags.2?true results:Vector recent_reactons:flags.1?Vector = MessageReactions; +messageReactions#4f2b9479 flags:# min:flags.0?true can_see_list:flags.2?true results:Vector recent_reactions:flags.1?Vector = MessageReactions; -messageUserReaction#932844fa user_id:long reaction:string = MessageUserReaction; - -messages.messageReactionsList#a366923c flags:# count:int reactions:Vector users:Vector next_offset:flags.0?string = messages.MessageReactionsList; +messages.messageReactionsList#31bd492d flags:# count:int reactions:Vector chats:Vector users:Vector next_offset:flags.0?string = messages.MessageReactionsList; availableReaction#c077ec01 flags:# inactive:flags.0?true reaction:string title:string static_icon:Document appear_animation:Document select_animation:Document activate_animation:Document effect_animation:Document around_animation:flags.1?Document center_icon:flags.1?Document = AvailableReaction; @@ -1907,6 +1905,12 @@ messages.availableReactionsNotModified#9f071957 = messages.AvailableReactions; messages.availableReactions#768e3aad hash:int reactions:Vector = messages.AvailableReactions; +messages.translateNoResult#67ca4737 = messages.TranslatedText; + +messages.translateResultText#a214f7d0 text:string = messages.TranslatedText; + +messagePeerReaction#51b67eff flags:# big:flags.0?true unread:flags.1?true peer_id:Peer reaction:string = MessagePeerReaction; + ---functions--- @@ -2452,7 +2456,7 @@ messages.toggleNoForwards#b11eafa2 peer:InputPeer enabled:Bool = Updates; messages.saveDefaultSendAs#ccfddf96 peer:InputPeer send_as:InputPeer = Bool; -messages.sendReaction#25690ce4 flags:# peer:InputPeer msg_id:int reaction:flags.0?string = Updates; +messages.sendReaction#25690ce4 flags:# big:flags.1?true peer:InputPeer msg_id:int reaction:flags.0?string = Updates; messages.getMessagesReactions#8bba90e6 peer:InputPeer id:Vector = Updates; @@ -2464,6 +2468,12 @@ messages.getAvailableReactions#18dea0ac hash:int = messages.AvailableReactions; messages.setDefaultReaction#d960c4d4 reaction:string = Bool; +messages.translateText#24ce6dee flags:# peer:flags.0?InputPeer msg_id:flags.0?int text:flags.1?string from_lang:flags.2?string to_lang:string = messages.TranslatedText; + +messages.getUnreadReactions#e85bae1a peer:InputPeer offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; + +messages.readReactions#82e251d7 peer:InputPeer = messages.AffectedHistory; + updates.getState#edd4882a = updates.State; updates.getDifference#25939651 flags:# pts:int pts_total_limit:flags.0?int date:int qts:int = updates.Difference; @@ -2766,4 +2776,4 @@ test.useError#ee75af01 = Error; test.useConfigSimple#f9b7b23d = help.ConfigSimple; -// LAYER 137 +// LAYER 138 diff --git a/telegram/query/messages/queries.gen.go b/telegram/query/messages/queries.gen.go index fcc81c5723..4167861d8d 100644 --- a/telegram/query/messages/queries.gen.go +++ b/telegram/query/messages/queries.gen.go @@ -457,6 +457,105 @@ func (b *GetUnreadMentionsQueryBuilder) Collect(ctx context.Context) ([]Elem, er return r, iter.Err() } +// GetUnreadReactionsQueryBuilder is query builder of MessagesGetUnreadReactions. +type GetUnreadReactionsQueryBuilder struct { + raw *tg.Client + req tg.MessagesGetUnreadReactionsRequest + batchSize int + addOffset int + offsetID int +} + +// GetUnreadReactions creates query builder of MessagesGetUnreadReactions. +func (q *QueryBuilder) GetUnreadReactions(paramPeer tg.InputPeerClass) *GetUnreadReactionsQueryBuilder { + b := &GetUnreadReactionsQueryBuilder{ + raw: q.raw, + batchSize: 1, + req: tg.MessagesGetUnreadReactionsRequest{ + Peer: &tg.InputPeerEmpty{}, + }, + } + + b.req.Peer = paramPeer + return b +} + +// BatchSize sets buffer of message loaded from one request. +// Be carefully, when set this limit, because Telegram does not return error if limit is too big, +// so results can be incorrect. +func (b *GetUnreadReactionsQueryBuilder) BatchSize(batchSize int) *GetUnreadReactionsQueryBuilder { + b.batchSize = batchSize + return b +} + +// OffsetID sets offsetID from which iterate start. +func (b *GetUnreadReactionsQueryBuilder) OffsetID(offsetID int) *GetUnreadReactionsQueryBuilder { + b.offsetID = offsetID + return b +} + +// Peer sets Peer field of GetUnreadReactions query. +func (b *GetUnreadReactionsQueryBuilder) Peer(paramPeer tg.InputPeerClass) *GetUnreadReactionsQueryBuilder { + b.req.Peer = paramPeer + return b +} + +// Query implements Query interface. +func (b *GetUnreadReactionsQueryBuilder) Query(ctx context.Context, req Request) (tg.MessagesMessagesClass, error) { + r := &tg.MessagesGetUnreadReactionsRequest{ + Limit: req.Limit, + } + + r.Peer = b.req.Peer + r.AddOffset = req.AddOffset + r.OffsetID = req.OffsetID + return b.raw.MessagesGetUnreadReactions(ctx, r) +} + +// Iter returns iterator using built query. +func (b *GetUnreadReactionsQueryBuilder) Iter() *Iterator { + iter := NewIterator(b, b.batchSize) + iter = iter.OffsetID(b.offsetID) + return iter +} + +// ForEach calls given callback on each iterator element. +func (b *GetUnreadReactionsQueryBuilder) ForEach(ctx context.Context, cb func(context.Context, Elem) error) error { + iter := b.Iter() + for iter.Next(ctx) { + if err := cb(ctx, iter.Value()); err != nil { + return err + } + } + return iter.Err() +} + +// Count fetches remote state to get number of elements. +func (b *GetUnreadReactionsQueryBuilder) Count(ctx context.Context) (int, error) { + iter := b.Iter() + c, err := iter.Total(ctx) + if err != nil { + return 0, errors.Wrap(err, "get total") + } + return c, nil +} + +// Collect creates iterator and collects all elements to slice. +func (b *GetUnreadReactionsQueryBuilder) Collect(ctx context.Context) ([]Elem, error) { + iter := b.Iter() + c, err := iter.Total(ctx) + if err != nil { + return nil, errors.Wrap(err, "get total") + } + + r := make([]Elem, 0, c) + for iter.Next(ctx) { + r = append(r, iter.Value()) + } + + return r, iter.Err() +} + // SearchQueryBuilder is query builder of MessagesSearch. type SearchQueryBuilder struct { raw *tg.Client diff --git a/tg/tl_dialog_gen.go b/tg/tl_dialog_gen.go index e82a660457..b32d7d8036 100644 --- a/tg/tl_dialog_gen.go +++ b/tg/tl_dialog_gen.go @@ -31,7 +31,7 @@ var ( _ = tdjson.Encoder{} ) -// Dialog represents TL type `dialog#2c171f72`. +// Dialog represents TL type `dialog#a8edd0f5`. // Chat // // See https://core.telegram.org/constructor/dialog for reference. @@ -60,6 +60,8 @@ type Dialog struct { // Links: // 1) https://core.telegram.org/api/mentions UnreadMentionsCount int + // UnreadReactionsCount field of Dialog. + UnreadReactionsCount int // Notification settings NotifySettings PeerNotifySettings // PTSĀ¹ @@ -83,7 +85,7 @@ type Dialog struct { } // DialogTypeID is TL type id of Dialog. -const DialogTypeID = 0x2c171f72 +const DialogTypeID = 0xa8edd0f5 // construct implements constructor of DialogClass. func (d Dialog) construct() DialogClass { return &d } @@ -129,6 +131,9 @@ func (d *Dialog) Zero() bool { if !(d.UnreadMentionsCount == 0) { return false } + if !(d.UnreadReactionsCount == 0) { + return false + } if !(d.NotifySettings.Zero()) { return false } @@ -164,6 +169,7 @@ func (d *Dialog) FillFrom(from interface { GetReadOutboxMaxID() (value int) GetUnreadCount() (value int) GetUnreadMentionsCount() (value int) + GetUnreadReactionsCount() (value int) GetNotifySettings() (value PeerNotifySettings) GetPts() (value int, ok bool) GetDraft() (value DraftMessageClass, ok bool) @@ -177,6 +183,7 @@ func (d *Dialog) FillFrom(from interface { d.ReadOutboxMaxID = from.GetReadOutboxMaxID() d.UnreadCount = from.GetUnreadCount() d.UnreadMentionsCount = from.GetUnreadMentionsCount() + d.UnreadReactionsCount = from.GetUnreadReactionsCount() d.NotifySettings = from.GetNotifySettings() if val, ok := from.GetPts(); ok { d.Pts = val @@ -249,6 +256,10 @@ func (d *Dialog) TypeInfo() tdp.Type { Name: "UnreadMentionsCount", SchemaName: "unread_mentions_count", }, + { + Name: "UnreadReactionsCount", + SchemaName: "unread_reactions_count", + }, { Name: "NotifySettings", SchemaName: "notify_settings", @@ -294,7 +305,7 @@ func (d *Dialog) SetFlags() { // Encode implements bin.Encoder. func (d *Dialog) Encode(b *bin.Buffer) error { if d == nil { - return fmt.Errorf("can't encode dialog#2c171f72 as nil") + return fmt.Errorf("can't encode dialog#a8edd0f5 as nil") } b.PutID(DialogTypeID) return d.EncodeBare(b) @@ -303,35 +314,36 @@ func (d *Dialog) Encode(b *bin.Buffer) error { // EncodeBare implements bin.BareEncoder. func (d *Dialog) EncodeBare(b *bin.Buffer) error { if d == nil { - return fmt.Errorf("can't encode dialog#2c171f72 as nil") + return fmt.Errorf("can't encode dialog#a8edd0f5 as nil") } d.SetFlags() if err := d.Flags.Encode(b); err != nil { - return fmt.Errorf("unable to encode dialog#2c171f72: field flags: %w", err) + return fmt.Errorf("unable to encode dialog#a8edd0f5: field flags: %w", err) } if d.Peer == nil { - return fmt.Errorf("unable to encode dialog#2c171f72: field peer is nil") + return fmt.Errorf("unable to encode dialog#a8edd0f5: field peer is nil") } if err := d.Peer.Encode(b); err != nil { - return fmt.Errorf("unable to encode dialog#2c171f72: field peer: %w", err) + return fmt.Errorf("unable to encode dialog#a8edd0f5: field peer: %w", err) } b.PutInt(d.TopMessage) b.PutInt(d.ReadInboxMaxID) b.PutInt(d.ReadOutboxMaxID) b.PutInt(d.UnreadCount) b.PutInt(d.UnreadMentionsCount) + b.PutInt(d.UnreadReactionsCount) if err := d.NotifySettings.Encode(b); err != nil { - return fmt.Errorf("unable to encode dialog#2c171f72: field notify_settings: %w", err) + return fmt.Errorf("unable to encode dialog#a8edd0f5: field notify_settings: %w", err) } if d.Flags.Has(0) { b.PutInt(d.Pts) } if d.Flags.Has(1) { if d.Draft == nil { - return fmt.Errorf("unable to encode dialog#2c171f72: field draft is nil") + return fmt.Errorf("unable to encode dialog#a8edd0f5: field draft is nil") } if err := d.Draft.Encode(b); err != nil { - return fmt.Errorf("unable to encode dialog#2c171f72: field draft: %w", err) + return fmt.Errorf("unable to encode dialog#a8edd0f5: field draft: %w", err) } } if d.Flags.Has(4) { @@ -343,10 +355,10 @@ func (d *Dialog) EncodeBare(b *bin.Buffer) error { // Decode implements bin.Decoder. func (d *Dialog) Decode(b *bin.Buffer) error { if d == nil { - return fmt.Errorf("can't decode dialog#2c171f72 to nil") + return fmt.Errorf("can't decode dialog#a8edd0f5 to nil") } if err := b.ConsumeID(DialogTypeID); err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: %w", err) } return d.DecodeBare(b) } @@ -354,11 +366,11 @@ func (d *Dialog) Decode(b *bin.Buffer) error { // DecodeBare implements bin.BareDecoder. func (d *Dialog) DecodeBare(b *bin.Buffer) error { if d == nil { - return fmt.Errorf("can't decode dialog#2c171f72 to nil") + return fmt.Errorf("can't decode dialog#a8edd0f5 to nil") } { if err := d.Flags.Decode(b); err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field flags: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field flags: %w", err) } } d.Pinned = d.Flags.Has(2) @@ -366,68 +378,75 @@ func (d *Dialog) DecodeBare(b *bin.Buffer) error { { value, err := DecodePeer(b) if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field peer: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field peer: %w", err) } d.Peer = value } { value, err := b.Int() if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field top_message: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field top_message: %w", err) } d.TopMessage = value } { value, err := b.Int() if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field read_inbox_max_id: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field read_inbox_max_id: %w", err) } d.ReadInboxMaxID = value } { value, err := b.Int() if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field read_outbox_max_id: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field read_outbox_max_id: %w", err) } d.ReadOutboxMaxID = value } { value, err := b.Int() if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field unread_count: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field unread_count: %w", err) } d.UnreadCount = value } { value, err := b.Int() if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field unread_mentions_count: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field unread_mentions_count: %w", err) } d.UnreadMentionsCount = value } + { + value, err := b.Int() + if err != nil { + return fmt.Errorf("unable to decode dialog#a8edd0f5: field unread_reactions_count: %w", err) + } + d.UnreadReactionsCount = value + } { if err := d.NotifySettings.Decode(b); err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field notify_settings: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field notify_settings: %w", err) } } if d.Flags.Has(0) { value, err := b.Int() if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field pts: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field pts: %w", err) } d.Pts = value } if d.Flags.Has(1) { value, err := DecodeDraftMessage(b) if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field draft: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field draft: %w", err) } d.Draft = value } if d.Flags.Has(4) { value, err := b.Int() if err != nil { - return fmt.Errorf("unable to decode dialog#2c171f72: field folder_id: %w", err) + return fmt.Errorf("unable to decode dialog#a8edd0f5: field folder_id: %w", err) } d.FolderID = value } @@ -520,6 +539,14 @@ func (d *Dialog) GetUnreadMentionsCount() (value int) { return d.UnreadMentionsCount } +// GetUnreadReactionsCount returns value of UnreadReactionsCount field. +func (d *Dialog) GetUnreadReactionsCount() (value int) { + if d == nil { + return + } + return d.UnreadReactionsCount +} + // GetNotifySettings returns value of NotifySettings field. func (d *Dialog) GetNotifySettings() (value PeerNotifySettings) { if d == nil { @@ -953,7 +980,7 @@ const DialogClassName = "Dialog" // panic(err) // } // switch v := g.(type) { -// case *tg.Dialog: // dialog#2c171f72 +// case *tg.Dialog: // dialog#a8edd0f5 // case *tg.DialogFolder: // dialogFolder#71bd134c // default: panic(v) // } @@ -1003,7 +1030,7 @@ func DecodeDialog(buf *bin.Buffer) (DialogClass, error) { } switch id { case DialogTypeID: - // Decoding dialog#2c171f72. + // Decoding dialog#a8edd0f5. v := Dialog{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode DialogClass: %w", err) diff --git a/tg/tl_message_peer_reaction_gen.go b/tg/tl_message_peer_reaction_gen.go new file mode 100644 index 0000000000..620815b50e --- /dev/null +++ b/tg/tl_message_peer_reaction_gen.go @@ -0,0 +1,281 @@ +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) + +// MessagePeerReaction represents TL type `messagePeerReaction#51b67eff`. +// +// See https://core.telegram.org/constructor/messagePeerReaction for reference. +type MessagePeerReaction struct { + // Flags field of MessagePeerReaction. + Flags bin.Fields + // Big field of MessagePeerReaction. + Big bool + // Unread field of MessagePeerReaction. + Unread bool + // PeerID field of MessagePeerReaction. + PeerID PeerClass + // Reaction field of MessagePeerReaction. + Reaction string +} + +// MessagePeerReactionTypeID is TL type id of MessagePeerReaction. +const MessagePeerReactionTypeID = 0x51b67eff + +// Ensuring interfaces in compile-time for MessagePeerReaction. +var ( + _ bin.Encoder = &MessagePeerReaction{} + _ bin.Decoder = &MessagePeerReaction{} + _ bin.BareEncoder = &MessagePeerReaction{} + _ bin.BareDecoder = &MessagePeerReaction{} +) + +func (m *MessagePeerReaction) Zero() bool { + if m == nil { + return true + } + if !(m.Flags.Zero()) { + return false + } + if !(m.Big == false) { + return false + } + if !(m.Unread == false) { + return false + } + if !(m.PeerID == nil) { + return false + } + if !(m.Reaction == "") { + return false + } + + return true +} + +// String implements fmt.Stringer. +func (m *MessagePeerReaction) String() string { + if m == nil { + return "MessagePeerReaction(nil)" + } + type Alias MessagePeerReaction + return fmt.Sprintf("MessagePeerReaction%+v", Alias(*m)) +} + +// FillFrom fills MessagePeerReaction from given interface. +func (m *MessagePeerReaction) FillFrom(from interface { + GetBig() (value bool) + GetUnread() (value bool) + GetPeerID() (value PeerClass) + GetReaction() (value string) +}) { + m.Big = from.GetBig() + m.Unread = from.GetUnread() + m.PeerID = from.GetPeerID() + m.Reaction = from.GetReaction() +} + +// TypeID returns type id in TL schema. +// +// See https://core.telegram.org/mtproto/TL-tl#remarks. +func (*MessagePeerReaction) TypeID() uint32 { + return MessagePeerReactionTypeID +} + +// TypeName returns name of type in TL schema. +func (*MessagePeerReaction) TypeName() string { + return "messagePeerReaction" +} + +// TypeInfo returns info about TL type. +func (m *MessagePeerReaction) TypeInfo() tdp.Type { + typ := tdp.Type{ + Name: "messagePeerReaction", + ID: MessagePeerReactionTypeID, + } + if m == nil { + typ.Null = true + return typ + } + typ.Fields = []tdp.Field{ + { + Name: "Big", + SchemaName: "big", + Null: !m.Flags.Has(0), + }, + { + Name: "Unread", + SchemaName: "unread", + Null: !m.Flags.Has(1), + }, + { + Name: "PeerID", + SchemaName: "peer_id", + }, + { + Name: "Reaction", + SchemaName: "reaction", + }, + } + return typ +} + +// SetFlags sets flags for non-zero fields. +func (m *MessagePeerReaction) SetFlags() { + if !(m.Big == false) { + m.Flags.Set(0) + } + if !(m.Unread == false) { + m.Flags.Set(1) + } +} + +// Encode implements bin.Encoder. +func (m *MessagePeerReaction) Encode(b *bin.Buffer) error { + if m == nil { + return fmt.Errorf("can't encode messagePeerReaction#51b67eff as nil") + } + b.PutID(MessagePeerReactionTypeID) + return m.EncodeBare(b) +} + +// EncodeBare implements bin.BareEncoder. +func (m *MessagePeerReaction) EncodeBare(b *bin.Buffer) error { + if m == nil { + return fmt.Errorf("can't encode messagePeerReaction#51b67eff as nil") + } + m.SetFlags() + if err := m.Flags.Encode(b); err != nil { + return fmt.Errorf("unable to encode messagePeerReaction#51b67eff: field flags: %w", err) + } + if m.PeerID == nil { + return fmt.Errorf("unable to encode messagePeerReaction#51b67eff: field peer_id is nil") + } + if err := m.PeerID.Encode(b); err != nil { + return fmt.Errorf("unable to encode messagePeerReaction#51b67eff: field peer_id: %w", err) + } + b.PutString(m.Reaction) + return nil +} + +// Decode implements bin.Decoder. +func (m *MessagePeerReaction) Decode(b *bin.Buffer) error { + if m == nil { + return fmt.Errorf("can't decode messagePeerReaction#51b67eff to nil") + } + if err := b.ConsumeID(MessagePeerReactionTypeID); err != nil { + return fmt.Errorf("unable to decode messagePeerReaction#51b67eff: %w", err) + } + return m.DecodeBare(b) +} + +// DecodeBare implements bin.BareDecoder. +func (m *MessagePeerReaction) DecodeBare(b *bin.Buffer) error { + if m == nil { + return fmt.Errorf("can't decode messagePeerReaction#51b67eff to nil") + } + { + if err := m.Flags.Decode(b); err != nil { + return fmt.Errorf("unable to decode messagePeerReaction#51b67eff: field flags: %w", err) + } + } + m.Big = m.Flags.Has(0) + m.Unread = m.Flags.Has(1) + { + value, err := DecodePeer(b) + if err != nil { + return fmt.Errorf("unable to decode messagePeerReaction#51b67eff: field peer_id: %w", err) + } + m.PeerID = value + } + { + value, err := b.String() + if err != nil { + return fmt.Errorf("unable to decode messagePeerReaction#51b67eff: field reaction: %w", err) + } + m.Reaction = value + } + return nil +} + +// SetBig sets value of Big conditional field. +func (m *MessagePeerReaction) SetBig(value bool) { + if value { + m.Flags.Set(0) + m.Big = true + } else { + m.Flags.Unset(0) + m.Big = false + } +} + +// GetBig returns value of Big conditional field. +func (m *MessagePeerReaction) GetBig() (value bool) { + if m == nil { + return + } + return m.Flags.Has(0) +} + +// SetUnread sets value of Unread conditional field. +func (m *MessagePeerReaction) SetUnread(value bool) { + if value { + m.Flags.Set(1) + m.Unread = true + } else { + m.Flags.Unset(1) + m.Unread = false + } +} + +// GetUnread returns value of Unread conditional field. +func (m *MessagePeerReaction) GetUnread() (value bool) { + if m == nil { + return + } + return m.Flags.Has(1) +} + +// GetPeerID returns value of PeerID field. +func (m *MessagePeerReaction) GetPeerID() (value PeerClass) { + if m == nil { + return + } + return m.PeerID +} + +// GetReaction returns value of Reaction field. +func (m *MessagePeerReaction) GetReaction() (value string) { + if m == nil { + return + } + return m.Reaction +} diff --git a/tg/tl_message_user_reaction_slices_gen.go b/tg/tl_message_peer_reaction_slices_gen.go similarity index 100% rename from tg/tl_message_user_reaction_slices_gen.go rename to tg/tl_message_peer_reaction_slices_gen.go diff --git a/tg/tl_message_reactions_gen.go b/tg/tl_message_reactions_gen.go index 734c4d4e60..969f65fee8 100644 --- a/tg/tl_message_reactions_gen.go +++ b/tg/tl_message_reactions_gen.go @@ -31,7 +31,7 @@ var ( _ = tdjson.Encoder{} ) -// MessageReactions represents TL type `messageReactions#87b6e36`. +// MessageReactions represents TL type `messageReactions#4f2b9479`. // // See https://core.telegram.org/constructor/messageReactions for reference. type MessageReactions struct { @@ -43,14 +43,14 @@ type MessageReactions struct { CanSeeList bool // Results field of MessageReactions. Results []ReactionCount - // RecentReactons field of MessageReactions. + // RecentReactions field of MessageReactions. // - // Use SetRecentReactons and GetRecentReactons helpers. - RecentReactons []MessageUserReaction + // Use SetRecentReactions and GetRecentReactions helpers. + RecentReactions []MessagePeerReaction } // MessageReactionsTypeID is TL type id of MessageReactions. -const MessageReactionsTypeID = 0x87b6e36 +const MessageReactionsTypeID = 0x4f2b9479 // Ensuring interfaces in compile-time for MessageReactions. var ( @@ -76,7 +76,7 @@ func (m *MessageReactions) Zero() bool { if !(m.Results == nil) { return false } - if !(m.RecentReactons == nil) { + if !(m.RecentReactions == nil) { return false } @@ -97,13 +97,13 @@ func (m *MessageReactions) FillFrom(from interface { GetMin() (value bool) GetCanSeeList() (value bool) GetResults() (value []ReactionCount) - GetRecentReactons() (value []MessageUserReaction, ok bool) + GetRecentReactions() (value []MessagePeerReaction, ok bool) }) { m.Min = from.GetMin() m.CanSeeList = from.GetCanSeeList() m.Results = from.GetResults() - if val, ok := from.GetRecentReactons(); ok { - m.RecentReactons = val + if val, ok := from.GetRecentReactions(); ok { + m.RecentReactions = val } } @@ -146,8 +146,8 @@ func (m *MessageReactions) TypeInfo() tdp.Type { SchemaName: "results", }, { - Name: "RecentReactons", - SchemaName: "recent_reactons", + Name: "RecentReactions", + SchemaName: "recent_reactions", Null: !m.Flags.Has(1), }, } @@ -162,7 +162,7 @@ func (m *MessageReactions) SetFlags() { if !(m.CanSeeList == false) { m.Flags.Set(2) } - if !(m.RecentReactons == nil) { + if !(m.RecentReactions == nil) { m.Flags.Set(1) } } @@ -170,7 +170,7 @@ func (m *MessageReactions) SetFlags() { // Encode implements bin.Encoder. func (m *MessageReactions) Encode(b *bin.Buffer) error { if m == nil { - return fmt.Errorf("can't encode messageReactions#87b6e36 as nil") + return fmt.Errorf("can't encode messageReactions#4f2b9479 as nil") } b.PutID(MessageReactionsTypeID) return m.EncodeBare(b) @@ -179,23 +179,23 @@ func (m *MessageReactions) Encode(b *bin.Buffer) error { // EncodeBare implements bin.BareEncoder. func (m *MessageReactions) EncodeBare(b *bin.Buffer) error { if m == nil { - return fmt.Errorf("can't encode messageReactions#87b6e36 as nil") + return fmt.Errorf("can't encode messageReactions#4f2b9479 as nil") } m.SetFlags() if err := m.Flags.Encode(b); err != nil { - return fmt.Errorf("unable to encode messageReactions#87b6e36: field flags: %w", err) + return fmt.Errorf("unable to encode messageReactions#4f2b9479: field flags: %w", err) } b.PutVectorHeader(len(m.Results)) for idx, v := range m.Results { if err := v.Encode(b); err != nil { - return fmt.Errorf("unable to encode messageReactions#87b6e36: field results element with index %d: %w", idx, err) + return fmt.Errorf("unable to encode messageReactions#4f2b9479: field results element with index %d: %w", idx, err) } } if m.Flags.Has(1) { - b.PutVectorHeader(len(m.RecentReactons)) - for idx, v := range m.RecentReactons { + b.PutVectorHeader(len(m.RecentReactions)) + for idx, v := range m.RecentReactions { if err := v.Encode(b); err != nil { - return fmt.Errorf("unable to encode messageReactions#87b6e36: field recent_reactons element with index %d: %w", idx, err) + return fmt.Errorf("unable to encode messageReactions#4f2b9479: field recent_reactions element with index %d: %w", idx, err) } } } @@ -205,10 +205,10 @@ func (m *MessageReactions) EncodeBare(b *bin.Buffer) error { // Decode implements bin.Decoder. func (m *MessageReactions) Decode(b *bin.Buffer) error { if m == nil { - return fmt.Errorf("can't decode messageReactions#87b6e36 to nil") + return fmt.Errorf("can't decode messageReactions#4f2b9479 to nil") } if err := b.ConsumeID(MessageReactionsTypeID); err != nil { - return fmt.Errorf("unable to decode messageReactions#87b6e36: %w", err) + return fmt.Errorf("unable to decode messageReactions#4f2b9479: %w", err) } return m.DecodeBare(b) } @@ -216,11 +216,11 @@ func (m *MessageReactions) Decode(b *bin.Buffer) error { // DecodeBare implements bin.BareDecoder. func (m *MessageReactions) DecodeBare(b *bin.Buffer) error { if m == nil { - return fmt.Errorf("can't decode messageReactions#87b6e36 to nil") + return fmt.Errorf("can't decode messageReactions#4f2b9479 to nil") } { if err := m.Flags.Decode(b); err != nil { - return fmt.Errorf("unable to decode messageReactions#87b6e36: field flags: %w", err) + return fmt.Errorf("unable to decode messageReactions#4f2b9479: field flags: %w", err) } } m.Min = m.Flags.Has(0) @@ -228,7 +228,7 @@ func (m *MessageReactions) DecodeBare(b *bin.Buffer) error { { headerLen, err := b.VectorHeader() if err != nil { - return fmt.Errorf("unable to decode messageReactions#87b6e36: field results: %w", err) + return fmt.Errorf("unable to decode messageReactions#4f2b9479: field results: %w", err) } if headerLen > 0 { @@ -237,7 +237,7 @@ func (m *MessageReactions) DecodeBare(b *bin.Buffer) error { for idx := 0; idx < headerLen; idx++ { var value ReactionCount if err := value.Decode(b); err != nil { - return fmt.Errorf("unable to decode messageReactions#87b6e36: field results: %w", err) + return fmt.Errorf("unable to decode messageReactions#4f2b9479: field results: %w", err) } m.Results = append(m.Results, value) } @@ -245,18 +245,18 @@ func (m *MessageReactions) DecodeBare(b *bin.Buffer) error { if m.Flags.Has(1) { headerLen, err := b.VectorHeader() if err != nil { - return fmt.Errorf("unable to decode messageReactions#87b6e36: field recent_reactons: %w", err) + return fmt.Errorf("unable to decode messageReactions#4f2b9479: field recent_reactions: %w", err) } if headerLen > 0 { - m.RecentReactons = make([]MessageUserReaction, 0, headerLen%bin.PreallocateLimit) + m.RecentReactions = make([]MessagePeerReaction, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { - var value MessageUserReaction + var value MessagePeerReaction if err := value.Decode(b); err != nil { - return fmt.Errorf("unable to decode messageReactions#87b6e36: field recent_reactons: %w", err) + return fmt.Errorf("unable to decode messageReactions#4f2b9479: field recent_reactions: %w", err) } - m.RecentReactons = append(m.RecentReactons, value) + m.RecentReactions = append(m.RecentReactions, value) } } return nil @@ -308,20 +308,20 @@ func (m *MessageReactions) GetResults() (value []ReactionCount) { return m.Results } -// SetRecentReactons sets value of RecentReactons conditional field. -func (m *MessageReactions) SetRecentReactons(value []MessageUserReaction) { +// SetRecentReactions sets value of RecentReactions conditional field. +func (m *MessageReactions) SetRecentReactions(value []MessagePeerReaction) { m.Flags.Set(1) - m.RecentReactons = value + m.RecentReactions = value } -// GetRecentReactons returns value of RecentReactons conditional field and +// GetRecentReactions returns value of RecentReactions conditional field and // boolean which is true if field was set. -func (m *MessageReactions) GetRecentReactons() (value []MessageUserReaction, ok bool) { +func (m *MessageReactions) GetRecentReactions() (value []MessagePeerReaction, ok bool) { if m == nil { return } if !m.Flags.Has(1) { return value, false } - return m.RecentReactons, true + return m.RecentReactions, true } diff --git a/tg/tl_message_user_reaction_gen.go b/tg/tl_message_user_reaction_gen.go deleted file mode 100644 index f52420a051..0000000000 --- a/tg/tl_message_user_reaction_gen.go +++ /dev/null @@ -1,188 +0,0 @@ -// Code generated by gotdgen, DO NOT EDIT. - -package tg - -import ( - "context" - "errors" - "fmt" - "sort" - "strings" - - "go.uber.org/multierr" - - "github.com/gotd/td/bin" - "github.com/gotd/td/tdjson" - "github.com/gotd/td/tdp" - "github.com/gotd/td/tgerr" -) - -// No-op definition for keeping imports. -var ( - _ = bin.Buffer{} - _ = context.Background() - _ = fmt.Stringer(nil) - _ = strings.Builder{} - _ = errors.Is - _ = multierr.AppendInto - _ = sort.Ints - _ = tdp.Format - _ = tgerr.Error{} - _ = tdjson.Encoder{} -) - -// MessageUserReaction represents TL type `messageUserReaction#932844fa`. -// -// See https://core.telegram.org/constructor/messageUserReaction for reference. -type MessageUserReaction struct { - // UserID field of MessageUserReaction. - UserID int64 - // Reaction field of MessageUserReaction. - Reaction string -} - -// MessageUserReactionTypeID is TL type id of MessageUserReaction. -const MessageUserReactionTypeID = 0x932844fa - -// Ensuring interfaces in compile-time for MessageUserReaction. -var ( - _ bin.Encoder = &MessageUserReaction{} - _ bin.Decoder = &MessageUserReaction{} - _ bin.BareEncoder = &MessageUserReaction{} - _ bin.BareDecoder = &MessageUserReaction{} -) - -func (m *MessageUserReaction) Zero() bool { - if m == nil { - return true - } - if !(m.UserID == 0) { - return false - } - if !(m.Reaction == "") { - return false - } - - return true -} - -// String implements fmt.Stringer. -func (m *MessageUserReaction) String() string { - if m == nil { - return "MessageUserReaction(nil)" - } - type Alias MessageUserReaction - return fmt.Sprintf("MessageUserReaction%+v", Alias(*m)) -} - -// FillFrom fills MessageUserReaction from given interface. -func (m *MessageUserReaction) FillFrom(from interface { - GetUserID() (value int64) - GetReaction() (value string) -}) { - m.UserID = from.GetUserID() - m.Reaction = from.GetReaction() -} - -// TypeID returns type id in TL schema. -// -// See https://core.telegram.org/mtproto/TL-tl#remarks. -func (*MessageUserReaction) TypeID() uint32 { - return MessageUserReactionTypeID -} - -// TypeName returns name of type in TL schema. -func (*MessageUserReaction) TypeName() string { - return "messageUserReaction" -} - -// TypeInfo returns info about TL type. -func (m *MessageUserReaction) TypeInfo() tdp.Type { - typ := tdp.Type{ - Name: "messageUserReaction", - ID: MessageUserReactionTypeID, - } - if m == nil { - typ.Null = true - return typ - } - typ.Fields = []tdp.Field{ - { - Name: "UserID", - SchemaName: "user_id", - }, - { - Name: "Reaction", - SchemaName: "reaction", - }, - } - return typ -} - -// Encode implements bin.Encoder. -func (m *MessageUserReaction) Encode(b *bin.Buffer) error { - if m == nil { - return fmt.Errorf("can't encode messageUserReaction#932844fa as nil") - } - b.PutID(MessageUserReactionTypeID) - return m.EncodeBare(b) -} - -// EncodeBare implements bin.BareEncoder. -func (m *MessageUserReaction) EncodeBare(b *bin.Buffer) error { - if m == nil { - return fmt.Errorf("can't encode messageUserReaction#932844fa as nil") - } - b.PutLong(m.UserID) - b.PutString(m.Reaction) - return nil -} - -// Decode implements bin.Decoder. -func (m *MessageUserReaction) Decode(b *bin.Buffer) error { - if m == nil { - return fmt.Errorf("can't decode messageUserReaction#932844fa to nil") - } - if err := b.ConsumeID(MessageUserReactionTypeID); err != nil { - return fmt.Errorf("unable to decode messageUserReaction#932844fa: %w", err) - } - return m.DecodeBare(b) -} - -// DecodeBare implements bin.BareDecoder. -func (m *MessageUserReaction) DecodeBare(b *bin.Buffer) error { - if m == nil { - return fmt.Errorf("can't decode messageUserReaction#932844fa to nil") - } - { - value, err := b.Long() - if err != nil { - return fmt.Errorf("unable to decode messageUserReaction#932844fa: field user_id: %w", err) - } - m.UserID = value - } - { - value, err := b.String() - if err != nil { - return fmt.Errorf("unable to decode messageUserReaction#932844fa: field reaction: %w", err) - } - m.Reaction = value - } - return nil -} - -// GetUserID returns value of UserID field. -func (m *MessageUserReaction) GetUserID() (value int64) { - if m == nil { - return - } - return m.UserID -} - -// GetReaction returns value of Reaction field. -func (m *MessageUserReaction) GetReaction() (value string) { - if m == nil { - return - } - return m.Reaction -} diff --git a/tg/tl_messages_get_unread_reactions_gen.go b/tg/tl_messages_get_unread_reactions_gen.go new file mode 100644 index 0000000000..cc62eac365 --- /dev/null +++ b/tg/tl_messages_get_unread_reactions_gen.go @@ -0,0 +1,313 @@ +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) + +// MessagesGetUnreadReactionsRequest represents TL type `messages.getUnreadReactions#e85bae1a`. +// +// See https://core.telegram.org/method/messages.getUnreadReactions for reference. +type MessagesGetUnreadReactionsRequest struct { + // Peer field of MessagesGetUnreadReactionsRequest. + Peer InputPeerClass + // OffsetID field of MessagesGetUnreadReactionsRequest. + OffsetID int + // AddOffset field of MessagesGetUnreadReactionsRequest. + AddOffset int + // Limit field of MessagesGetUnreadReactionsRequest. + Limit int + // MaxID field of MessagesGetUnreadReactionsRequest. + MaxID int + // MinID field of MessagesGetUnreadReactionsRequest. + MinID int +} + +// MessagesGetUnreadReactionsRequestTypeID is TL type id of MessagesGetUnreadReactionsRequest. +const MessagesGetUnreadReactionsRequestTypeID = 0xe85bae1a + +// Ensuring interfaces in compile-time for MessagesGetUnreadReactionsRequest. +var ( + _ bin.Encoder = &MessagesGetUnreadReactionsRequest{} + _ bin.Decoder = &MessagesGetUnreadReactionsRequest{} + _ bin.BareEncoder = &MessagesGetUnreadReactionsRequest{} + _ bin.BareDecoder = &MessagesGetUnreadReactionsRequest{} +) + +func (g *MessagesGetUnreadReactionsRequest) Zero() bool { + if g == nil { + return true + } + if !(g.Peer == nil) { + return false + } + if !(g.OffsetID == 0) { + return false + } + if !(g.AddOffset == 0) { + return false + } + if !(g.Limit == 0) { + return false + } + if !(g.MaxID == 0) { + return false + } + if !(g.MinID == 0) { + return false + } + + return true +} + +// String implements fmt.Stringer. +func (g *MessagesGetUnreadReactionsRequest) String() string { + if g == nil { + return "MessagesGetUnreadReactionsRequest(nil)" + } + type Alias MessagesGetUnreadReactionsRequest + return fmt.Sprintf("MessagesGetUnreadReactionsRequest%+v", Alias(*g)) +} + +// FillFrom fills MessagesGetUnreadReactionsRequest from given interface. +func (g *MessagesGetUnreadReactionsRequest) FillFrom(from interface { + GetPeer() (value InputPeerClass) + GetOffsetID() (value int) + GetAddOffset() (value int) + GetLimit() (value int) + GetMaxID() (value int) + GetMinID() (value int) +}) { + g.Peer = from.GetPeer() + g.OffsetID = from.GetOffsetID() + g.AddOffset = from.GetAddOffset() + g.Limit = from.GetLimit() + g.MaxID = from.GetMaxID() + g.MinID = from.GetMinID() +} + +// TypeID returns type id in TL schema. +// +// See https://core.telegram.org/mtproto/TL-tl#remarks. +func (*MessagesGetUnreadReactionsRequest) TypeID() uint32 { + return MessagesGetUnreadReactionsRequestTypeID +} + +// TypeName returns name of type in TL schema. +func (*MessagesGetUnreadReactionsRequest) TypeName() string { + return "messages.getUnreadReactions" +} + +// TypeInfo returns info about TL type. +func (g *MessagesGetUnreadReactionsRequest) TypeInfo() tdp.Type { + typ := tdp.Type{ + Name: "messages.getUnreadReactions", + ID: MessagesGetUnreadReactionsRequestTypeID, + } + if g == nil { + typ.Null = true + return typ + } + typ.Fields = []tdp.Field{ + { + Name: "Peer", + SchemaName: "peer", + }, + { + Name: "OffsetID", + SchemaName: "offset_id", + }, + { + Name: "AddOffset", + SchemaName: "add_offset", + }, + { + Name: "Limit", + SchemaName: "limit", + }, + { + Name: "MaxID", + SchemaName: "max_id", + }, + { + Name: "MinID", + SchemaName: "min_id", + }, + } + return typ +} + +// Encode implements bin.Encoder. +func (g *MessagesGetUnreadReactionsRequest) Encode(b *bin.Buffer) error { + if g == nil { + return fmt.Errorf("can't encode messages.getUnreadReactions#e85bae1a as nil") + } + b.PutID(MessagesGetUnreadReactionsRequestTypeID) + return g.EncodeBare(b) +} + +// EncodeBare implements bin.BareEncoder. +func (g *MessagesGetUnreadReactionsRequest) EncodeBare(b *bin.Buffer) error { + if g == nil { + return fmt.Errorf("can't encode messages.getUnreadReactions#e85bae1a as nil") + } + if g.Peer == nil { + return fmt.Errorf("unable to encode messages.getUnreadReactions#e85bae1a: field peer is nil") + } + if err := g.Peer.Encode(b); err != nil { + return fmt.Errorf("unable to encode messages.getUnreadReactions#e85bae1a: field peer: %w", err) + } + b.PutInt(g.OffsetID) + b.PutInt(g.AddOffset) + b.PutInt(g.Limit) + b.PutInt(g.MaxID) + b.PutInt(g.MinID) + return nil +} + +// Decode implements bin.Decoder. +func (g *MessagesGetUnreadReactionsRequest) Decode(b *bin.Buffer) error { + if g == nil { + return fmt.Errorf("can't decode messages.getUnreadReactions#e85bae1a to nil") + } + if err := b.ConsumeID(MessagesGetUnreadReactionsRequestTypeID); err != nil { + return fmt.Errorf("unable to decode messages.getUnreadReactions#e85bae1a: %w", err) + } + return g.DecodeBare(b) +} + +// DecodeBare implements bin.BareDecoder. +func (g *MessagesGetUnreadReactionsRequest) DecodeBare(b *bin.Buffer) error { + if g == nil { + return fmt.Errorf("can't decode messages.getUnreadReactions#e85bae1a to nil") + } + { + value, err := DecodeInputPeer(b) + if err != nil { + return fmt.Errorf("unable to decode messages.getUnreadReactions#e85bae1a: field peer: %w", err) + } + g.Peer = value + } + { + value, err := b.Int() + if err != nil { + return fmt.Errorf("unable to decode messages.getUnreadReactions#e85bae1a: field offset_id: %w", err) + } + g.OffsetID = value + } + { + value, err := b.Int() + if err != nil { + return fmt.Errorf("unable to decode messages.getUnreadReactions#e85bae1a: field add_offset: %w", err) + } + g.AddOffset = value + } + { + value, err := b.Int() + if err != nil { + return fmt.Errorf("unable to decode messages.getUnreadReactions#e85bae1a: field limit: %w", err) + } + g.Limit = value + } + { + value, err := b.Int() + if err != nil { + return fmt.Errorf("unable to decode messages.getUnreadReactions#e85bae1a: field max_id: %w", err) + } + g.MaxID = value + } + { + value, err := b.Int() + if err != nil { + return fmt.Errorf("unable to decode messages.getUnreadReactions#e85bae1a: field min_id: %w", err) + } + g.MinID = value + } + return nil +} + +// GetPeer returns value of Peer field. +func (g *MessagesGetUnreadReactionsRequest) GetPeer() (value InputPeerClass) { + if g == nil { + return + } + return g.Peer +} + +// GetOffsetID returns value of OffsetID field. +func (g *MessagesGetUnreadReactionsRequest) GetOffsetID() (value int) { + if g == nil { + return + } + return g.OffsetID +} + +// GetAddOffset returns value of AddOffset field. +func (g *MessagesGetUnreadReactionsRequest) GetAddOffset() (value int) { + if g == nil { + return + } + return g.AddOffset +} + +// GetLimit returns value of Limit field. +func (g *MessagesGetUnreadReactionsRequest) GetLimit() (value int) { + if g == nil { + return + } + return g.Limit +} + +// GetMaxID returns value of MaxID field. +func (g *MessagesGetUnreadReactionsRequest) GetMaxID() (value int) { + if g == nil { + return + } + return g.MaxID +} + +// GetMinID returns value of MinID field. +func (g *MessagesGetUnreadReactionsRequest) GetMinID() (value int) { + if g == nil { + return + } + return g.MinID +} + +// MessagesGetUnreadReactions invokes method messages.getUnreadReactions#e85bae1a returning error if any. +// +// See https://core.telegram.org/method/messages.getUnreadReactions for reference. +func (c *Client) MessagesGetUnreadReactions(ctx context.Context, request *MessagesGetUnreadReactionsRequest) (MessagesMessagesClass, error) { + var result MessagesMessagesBox + + if err := c.rpc.Invoke(ctx, request, &result); err != nil { + return nil, err + } + return result.Messages, nil +} diff --git a/tg/tl_messages_get_unread_reactions_slices_gen.go b/tg/tl_messages_get_unread_reactions_slices_gen.go new file mode 100644 index 0000000000..fe21471a4c --- /dev/null +++ b/tg/tl_messages_get_unread_reactions_slices_gen.go @@ -0,0 +1,35 @@ +//go:build !no_gotd_slices +// +build !no_gotd_slices + +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) diff --git a/tg/tl_messages_message_reactions_list_gen.go b/tg/tl_messages_message_reactions_list_gen.go index a6cafa0afe..0dee8b0fd7 100644 --- a/tg/tl_messages_message_reactions_list_gen.go +++ b/tg/tl_messages_message_reactions_list_gen.go @@ -31,7 +31,7 @@ var ( _ = tdjson.Encoder{} ) -// MessagesMessageReactionsList represents TL type `messages.messageReactionsList#a366923c`. +// MessagesMessageReactionsList represents TL type `messages.messageReactionsList#31bd492d`. // // See https://core.telegram.org/constructor/messages.messageReactionsList for reference. type MessagesMessageReactionsList struct { @@ -40,7 +40,9 @@ type MessagesMessageReactionsList struct { // Count field of MessagesMessageReactionsList. Count int // Reactions field of MessagesMessageReactionsList. - Reactions []MessageUserReaction + Reactions []MessagePeerReaction + // Chats field of MessagesMessageReactionsList. + Chats []ChatClass // Users field of MessagesMessageReactionsList. Users []UserClass // NextOffset field of MessagesMessageReactionsList. @@ -50,7 +52,7 @@ type MessagesMessageReactionsList struct { } // MessagesMessageReactionsListTypeID is TL type id of MessagesMessageReactionsList. -const MessagesMessageReactionsListTypeID = 0xa366923c +const MessagesMessageReactionsListTypeID = 0x31bd492d // Ensuring interfaces in compile-time for MessagesMessageReactionsList. var ( @@ -73,6 +75,9 @@ func (m *MessagesMessageReactionsList) Zero() bool { if !(m.Reactions == nil) { return false } + if !(m.Chats == nil) { + return false + } if !(m.Users == nil) { return false } @@ -95,12 +100,14 @@ func (m *MessagesMessageReactionsList) String() string { // FillFrom fills MessagesMessageReactionsList from given interface. func (m *MessagesMessageReactionsList) FillFrom(from interface { GetCount() (value int) - GetReactions() (value []MessageUserReaction) + GetReactions() (value []MessagePeerReaction) + GetChats() (value []ChatClass) GetUsers() (value []UserClass) GetNextOffset() (value string, ok bool) }) { m.Count = from.GetCount() m.Reactions = from.GetReactions() + m.Chats = from.GetChats() m.Users = from.GetUsers() if val, ok := from.GetNextOffset(); ok { m.NextOffset = val @@ -139,6 +146,10 @@ func (m *MessagesMessageReactionsList) TypeInfo() tdp.Type { Name: "Reactions", SchemaName: "reactions", }, + { + Name: "Chats", + SchemaName: "chats", + }, { Name: "Users", SchemaName: "users", @@ -162,7 +173,7 @@ func (m *MessagesMessageReactionsList) SetFlags() { // Encode implements bin.Encoder. func (m *MessagesMessageReactionsList) Encode(b *bin.Buffer) error { if m == nil { - return fmt.Errorf("can't encode messages.messageReactionsList#a366923c as nil") + return fmt.Errorf("can't encode messages.messageReactionsList#31bd492d as nil") } b.PutID(MessagesMessageReactionsListTypeID) return m.EncodeBare(b) @@ -171,26 +182,35 @@ func (m *MessagesMessageReactionsList) Encode(b *bin.Buffer) error { // EncodeBare implements bin.BareEncoder. func (m *MessagesMessageReactionsList) EncodeBare(b *bin.Buffer) error { if m == nil { - return fmt.Errorf("can't encode messages.messageReactionsList#a366923c as nil") + return fmt.Errorf("can't encode messages.messageReactionsList#31bd492d as nil") } m.SetFlags() if err := m.Flags.Encode(b); err != nil { - return fmt.Errorf("unable to encode messages.messageReactionsList#a366923c: field flags: %w", err) + return fmt.Errorf("unable to encode messages.messageReactionsList#31bd492d: field flags: %w", err) } b.PutInt(m.Count) b.PutVectorHeader(len(m.Reactions)) for idx, v := range m.Reactions { if err := v.Encode(b); err != nil { - return fmt.Errorf("unable to encode messages.messageReactionsList#a366923c: field reactions element with index %d: %w", idx, err) + return fmt.Errorf("unable to encode messages.messageReactionsList#31bd492d: field reactions element with index %d: %w", idx, err) + } + } + b.PutVectorHeader(len(m.Chats)) + for idx, v := range m.Chats { + if v == nil { + return fmt.Errorf("unable to encode messages.messageReactionsList#31bd492d: field chats element with index %d is nil", idx) + } + if err := v.Encode(b); err != nil { + return fmt.Errorf("unable to encode messages.messageReactionsList#31bd492d: field chats element with index %d: %w", idx, err) } } b.PutVectorHeader(len(m.Users)) for idx, v := range m.Users { if v == nil { - return fmt.Errorf("unable to encode messages.messageReactionsList#a366923c: field users element with index %d is nil", idx) + return fmt.Errorf("unable to encode messages.messageReactionsList#31bd492d: field users element with index %d is nil", idx) } if err := v.Encode(b); err != nil { - return fmt.Errorf("unable to encode messages.messageReactionsList#a366923c: field users element with index %d: %w", idx, err) + return fmt.Errorf("unable to encode messages.messageReactionsList#31bd492d: field users element with index %d: %w", idx, err) } } if m.Flags.Has(0) { @@ -202,10 +222,10 @@ func (m *MessagesMessageReactionsList) EncodeBare(b *bin.Buffer) error { // Decode implements bin.Decoder. func (m *MessagesMessageReactionsList) Decode(b *bin.Buffer) error { if m == nil { - return fmt.Errorf("can't decode messages.messageReactionsList#a366923c to nil") + return fmt.Errorf("can't decode messages.messageReactionsList#31bd492d to nil") } if err := b.ConsumeID(MessagesMessageReactionsListTypeID); err != nil { - return fmt.Errorf("unable to decode messages.messageReactionsList#a366923c: %w", err) + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: %w", err) } return m.DecodeBare(b) } @@ -213,33 +233,33 @@ func (m *MessagesMessageReactionsList) Decode(b *bin.Buffer) error { // DecodeBare implements bin.BareDecoder. func (m *MessagesMessageReactionsList) DecodeBare(b *bin.Buffer) error { if m == nil { - return fmt.Errorf("can't decode messages.messageReactionsList#a366923c to nil") + return fmt.Errorf("can't decode messages.messageReactionsList#31bd492d to nil") } { if err := m.Flags.Decode(b); err != nil { - return fmt.Errorf("unable to decode messages.messageReactionsList#a366923c: field flags: %w", err) + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field flags: %w", err) } } { value, err := b.Int() if err != nil { - return fmt.Errorf("unable to decode messages.messageReactionsList#a366923c: field count: %w", err) + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field count: %w", err) } m.Count = value } { headerLen, err := b.VectorHeader() if err != nil { - return fmt.Errorf("unable to decode messages.messageReactionsList#a366923c: field reactions: %w", err) + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field reactions: %w", err) } if headerLen > 0 { - m.Reactions = make([]MessageUserReaction, 0, headerLen%bin.PreallocateLimit) + m.Reactions = make([]MessagePeerReaction, 0, headerLen%bin.PreallocateLimit) } for idx := 0; idx < headerLen; idx++ { - var value MessageUserReaction + var value MessagePeerReaction if err := value.Decode(b); err != nil { - return fmt.Errorf("unable to decode messages.messageReactionsList#a366923c: field reactions: %w", err) + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field reactions: %w", err) } m.Reactions = append(m.Reactions, value) } @@ -247,7 +267,24 @@ func (m *MessagesMessageReactionsList) DecodeBare(b *bin.Buffer) error { { headerLen, err := b.VectorHeader() if err != nil { - return fmt.Errorf("unable to decode messages.messageReactionsList#a366923c: field users: %w", err) + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field chats: %w", err) + } + + if headerLen > 0 { + m.Chats = make([]ChatClass, 0, headerLen%bin.PreallocateLimit) + } + for idx := 0; idx < headerLen; idx++ { + value, err := DecodeChat(b) + if err != nil { + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field chats: %w", err) + } + m.Chats = append(m.Chats, value) + } + } + { + headerLen, err := b.VectorHeader() + if err != nil { + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field users: %w", err) } if headerLen > 0 { @@ -256,7 +293,7 @@ func (m *MessagesMessageReactionsList) DecodeBare(b *bin.Buffer) error { for idx := 0; idx < headerLen; idx++ { value, err := DecodeUser(b) if err != nil { - return fmt.Errorf("unable to decode messages.messageReactionsList#a366923c: field users: %w", err) + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field users: %w", err) } m.Users = append(m.Users, value) } @@ -264,7 +301,7 @@ func (m *MessagesMessageReactionsList) DecodeBare(b *bin.Buffer) error { if m.Flags.Has(0) { value, err := b.String() if err != nil { - return fmt.Errorf("unable to decode messages.messageReactionsList#a366923c: field next_offset: %w", err) + return fmt.Errorf("unable to decode messages.messageReactionsList#31bd492d: field next_offset: %w", err) } m.NextOffset = value } @@ -280,13 +317,21 @@ func (m *MessagesMessageReactionsList) GetCount() (value int) { } // GetReactions returns value of Reactions field. -func (m *MessagesMessageReactionsList) GetReactions() (value []MessageUserReaction) { +func (m *MessagesMessageReactionsList) GetReactions() (value []MessagePeerReaction) { if m == nil { return } return m.Reactions } +// GetChats returns value of Chats field. +func (m *MessagesMessageReactionsList) GetChats() (value []ChatClass) { + if m == nil { + return + } + return m.Chats +} + // GetUsers returns value of Users field. func (m *MessagesMessageReactionsList) GetUsers() (value []UserClass) { if m == nil { @@ -313,6 +358,11 @@ func (m *MessagesMessageReactionsList) GetNextOffset() (value string, ok bool) { return m.NextOffset, true } +// MapChats returns field Chats wrapped in ChatClassArray helper. +func (m *MessagesMessageReactionsList) MapChats() (value ChatClassArray) { + return ChatClassArray(m.Chats) +} + // MapUsers returns field Users wrapped in UserClassArray helper. func (m *MessagesMessageReactionsList) MapUsers() (value UserClassArray) { return UserClassArray(m.Users) diff --git a/tg/tl_messages_read_reactions_gen.go b/tg/tl_messages_read_reactions_gen.go new file mode 100644 index 0000000000..3e256393fc --- /dev/null +++ b/tg/tl_messages_read_reactions_gen.go @@ -0,0 +1,181 @@ +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) + +// MessagesReadReactionsRequest represents TL type `messages.readReactions#82e251d7`. +// +// See https://core.telegram.org/method/messages.readReactions for reference. +type MessagesReadReactionsRequest struct { + // Peer field of MessagesReadReactionsRequest. + Peer InputPeerClass +} + +// MessagesReadReactionsRequestTypeID is TL type id of MessagesReadReactionsRequest. +const MessagesReadReactionsRequestTypeID = 0x82e251d7 + +// Ensuring interfaces in compile-time for MessagesReadReactionsRequest. +var ( + _ bin.Encoder = &MessagesReadReactionsRequest{} + _ bin.Decoder = &MessagesReadReactionsRequest{} + _ bin.BareEncoder = &MessagesReadReactionsRequest{} + _ bin.BareDecoder = &MessagesReadReactionsRequest{} +) + +func (r *MessagesReadReactionsRequest) Zero() bool { + if r == nil { + return true + } + if !(r.Peer == nil) { + return false + } + + return true +} + +// String implements fmt.Stringer. +func (r *MessagesReadReactionsRequest) String() string { + if r == nil { + return "MessagesReadReactionsRequest(nil)" + } + type Alias MessagesReadReactionsRequest + return fmt.Sprintf("MessagesReadReactionsRequest%+v", Alias(*r)) +} + +// FillFrom fills MessagesReadReactionsRequest from given interface. +func (r *MessagesReadReactionsRequest) FillFrom(from interface { + GetPeer() (value InputPeerClass) +}) { + r.Peer = from.GetPeer() +} + +// TypeID returns type id in TL schema. +// +// See https://core.telegram.org/mtproto/TL-tl#remarks. +func (*MessagesReadReactionsRequest) TypeID() uint32 { + return MessagesReadReactionsRequestTypeID +} + +// TypeName returns name of type in TL schema. +func (*MessagesReadReactionsRequest) TypeName() string { + return "messages.readReactions" +} + +// TypeInfo returns info about TL type. +func (r *MessagesReadReactionsRequest) TypeInfo() tdp.Type { + typ := tdp.Type{ + Name: "messages.readReactions", + ID: MessagesReadReactionsRequestTypeID, + } + if r == nil { + typ.Null = true + return typ + } + typ.Fields = []tdp.Field{ + { + Name: "Peer", + SchemaName: "peer", + }, + } + return typ +} + +// Encode implements bin.Encoder. +func (r *MessagesReadReactionsRequest) Encode(b *bin.Buffer) error { + if r == nil { + return fmt.Errorf("can't encode messages.readReactions#82e251d7 as nil") + } + b.PutID(MessagesReadReactionsRequestTypeID) + return r.EncodeBare(b) +} + +// EncodeBare implements bin.BareEncoder. +func (r *MessagesReadReactionsRequest) EncodeBare(b *bin.Buffer) error { + if r == nil { + return fmt.Errorf("can't encode messages.readReactions#82e251d7 as nil") + } + if r.Peer == nil { + return fmt.Errorf("unable to encode messages.readReactions#82e251d7: field peer is nil") + } + if err := r.Peer.Encode(b); err != nil { + return fmt.Errorf("unable to encode messages.readReactions#82e251d7: field peer: %w", err) + } + return nil +} + +// Decode implements bin.Decoder. +func (r *MessagesReadReactionsRequest) Decode(b *bin.Buffer) error { + if r == nil { + return fmt.Errorf("can't decode messages.readReactions#82e251d7 to nil") + } + if err := b.ConsumeID(MessagesReadReactionsRequestTypeID); err != nil { + return fmt.Errorf("unable to decode messages.readReactions#82e251d7: %w", err) + } + return r.DecodeBare(b) +} + +// DecodeBare implements bin.BareDecoder. +func (r *MessagesReadReactionsRequest) DecodeBare(b *bin.Buffer) error { + if r == nil { + return fmt.Errorf("can't decode messages.readReactions#82e251d7 to nil") + } + { + value, err := DecodeInputPeer(b) + if err != nil { + return fmt.Errorf("unable to decode messages.readReactions#82e251d7: field peer: %w", err) + } + r.Peer = value + } + return nil +} + +// GetPeer returns value of Peer field. +func (r *MessagesReadReactionsRequest) GetPeer() (value InputPeerClass) { + if r == nil { + return + } + return r.Peer +} + +// MessagesReadReactions invokes method messages.readReactions#82e251d7 returning error if any. +// +// See https://core.telegram.org/method/messages.readReactions for reference. +func (c *Client) MessagesReadReactions(ctx context.Context, peer InputPeerClass) (*MessagesAffectedHistory, error) { + var result MessagesAffectedHistory + + request := &MessagesReadReactionsRequest{ + Peer: peer, + } + if err := c.rpc.Invoke(ctx, request, &result); err != nil { + return nil, err + } + return &result, nil +} diff --git a/tg/tl_messages_read_reactions_slices_gen.go b/tg/tl_messages_read_reactions_slices_gen.go new file mode 100644 index 0000000000..fe21471a4c --- /dev/null +++ b/tg/tl_messages_read_reactions_slices_gen.go @@ -0,0 +1,35 @@ +//go:build !no_gotd_slices +// +build !no_gotd_slices + +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) diff --git a/tg/tl_messages_send_reaction_gen.go b/tg/tl_messages_send_reaction_gen.go index 300fe8a455..1b64d01843 100644 --- a/tg/tl_messages_send_reaction_gen.go +++ b/tg/tl_messages_send_reaction_gen.go @@ -37,6 +37,8 @@ var ( type MessagesSendReactionRequest struct { // Flags field of MessagesSendReactionRequest. Flags bin.Fields + // Big field of MessagesSendReactionRequest. + Big bool // Peer field of MessagesSendReactionRequest. Peer InputPeerClass // MsgID field of MessagesSendReactionRequest. @@ -65,6 +67,9 @@ func (s *MessagesSendReactionRequest) Zero() bool { if !(s.Flags.Zero()) { return false } + if !(s.Big == false) { + return false + } if !(s.Peer == nil) { return false } @@ -89,10 +94,12 @@ func (s *MessagesSendReactionRequest) String() string { // FillFrom fills MessagesSendReactionRequest from given interface. func (s *MessagesSendReactionRequest) FillFrom(from interface { + GetBig() (value bool) GetPeer() (value InputPeerClass) GetMsgID() (value int) GetReaction() (value string, ok bool) }) { + s.Big = from.GetBig() s.Peer = from.GetPeer() s.MsgID = from.GetMsgID() if val, ok := from.GetReaction(); ok { @@ -124,6 +131,11 @@ func (s *MessagesSendReactionRequest) TypeInfo() tdp.Type { return typ } typ.Fields = []tdp.Field{ + { + Name: "Big", + SchemaName: "big", + Null: !s.Flags.Has(1), + }, { Name: "Peer", SchemaName: "peer", @@ -143,6 +155,9 @@ func (s *MessagesSendReactionRequest) TypeInfo() tdp.Type { // SetFlags sets flags for non-zero fields. func (s *MessagesSendReactionRequest) SetFlags() { + if !(s.Big == false) { + s.Flags.Set(1) + } if !(s.Reaction == "") { s.Flags.Set(0) } @@ -200,6 +215,7 @@ func (s *MessagesSendReactionRequest) DecodeBare(b *bin.Buffer) error { return fmt.Errorf("unable to decode messages.sendReaction#25690ce4: field flags: %w", err) } } + s.Big = s.Flags.Has(1) { value, err := DecodeInputPeer(b) if err != nil { @@ -224,6 +240,25 @@ func (s *MessagesSendReactionRequest) DecodeBare(b *bin.Buffer) error { return nil } +// SetBig sets value of Big conditional field. +func (s *MessagesSendReactionRequest) SetBig(value bool) { + if value { + s.Flags.Set(1) + s.Big = true + } else { + s.Flags.Unset(1) + s.Big = false + } +} + +// GetBig returns value of Big conditional field. +func (s *MessagesSendReactionRequest) GetBig() (value bool) { + if s == nil { + return + } + return s.Flags.Has(1) +} + // GetPeer returns value of Peer field. func (s *MessagesSendReactionRequest) GetPeer() (value InputPeerClass) { if s == nil { diff --git a/tg/tl_messages_translate_text_gen.go b/tg/tl_messages_translate_text_gen.go new file mode 100644 index 0000000000..bf7bcf2957 --- /dev/null +++ b/tg/tl_messages_translate_text_gen.go @@ -0,0 +1,388 @@ +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) + +// MessagesTranslateTextRequest represents TL type `messages.translateText#24ce6dee`. +// +// See https://core.telegram.org/method/messages.translateText for reference. +type MessagesTranslateTextRequest struct { + // Flags field of MessagesTranslateTextRequest. + Flags bin.Fields + // Peer field of MessagesTranslateTextRequest. + // + // Use SetPeer and GetPeer helpers. + Peer InputPeerClass + // MsgID field of MessagesTranslateTextRequest. + // + // Use SetMsgID and GetMsgID helpers. + MsgID int + // Text field of MessagesTranslateTextRequest. + // + // Use SetText and GetText helpers. + Text string + // FromLang field of MessagesTranslateTextRequest. + // + // Use SetFromLang and GetFromLang helpers. + FromLang string + // ToLang field of MessagesTranslateTextRequest. + ToLang string +} + +// MessagesTranslateTextRequestTypeID is TL type id of MessagesTranslateTextRequest. +const MessagesTranslateTextRequestTypeID = 0x24ce6dee + +// Ensuring interfaces in compile-time for MessagesTranslateTextRequest. +var ( + _ bin.Encoder = &MessagesTranslateTextRequest{} + _ bin.Decoder = &MessagesTranslateTextRequest{} + _ bin.BareEncoder = &MessagesTranslateTextRequest{} + _ bin.BareDecoder = &MessagesTranslateTextRequest{} +) + +func (t *MessagesTranslateTextRequest) Zero() bool { + if t == nil { + return true + } + if !(t.Flags.Zero()) { + return false + } + if !(t.Peer == nil) { + return false + } + if !(t.MsgID == 0) { + return false + } + if !(t.Text == "") { + return false + } + if !(t.FromLang == "") { + return false + } + if !(t.ToLang == "") { + return false + } + + return true +} + +// String implements fmt.Stringer. +func (t *MessagesTranslateTextRequest) String() string { + if t == nil { + return "MessagesTranslateTextRequest(nil)" + } + type Alias MessagesTranslateTextRequest + return fmt.Sprintf("MessagesTranslateTextRequest%+v", Alias(*t)) +} + +// FillFrom fills MessagesTranslateTextRequest from given interface. +func (t *MessagesTranslateTextRequest) FillFrom(from interface { + GetPeer() (value InputPeerClass, ok bool) + GetMsgID() (value int, ok bool) + GetText() (value string, ok bool) + GetFromLang() (value string, ok bool) + GetToLang() (value string) +}) { + if val, ok := from.GetPeer(); ok { + t.Peer = val + } + + if val, ok := from.GetMsgID(); ok { + t.MsgID = val + } + + if val, ok := from.GetText(); ok { + t.Text = val + } + + if val, ok := from.GetFromLang(); ok { + t.FromLang = val + } + + t.ToLang = from.GetToLang() +} + +// TypeID returns type id in TL schema. +// +// See https://core.telegram.org/mtproto/TL-tl#remarks. +func (*MessagesTranslateTextRequest) TypeID() uint32 { + return MessagesTranslateTextRequestTypeID +} + +// TypeName returns name of type in TL schema. +func (*MessagesTranslateTextRequest) TypeName() string { + return "messages.translateText" +} + +// TypeInfo returns info about TL type. +func (t *MessagesTranslateTextRequest) TypeInfo() tdp.Type { + typ := tdp.Type{ + Name: "messages.translateText", + ID: MessagesTranslateTextRequestTypeID, + } + if t == nil { + typ.Null = true + return typ + } + typ.Fields = []tdp.Field{ + { + Name: "Peer", + SchemaName: "peer", + Null: !t.Flags.Has(0), + }, + { + Name: "MsgID", + SchemaName: "msg_id", + Null: !t.Flags.Has(0), + }, + { + Name: "Text", + SchemaName: "text", + Null: !t.Flags.Has(1), + }, + { + Name: "FromLang", + SchemaName: "from_lang", + Null: !t.Flags.Has(2), + }, + { + Name: "ToLang", + SchemaName: "to_lang", + }, + } + return typ +} + +// SetFlags sets flags for non-zero fields. +func (t *MessagesTranslateTextRequest) SetFlags() { + if !(t.Peer == nil) { + t.Flags.Set(0) + } + if !(t.MsgID == 0) { + t.Flags.Set(0) + } + if !(t.Text == "") { + t.Flags.Set(1) + } + if !(t.FromLang == "") { + t.Flags.Set(2) + } +} + +// Encode implements bin.Encoder. +func (t *MessagesTranslateTextRequest) Encode(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't encode messages.translateText#24ce6dee as nil") + } + b.PutID(MessagesTranslateTextRequestTypeID) + return t.EncodeBare(b) +} + +// EncodeBare implements bin.BareEncoder. +func (t *MessagesTranslateTextRequest) EncodeBare(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't encode messages.translateText#24ce6dee as nil") + } + t.SetFlags() + if err := t.Flags.Encode(b); err != nil { + return fmt.Errorf("unable to encode messages.translateText#24ce6dee: field flags: %w", err) + } + if t.Flags.Has(0) { + if t.Peer == nil { + return fmt.Errorf("unable to encode messages.translateText#24ce6dee: field peer is nil") + } + if err := t.Peer.Encode(b); err != nil { + return fmt.Errorf("unable to encode messages.translateText#24ce6dee: field peer: %w", err) + } + } + if t.Flags.Has(0) { + b.PutInt(t.MsgID) + } + if t.Flags.Has(1) { + b.PutString(t.Text) + } + if t.Flags.Has(2) { + b.PutString(t.FromLang) + } + b.PutString(t.ToLang) + return nil +} + +// Decode implements bin.Decoder. +func (t *MessagesTranslateTextRequest) Decode(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't decode messages.translateText#24ce6dee to nil") + } + if err := b.ConsumeID(MessagesTranslateTextRequestTypeID); err != nil { + return fmt.Errorf("unable to decode messages.translateText#24ce6dee: %w", err) + } + return t.DecodeBare(b) +} + +// DecodeBare implements bin.BareDecoder. +func (t *MessagesTranslateTextRequest) DecodeBare(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't decode messages.translateText#24ce6dee to nil") + } + { + if err := t.Flags.Decode(b); err != nil { + return fmt.Errorf("unable to decode messages.translateText#24ce6dee: field flags: %w", err) + } + } + if t.Flags.Has(0) { + value, err := DecodeInputPeer(b) + if err != nil { + return fmt.Errorf("unable to decode messages.translateText#24ce6dee: field peer: %w", err) + } + t.Peer = value + } + if t.Flags.Has(0) { + value, err := b.Int() + if err != nil { + return fmt.Errorf("unable to decode messages.translateText#24ce6dee: field msg_id: %w", err) + } + t.MsgID = value + } + if t.Flags.Has(1) { + value, err := b.String() + if err != nil { + return fmt.Errorf("unable to decode messages.translateText#24ce6dee: field text: %w", err) + } + t.Text = value + } + if t.Flags.Has(2) { + value, err := b.String() + if err != nil { + return fmt.Errorf("unable to decode messages.translateText#24ce6dee: field from_lang: %w", err) + } + t.FromLang = value + } + { + value, err := b.String() + if err != nil { + return fmt.Errorf("unable to decode messages.translateText#24ce6dee: field to_lang: %w", err) + } + t.ToLang = value + } + return nil +} + +// SetPeer sets value of Peer conditional field. +func (t *MessagesTranslateTextRequest) SetPeer(value InputPeerClass) { + t.Flags.Set(0) + t.Peer = value +} + +// GetPeer returns value of Peer conditional field and +// boolean which is true if field was set. +func (t *MessagesTranslateTextRequest) GetPeer() (value InputPeerClass, ok bool) { + if t == nil { + return + } + if !t.Flags.Has(0) { + return value, false + } + return t.Peer, true +} + +// SetMsgID sets value of MsgID conditional field. +func (t *MessagesTranslateTextRequest) SetMsgID(value int) { + t.Flags.Set(0) + t.MsgID = value +} + +// GetMsgID returns value of MsgID conditional field and +// boolean which is true if field was set. +func (t *MessagesTranslateTextRequest) GetMsgID() (value int, ok bool) { + if t == nil { + return + } + if !t.Flags.Has(0) { + return value, false + } + return t.MsgID, true +} + +// SetText sets value of Text conditional field. +func (t *MessagesTranslateTextRequest) SetText(value string) { + t.Flags.Set(1) + t.Text = value +} + +// GetText returns value of Text conditional field and +// boolean which is true if field was set. +func (t *MessagesTranslateTextRequest) GetText() (value string, ok bool) { + if t == nil { + return + } + if !t.Flags.Has(1) { + return value, false + } + return t.Text, true +} + +// SetFromLang sets value of FromLang conditional field. +func (t *MessagesTranslateTextRequest) SetFromLang(value string) { + t.Flags.Set(2) + t.FromLang = value +} + +// GetFromLang returns value of FromLang conditional field and +// boolean which is true if field was set. +func (t *MessagesTranslateTextRequest) GetFromLang() (value string, ok bool) { + if t == nil { + return + } + if !t.Flags.Has(2) { + return value, false + } + return t.FromLang, true +} + +// GetToLang returns value of ToLang field. +func (t *MessagesTranslateTextRequest) GetToLang() (value string) { + if t == nil { + return + } + return t.ToLang +} + +// MessagesTranslateText invokes method messages.translateText#24ce6dee returning error if any. +// +// See https://core.telegram.org/method/messages.translateText for reference. +func (c *Client) MessagesTranslateText(ctx context.Context, request *MessagesTranslateTextRequest) (MessagesTranslatedTextClass, error) { + var result MessagesTranslatedTextBox + + if err := c.rpc.Invoke(ctx, request, &result); err != nil { + return nil, err + } + return result.TranslatedText, nil +} diff --git a/tg/tl_messages_translate_text_slices_gen.go b/tg/tl_messages_translate_text_slices_gen.go new file mode 100644 index 0000000000..fe21471a4c --- /dev/null +++ b/tg/tl_messages_translate_text_slices_gen.go @@ -0,0 +1,35 @@ +//go:build !no_gotd_slices +// +build !no_gotd_slices + +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) diff --git a/tg/tl_messages_translated_text_gen.go b/tg/tl_messages_translated_text_gen.go new file mode 100644 index 0000000000..4451d747cf --- /dev/null +++ b/tg/tl_messages_translated_text_gen.go @@ -0,0 +1,355 @@ +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) + +// MessagesTranslateNoResult represents TL type `messages.translateNoResult#67ca4737`. +// +// See https://core.telegram.org/constructor/messages.translateNoResult for reference. +type MessagesTranslateNoResult struct { +} + +// MessagesTranslateNoResultTypeID is TL type id of MessagesTranslateNoResult. +const MessagesTranslateNoResultTypeID = 0x67ca4737 + +// construct implements constructor of MessagesTranslatedTextClass. +func (t MessagesTranslateNoResult) construct() MessagesTranslatedTextClass { return &t } + +// Ensuring interfaces in compile-time for MessagesTranslateNoResult. +var ( + _ bin.Encoder = &MessagesTranslateNoResult{} + _ bin.Decoder = &MessagesTranslateNoResult{} + _ bin.BareEncoder = &MessagesTranslateNoResult{} + _ bin.BareDecoder = &MessagesTranslateNoResult{} + + _ MessagesTranslatedTextClass = &MessagesTranslateNoResult{} +) + +func (t *MessagesTranslateNoResult) Zero() bool { + if t == nil { + return true + } + + return true +} + +// String implements fmt.Stringer. +func (t *MessagesTranslateNoResult) String() string { + if t == nil { + return "MessagesTranslateNoResult(nil)" + } + type Alias MessagesTranslateNoResult + return fmt.Sprintf("MessagesTranslateNoResult%+v", Alias(*t)) +} + +// TypeID returns type id in TL schema. +// +// See https://core.telegram.org/mtproto/TL-tl#remarks. +func (*MessagesTranslateNoResult) TypeID() uint32 { + return MessagesTranslateNoResultTypeID +} + +// TypeName returns name of type in TL schema. +func (*MessagesTranslateNoResult) TypeName() string { + return "messages.translateNoResult" +} + +// TypeInfo returns info about TL type. +func (t *MessagesTranslateNoResult) TypeInfo() tdp.Type { + typ := tdp.Type{ + Name: "messages.translateNoResult", + ID: MessagesTranslateNoResultTypeID, + } + if t == nil { + typ.Null = true + return typ + } + typ.Fields = []tdp.Field{} + return typ +} + +// Encode implements bin.Encoder. +func (t *MessagesTranslateNoResult) Encode(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't encode messages.translateNoResult#67ca4737 as nil") + } + b.PutID(MessagesTranslateNoResultTypeID) + return t.EncodeBare(b) +} + +// EncodeBare implements bin.BareEncoder. +func (t *MessagesTranslateNoResult) EncodeBare(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't encode messages.translateNoResult#67ca4737 as nil") + } + return nil +} + +// Decode implements bin.Decoder. +func (t *MessagesTranslateNoResult) Decode(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't decode messages.translateNoResult#67ca4737 to nil") + } + if err := b.ConsumeID(MessagesTranslateNoResultTypeID); err != nil { + return fmt.Errorf("unable to decode messages.translateNoResult#67ca4737: %w", err) + } + return t.DecodeBare(b) +} + +// DecodeBare implements bin.BareDecoder. +func (t *MessagesTranslateNoResult) DecodeBare(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't decode messages.translateNoResult#67ca4737 to nil") + } + return nil +} + +// MessagesTranslateResultText represents TL type `messages.translateResultText#a214f7d0`. +// +// See https://core.telegram.org/constructor/messages.translateResultText for reference. +type MessagesTranslateResultText struct { + // Text field of MessagesTranslateResultText. + Text string +} + +// MessagesTranslateResultTextTypeID is TL type id of MessagesTranslateResultText. +const MessagesTranslateResultTextTypeID = 0xa214f7d0 + +// construct implements constructor of MessagesTranslatedTextClass. +func (t MessagesTranslateResultText) construct() MessagesTranslatedTextClass { return &t } + +// Ensuring interfaces in compile-time for MessagesTranslateResultText. +var ( + _ bin.Encoder = &MessagesTranslateResultText{} + _ bin.Decoder = &MessagesTranslateResultText{} + _ bin.BareEncoder = &MessagesTranslateResultText{} + _ bin.BareDecoder = &MessagesTranslateResultText{} + + _ MessagesTranslatedTextClass = &MessagesTranslateResultText{} +) + +func (t *MessagesTranslateResultText) Zero() bool { + if t == nil { + return true + } + if !(t.Text == "") { + return false + } + + return true +} + +// String implements fmt.Stringer. +func (t *MessagesTranslateResultText) String() string { + if t == nil { + return "MessagesTranslateResultText(nil)" + } + type Alias MessagesTranslateResultText + return fmt.Sprintf("MessagesTranslateResultText%+v", Alias(*t)) +} + +// FillFrom fills MessagesTranslateResultText from given interface. +func (t *MessagesTranslateResultText) FillFrom(from interface { + GetText() (value string) +}) { + t.Text = from.GetText() +} + +// TypeID returns type id in TL schema. +// +// See https://core.telegram.org/mtproto/TL-tl#remarks. +func (*MessagesTranslateResultText) TypeID() uint32 { + return MessagesTranslateResultTextTypeID +} + +// TypeName returns name of type in TL schema. +func (*MessagesTranslateResultText) TypeName() string { + return "messages.translateResultText" +} + +// TypeInfo returns info about TL type. +func (t *MessagesTranslateResultText) TypeInfo() tdp.Type { + typ := tdp.Type{ + Name: "messages.translateResultText", + ID: MessagesTranslateResultTextTypeID, + } + if t == nil { + typ.Null = true + return typ + } + typ.Fields = []tdp.Field{ + { + Name: "Text", + SchemaName: "text", + }, + } + return typ +} + +// Encode implements bin.Encoder. +func (t *MessagesTranslateResultText) Encode(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't encode messages.translateResultText#a214f7d0 as nil") + } + b.PutID(MessagesTranslateResultTextTypeID) + return t.EncodeBare(b) +} + +// EncodeBare implements bin.BareEncoder. +func (t *MessagesTranslateResultText) EncodeBare(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't encode messages.translateResultText#a214f7d0 as nil") + } + b.PutString(t.Text) + return nil +} + +// Decode implements bin.Decoder. +func (t *MessagesTranslateResultText) Decode(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't decode messages.translateResultText#a214f7d0 to nil") + } + if err := b.ConsumeID(MessagesTranslateResultTextTypeID); err != nil { + return fmt.Errorf("unable to decode messages.translateResultText#a214f7d0: %w", err) + } + return t.DecodeBare(b) +} + +// DecodeBare implements bin.BareDecoder. +func (t *MessagesTranslateResultText) DecodeBare(b *bin.Buffer) error { + if t == nil { + return fmt.Errorf("can't decode messages.translateResultText#a214f7d0 to nil") + } + { + value, err := b.String() + if err != nil { + return fmt.Errorf("unable to decode messages.translateResultText#a214f7d0: field text: %w", err) + } + t.Text = value + } + return nil +} + +// GetText returns value of Text field. +func (t *MessagesTranslateResultText) GetText() (value string) { + if t == nil { + return + } + return t.Text +} + +// MessagesTranslatedTextClassName is schema name of MessagesTranslatedTextClass. +const MessagesTranslatedTextClassName = "messages.TranslatedText" + +// MessagesTranslatedTextClass represents messages.TranslatedText generic type. +// +// See https://core.telegram.org/type/messages.TranslatedText for reference. +// +// Example: +// g, err := tg.DecodeMessagesTranslatedText(buf) +// if err != nil { +// panic(err) +// } +// switch v := g.(type) { +// case *tg.MessagesTranslateNoResult: // messages.translateNoResult#67ca4737 +// case *tg.MessagesTranslateResultText: // messages.translateResultText#a214f7d0 +// default: panic(v) +// } +type MessagesTranslatedTextClass interface { + bin.Encoder + bin.Decoder + bin.BareEncoder + bin.BareDecoder + construct() MessagesTranslatedTextClass + + // TypeID returns type id in TL schema. + // + // See https://core.telegram.org/mtproto/TL-tl#remarks. + TypeID() uint32 + // TypeName returns name of type in TL schema. + TypeName() string + // String implements fmt.Stringer. + String() string + // Zero returns true if current object has a zero value. + Zero() bool +} + +// DecodeMessagesTranslatedText implements binary de-serialization for MessagesTranslatedTextClass. +func DecodeMessagesTranslatedText(buf *bin.Buffer) (MessagesTranslatedTextClass, error) { + id, err := buf.PeekID() + if err != nil { + return nil, err + } + switch id { + case MessagesTranslateNoResultTypeID: + // Decoding messages.translateNoResult#67ca4737. + v := MessagesTranslateNoResult{} + if err := v.Decode(buf); err != nil { + return nil, fmt.Errorf("unable to decode MessagesTranslatedTextClass: %w", err) + } + return &v, nil + case MessagesTranslateResultTextTypeID: + // Decoding messages.translateResultText#a214f7d0. + v := MessagesTranslateResultText{} + if err := v.Decode(buf); err != nil { + return nil, fmt.Errorf("unable to decode MessagesTranslatedTextClass: %w", err) + } + return &v, nil + default: + return nil, fmt.Errorf("unable to decode MessagesTranslatedTextClass: %w", bin.NewUnexpectedID(id)) + } +} + +// MessagesTranslatedText boxes the MessagesTranslatedTextClass providing a helper. +type MessagesTranslatedTextBox struct { + TranslatedText MessagesTranslatedTextClass +} + +// Decode implements bin.Decoder for MessagesTranslatedTextBox. +func (b *MessagesTranslatedTextBox) Decode(buf *bin.Buffer) error { + if b == nil { + return fmt.Errorf("unable to decode MessagesTranslatedTextBox to nil") + } + v, err := DecodeMessagesTranslatedText(buf) + if err != nil { + return fmt.Errorf("unable to decode boxed value: %w", err) + } + b.TranslatedText = v + return nil +} + +// Encode implements bin.Encode for MessagesTranslatedTextBox. +func (b *MessagesTranslatedTextBox) Encode(buf *bin.Buffer) error { + if b == nil || b.TranslatedText == nil { + return fmt.Errorf("unable to encode MessagesTranslatedTextClass as nil") + } + return b.TranslatedText.Encode(buf) +} diff --git a/tg/tl_messages_translated_text_slices_gen.go b/tg/tl_messages_translated_text_slices_gen.go new file mode 100644 index 0000000000..5e7328c95d --- /dev/null +++ b/tg/tl_messages_translated_text_slices_gen.go @@ -0,0 +1,212 @@ +//go:build !no_gotd_slices +// +build !no_gotd_slices + +// Code generated by gotdgen, DO NOT EDIT. + +package tg + +import ( + "context" + "errors" + "fmt" + "sort" + "strings" + + "go.uber.org/multierr" + + "github.com/gotd/td/bin" + "github.com/gotd/td/tdjson" + "github.com/gotd/td/tdp" + "github.com/gotd/td/tgerr" +) + +// No-op definition for keeping imports. +var ( + _ = bin.Buffer{} + _ = context.Background() + _ = fmt.Stringer(nil) + _ = strings.Builder{} + _ = errors.Is + _ = multierr.AppendInto + _ = sort.Ints + _ = tdp.Format + _ = tgerr.Error{} + _ = tdjson.Encoder{} +) + +// MessagesTranslatedTextClassArray is adapter for slice of MessagesTranslatedTextClass. +type MessagesTranslatedTextClassArray []MessagesTranslatedTextClass + +// Sort sorts slice of MessagesTranslatedTextClass. +func (s MessagesTranslatedTextClassArray) Sort(less func(a, b MessagesTranslatedTextClass) bool) MessagesTranslatedTextClassArray { + sort.Slice(s, func(i, j int) bool { + return less(s[i], s[j]) + }) + return s +} + +// SortStable sorts slice of MessagesTranslatedTextClass. +func (s MessagesTranslatedTextClassArray) SortStable(less func(a, b MessagesTranslatedTextClass) bool) MessagesTranslatedTextClassArray { + sort.SliceStable(s, func(i, j int) bool { + return less(s[i], s[j]) + }) + return s +} + +// Retain filters in-place slice of MessagesTranslatedTextClass. +func (s MessagesTranslatedTextClassArray) Retain(keep func(x MessagesTranslatedTextClass) bool) MessagesTranslatedTextClassArray { + n := 0 + for _, x := range s { + if keep(x) { + s[n] = x + n++ + } + } + s = s[:n] + + return s +} + +// First returns first element of slice (if exists). +func (s MessagesTranslatedTextClassArray) First() (v MessagesTranslatedTextClass, ok bool) { + if len(s) < 1 { + return + } + return s[0], true +} + +// Last returns last element of slice (if exists). +func (s MessagesTranslatedTextClassArray) Last() (v MessagesTranslatedTextClass, ok bool) { + if len(s) < 1 { + return + } + return s[len(s)-1], true +} + +// PopFirst returns first element of slice (if exists) and deletes it. +func (s *MessagesTranslatedTextClassArray) PopFirst() (v MessagesTranslatedTextClass, ok bool) { + if s == nil || len(*s) < 1 { + return + } + + a := *s + v = a[0] + + // Delete by index from SliceTricks. + copy(a[0:], a[1:]) + var zero MessagesTranslatedTextClass + a[len(a)-1] = zero + a = a[:len(a)-1] + *s = a + + return v, true +} + +// Pop returns last element of slice (if exists) and deletes it. +func (s *MessagesTranslatedTextClassArray) Pop() (v MessagesTranslatedTextClass, ok bool) { + if s == nil || len(*s) < 1 { + return + } + + a := *s + v = a[len(a)-1] + a = a[:len(a)-1] + *s = a + + return v, true +} + +// AsMessagesTranslateResultText returns copy with only MessagesTranslateResultText constructors. +func (s MessagesTranslatedTextClassArray) AsMessagesTranslateResultText() (to MessagesTranslateResultTextArray) { + for _, elem := range s { + value, ok := elem.(*MessagesTranslateResultText) + if !ok { + continue + } + to = append(to, *value) + } + + return to +} + +// MessagesTranslateResultTextArray is adapter for slice of MessagesTranslateResultText. +type MessagesTranslateResultTextArray []MessagesTranslateResultText + +// Sort sorts slice of MessagesTranslateResultText. +func (s MessagesTranslateResultTextArray) Sort(less func(a, b MessagesTranslateResultText) bool) MessagesTranslateResultTextArray { + sort.Slice(s, func(i, j int) bool { + return less(s[i], s[j]) + }) + return s +} + +// SortStable sorts slice of MessagesTranslateResultText. +func (s MessagesTranslateResultTextArray) SortStable(less func(a, b MessagesTranslateResultText) bool) MessagesTranslateResultTextArray { + sort.SliceStable(s, func(i, j int) bool { + return less(s[i], s[j]) + }) + return s +} + +// Retain filters in-place slice of MessagesTranslateResultText. +func (s MessagesTranslateResultTextArray) Retain(keep func(x MessagesTranslateResultText) bool) MessagesTranslateResultTextArray { + n := 0 + for _, x := range s { + if keep(x) { + s[n] = x + n++ + } + } + s = s[:n] + + return s +} + +// First returns first element of slice (if exists). +func (s MessagesTranslateResultTextArray) First() (v MessagesTranslateResultText, ok bool) { + if len(s) < 1 { + return + } + return s[0], true +} + +// Last returns last element of slice (if exists). +func (s MessagesTranslateResultTextArray) Last() (v MessagesTranslateResultText, ok bool) { + if len(s) < 1 { + return + } + return s[len(s)-1], true +} + +// PopFirst returns first element of slice (if exists) and deletes it. +func (s *MessagesTranslateResultTextArray) PopFirst() (v MessagesTranslateResultText, ok bool) { + if s == nil || len(*s) < 1 { + return + } + + a := *s + v = a[0] + + // Delete by index from SliceTricks. + copy(a[0:], a[1:]) + var zero MessagesTranslateResultText + a[len(a)-1] = zero + a = a[:len(a)-1] + *s = a + + return v, true +} + +// Pop returns last element of slice (if exists) and deletes it. +func (s *MessagesTranslateResultTextArray) Pop() (v MessagesTranslateResultText, ok bool) { + if s == nil || len(*s) < 1 { + return + } + + a := *s + v = a[len(a)-1] + a = a[:len(a)-1] + *s = a + + return v, true +} diff --git a/tg/tl_registry_gen.go b/tg/tl_registry_gen.go index a800f48750..d4a8f0fd0d 100644 --- a/tg/tl_registry_gen.go +++ b/tg/tl_registry_gen.go @@ -32,7 +32,7 @@ var ( ) // Layer version of schema. -const Layer = 137 +const Layer = 138 // TypesMap returns mapping from type ids to TL type names. func TypesMap() map[uint32]string { @@ -171,7 +171,7 @@ func TypesMap() map[uint32]string { MessageActionGroupCallScheduledTypeID: "messageActionGroupCallScheduled#b3a07661", MessageActionSetChatThemeTypeID: "messageActionSetChatTheme#aa786345", MessageActionChatJoinedByRequestTypeID: "messageActionChatJoinedByRequest#ebbca3cb", - DialogTypeID: "dialog#2c171f72", + DialogTypeID: "dialog#a8edd0f5", DialogFolderTypeID: "dialogFolder#71bd134c", PhotoEmptyTypeID: "photoEmpty#2331b22d", PhotoTypeID: "photo#fb197a65", @@ -982,12 +982,14 @@ func TypesMap() map[uint32]string { MessagesPeerSettingsTypeID: "messages.peerSettings#6880b94d", AuthLoggedOutTypeID: "auth.loggedOut#c3a2835f", ReactionCountTypeID: "reactionCount#6fb250d1", - MessageReactionsTypeID: "messageReactions#87b6e36", - MessageUserReactionTypeID: "messageUserReaction#932844fa", - MessagesMessageReactionsListTypeID: "messages.messageReactionsList#a366923c", + MessageReactionsTypeID: "messageReactions#4f2b9479", + MessagesMessageReactionsListTypeID: "messages.messageReactionsList#31bd492d", AvailableReactionTypeID: "availableReaction#c077ec01", MessagesAvailableReactionsNotModifiedTypeID: "messages.availableReactionsNotModified#9f071957", MessagesAvailableReactionsTypeID: "messages.availableReactions#768e3aad", + MessagesTranslateNoResultTypeID: "messages.translateNoResult#67ca4737", + MessagesTranslateResultTextTypeID: "messages.translateResultText#a214f7d0", + MessagePeerReactionTypeID: "messagePeerReaction#51b67eff", InvokeAfterMsgRequestTypeID: "invokeAfterMsg#cb9f372d", InvokeAfterMsgsRequestTypeID: "invokeAfterMsgs#3dc4b4f0", InitConnectionRequestTypeID: "initConnection#c1cd5ea9", @@ -1265,6 +1267,9 @@ func TypesMap() map[uint32]string { MessagesSetChatAvailableReactionsRequestTypeID: "messages.setChatAvailableReactions#14050ea6", MessagesGetAvailableReactionsRequestTypeID: "messages.getAvailableReactions#18dea0ac", MessagesSetDefaultReactionRequestTypeID: "messages.setDefaultReaction#d960c4d4", + MessagesTranslateTextRequestTypeID: "messages.translateText#24ce6dee", + MessagesGetUnreadReactionsRequestTypeID: "messages.getUnreadReactions#e85bae1a", + MessagesReadReactionsRequestTypeID: "messages.readReactions#82e251d7", UpdatesGetStateRequestTypeID: "updates.getState#edd4882a", UpdatesGetDifferenceRequestTypeID: "updates.getDifference#25939651", UpdatesGetChannelDifferenceRequestTypeID: "updates.getChannelDifference#3173d78", @@ -2365,11 +2370,13 @@ func NamesMap() map[string]uint32 { "auth.loggedOut": AuthLoggedOutTypeID, "reactionCount": ReactionCountTypeID, "messageReactions": MessageReactionsTypeID, - "messageUserReaction": MessageUserReactionTypeID, "messages.messageReactionsList": MessagesMessageReactionsListTypeID, "availableReaction": AvailableReactionTypeID, "messages.availableReactionsNotModified": MessagesAvailableReactionsNotModifiedTypeID, "messages.availableReactions": MessagesAvailableReactionsTypeID, + "messages.translateNoResult": MessagesTranslateNoResultTypeID, + "messages.translateResultText": MessagesTranslateResultTextTypeID, + "messagePeerReaction": MessagePeerReactionTypeID, "invokeAfterMsg": InvokeAfterMsgRequestTypeID, "invokeAfterMsgs": InvokeAfterMsgsRequestTypeID, "initConnection": InitConnectionRequestTypeID, @@ -2647,6 +2654,9 @@ func NamesMap() map[string]uint32 { "messages.setChatAvailableReactions": MessagesSetChatAvailableReactionsRequestTypeID, "messages.getAvailableReactions": MessagesGetAvailableReactionsRequestTypeID, "messages.setDefaultReaction": MessagesSetDefaultReactionRequestTypeID, + "messages.translateText": MessagesTranslateTextRequestTypeID, + "messages.getUnreadReactions": MessagesGetUnreadReactionsRequestTypeID, + "messages.readReactions": MessagesReadReactionsRequestTypeID, "updates.getState": UpdatesGetStateRequestTypeID, "updates.getDifference": UpdatesGetDifferenceRequestTypeID, "updates.getChannelDifference": UpdatesGetChannelDifferenceRequestTypeID, @@ -3747,11 +3757,13 @@ func TypesConstructorMap() map[uint32]func() bin.Object { AuthLoggedOutTypeID: func() bin.Object { return &AuthLoggedOut{} }, ReactionCountTypeID: func() bin.Object { return &ReactionCount{} }, MessageReactionsTypeID: func() bin.Object { return &MessageReactions{} }, - MessageUserReactionTypeID: func() bin.Object { return &MessageUserReaction{} }, MessagesMessageReactionsListTypeID: func() bin.Object { return &MessagesMessageReactionsList{} }, AvailableReactionTypeID: func() bin.Object { return &AvailableReaction{} }, MessagesAvailableReactionsNotModifiedTypeID: func() bin.Object { return &MessagesAvailableReactionsNotModified{} }, MessagesAvailableReactionsTypeID: func() bin.Object { return &MessagesAvailableReactions{} }, + MessagesTranslateNoResultTypeID: func() bin.Object { return &MessagesTranslateNoResult{} }, + MessagesTranslateResultTextTypeID: func() bin.Object { return &MessagesTranslateResultText{} }, + MessagePeerReactionTypeID: func() bin.Object { return &MessagePeerReaction{} }, InvokeAfterMsgRequestTypeID: func() bin.Object { return &InvokeAfterMsgRequest{} }, InvokeAfterMsgsRequestTypeID: func() bin.Object { return &InvokeAfterMsgsRequest{} }, InitConnectionRequestTypeID: func() bin.Object { return &InitConnectionRequest{} }, @@ -4029,6 +4041,9 @@ func TypesConstructorMap() map[uint32]func() bin.Object { MessagesSetChatAvailableReactionsRequestTypeID: func() bin.Object { return &MessagesSetChatAvailableReactionsRequest{} }, MessagesGetAvailableReactionsRequestTypeID: func() bin.Object { return &MessagesGetAvailableReactionsRequest{} }, MessagesSetDefaultReactionRequestTypeID: func() bin.Object { return &MessagesSetDefaultReactionRequest{} }, + MessagesTranslateTextRequestTypeID: func() bin.Object { return &MessagesTranslateTextRequest{} }, + MessagesGetUnreadReactionsRequestTypeID: func() bin.Object { return &MessagesGetUnreadReactionsRequest{} }, + MessagesReadReactionsRequestTypeID: func() bin.Object { return &MessagesReadReactionsRequest{} }, UpdatesGetStateRequestTypeID: func() bin.Object { return &UpdatesGetStateRequest{} }, UpdatesGetDifferenceRequestTypeID: func() bin.Object { return &UpdatesGetDifferenceRequest{} }, UpdatesGetChannelDifferenceRequestTypeID: func() bin.Object { return &UpdatesGetChannelDifferenceRequest{} }, @@ -4820,6 +4835,10 @@ func ClassConstructorsMap() map[string][]uint32 { MessagesStickersNotModifiedTypeID, MessagesStickersTypeID, }, + MessagesTranslatedTextClassName: { + MessagesTranslateNoResultTypeID, + MessagesTranslateResultTextTypeID, + }, NotifyPeerClassName: { NotifyPeerTypeID, NotifyUsersTypeID, diff --git a/tg/tl_server_gen.go b/tg/tl_server_gen.go index 2b1c926710..408c28374c 100644 --- a/tg/tl_server_gen.go +++ b/tg/tl_server_gen.go @@ -4991,6 +4991,57 @@ func (s *ServerDispatcher) OnMessagesSetDefaultReaction(f func(ctx context.Conte s.handlers[MessagesSetDefaultReactionRequestTypeID] = handler } +func (s *ServerDispatcher) OnMessagesTranslateText(f func(ctx context.Context, request *MessagesTranslateTextRequest) (MessagesTranslatedTextClass, error)) { + handler := func(ctx context.Context, b *bin.Buffer) (bin.Encoder, error) { + var request MessagesTranslateTextRequest + if err := request.Decode(b); err != nil { + return nil, err + } + + response, err := f(ctx, &request) + if err != nil { + return nil, err + } + return &MessagesTranslatedTextBox{TranslatedText: response}, nil + } + + s.handlers[MessagesTranslateTextRequestTypeID] = handler +} + +func (s *ServerDispatcher) OnMessagesGetUnreadReactions(f func(ctx context.Context, request *MessagesGetUnreadReactionsRequest) (MessagesMessagesClass, error)) { + handler := func(ctx context.Context, b *bin.Buffer) (bin.Encoder, error) { + var request MessagesGetUnreadReactionsRequest + if err := request.Decode(b); err != nil { + return nil, err + } + + response, err := f(ctx, &request) + if err != nil { + return nil, err + } + return &MessagesMessagesBox{Messages: response}, nil + } + + s.handlers[MessagesGetUnreadReactionsRequestTypeID] = handler +} + +func (s *ServerDispatcher) OnMessagesReadReactions(f func(ctx context.Context, peer InputPeerClass) (*MessagesAffectedHistory, error)) { + handler := func(ctx context.Context, b *bin.Buffer) (bin.Encoder, error) { + var request MessagesReadReactionsRequest + if err := request.Decode(b); err != nil { + return nil, err + } + + response, err := f(ctx, request.Peer) + if err != nil { + return nil, err + } + return response, nil + } + + s.handlers[MessagesReadReactionsRequestTypeID] = handler +} + func (s *ServerDispatcher) OnUpdatesGetState(f func(ctx context.Context) (*UpdatesState, error)) { handler := func(ctx context.Context, b *bin.Buffer) (bin.Encoder, error) { var request UpdatesGetStateRequest diff --git a/tg/tl_sticker_set_gen.go b/tg/tl_sticker_set_gen.go index 3381069765..1363661118 100644 --- a/tg/tl_sticker_set_gen.go +++ b/tg/tl_sticker_set_gen.go @@ -50,6 +50,8 @@ type StickerSet struct { Masks bool // Is this an animated stickerpack Animated bool + // Gifs field of StickerSet. + Gifs bool // When was this stickerset installed // // Use SetInstalledDate and GetInstalledDate helpers. @@ -110,6 +112,9 @@ func (s *StickerSet) Zero() bool { if !(s.Animated == false) { return false } + if !(s.Gifs == false) { + return false + } if !(s.InstalledDate == 0) { return false } @@ -159,6 +164,7 @@ func (s *StickerSet) FillFrom(from interface { GetOfficial() (value bool) GetMasks() (value bool) GetAnimated() (value bool) + GetGifs() (value bool) GetInstalledDate() (value int, ok bool) GetID() (value int64) GetAccessHash() (value int64) @@ -174,6 +180,7 @@ func (s *StickerSet) FillFrom(from interface { s.Official = from.GetOfficial() s.Masks = from.GetMasks() s.Animated = from.GetAnimated() + s.Gifs = from.GetGifs() if val, ok := from.GetInstalledDate(); ok { s.InstalledDate = val } @@ -241,6 +248,11 @@ func (s *StickerSet) TypeInfo() tdp.Type { SchemaName: "animated", Null: !s.Flags.Has(5), }, + { + Name: "Gifs", + SchemaName: "gifs", + Null: !s.Flags.Has(6), + }, { Name: "InstalledDate", SchemaName: "installed_date", @@ -303,6 +315,9 @@ func (s *StickerSet) SetFlags() { if !(s.Animated == false) { s.Flags.Set(5) } + if !(s.Gifs == false) { + s.Flags.Set(6) + } if !(s.InstalledDate == 0) { s.Flags.Set(0) } @@ -389,6 +404,7 @@ func (s *StickerSet) DecodeBare(b *bin.Buffer) error { s.Official = s.Flags.Has(2) s.Masks = s.Flags.Has(3) s.Animated = s.Flags.Has(5) + s.Gifs = s.Flags.Has(6) if s.Flags.Has(0) { value, err := b.Int() if err != nil { @@ -548,6 +564,25 @@ func (s *StickerSet) GetAnimated() (value bool) { return s.Flags.Has(5) } +// SetGifs sets value of Gifs conditional field. +func (s *StickerSet) SetGifs(value bool) { + if value { + s.Flags.Set(6) + s.Gifs = true + } else { + s.Flags.Unset(6) + s.Gifs = false + } +} + +// GetGifs returns value of Gifs conditional field. +func (s *StickerSet) GetGifs() (value bool) { + if s == nil { + return + } + return s.Flags.Has(6) +} + // SetInstalledDate sets value of InstalledDate conditional field. func (s *StickerSet) SetInstalledDate(value int) { s.Flags.Set(0)