From b0f336994bff885bf0ec0f2a24f1eda5caa0f9e9 Mon Sep 17 00:00:00 2001 From: Wizou <11647984+wiz0u@users.noreply.github.com> Date: Thu, 2 Jan 2025 00:35:34 +0100 Subject: [PATCH] API Layer 196: more starGifts methods, bot verification (see Bot API 8.2), conference calls, ... --- README.md | 2 +- src/TL.Schema.cs | 325 ++++++++++++++++++++++++++++++++----- src/TL.SchemaFuncs.cs | 108 ++++++++++-- src/TL.Table.cs | 60 ++++--- src/WTelegramClient.csproj | 2 +- 5 files changed, 414 insertions(+), 83 deletions(-) diff --git a/README.md b/README.md index bc6ba13..929be15 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![API Layer](https://img.shields.io/badge/API_Layer-195-blueviolet)](https://corefork.telegram.org/methods) +[![API Layer](https://img.shields.io/badge/API_Layer-196-blueviolet)](https://corefork.telegram.org/methods) [![NuGet version](https://img.shields.io/nuget/v/WTelegramClient?color=00508F)](https://www.nuget.org/packages/WTelegramClient/) [![NuGet prerelease](https://img.shields.io/nuget/vpre/WTelegramClient?color=C09030&label=dev+nuget)](https://www.nuget.org/packages/WTelegramClient/absoluteLatest) [![Donate](https://img.shields.io/badge/Help_this_project:-Donate-ff4444)](https://buymeacoffee.com/wizou) diff --git a/src/TL.Schema.cs b/src/TL.Schema.cs index aed4861..60b1d51 100644 --- a/src/TL.Schema.cs +++ b/src/TL.Schema.cs @@ -750,7 +750,7 @@ namespace TL public long id; } /// Indicates info about a certain user. See - [TLDef(0x83314FCA)] + [TLDef(0x4B46C37E)] public sealed partial class User : UserBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -793,6 +793,7 @@ namespace TL [IfFlag(41)] public PeerColor profile_color; /// Monthly Active Users (MAU) of this bot (may be absent for small bots). [IfFlag(44)] public int bot_active_users; + [IfFlag(46)] public long bot_verification_icon; [Flags] public enum Flags : uint { @@ -880,6 +881,8 @@ namespace TL has_bot_active_users = 0x1000, /// If set, this bot has configured a Main Mini App ». bot_has_main_app = 0x2000, + /// Field has a value + has_bot_verification_icon = 0x4000, } } @@ -1050,7 +1053,7 @@ namespace TL public override string Title => title; } /// Channel/supergroup info See - [TLDef(0xFE4478BD)] + [TLDef(0xE00998B7)] public sealed partial class Channel : ChatBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -1093,6 +1096,7 @@ namespace TL [IfFlag(42)] public int level; /// Expiration date of the Telegram Star subscription » the current user has bought to gain access to this channel. [IfFlag(43)] public DateTime subscription_until_date; + [IfFlag(45)] public long bot_verification_icon; [Flags] public enum Flags : uint { @@ -1174,6 +1178,8 @@ namespace TL has_subscription_until_date = 0x800, /// If set, messages sent by admins to this channel will link to the admin's profile (just like with groups). signature_profiles = 0x1000, + /// Field has a value + has_bot_verification_icon = 0x2000, } /// ID of the channel, see here » for more info @@ -1357,7 +1363,7 @@ namespace TL public override int ReactionsLimit => reactions_limit; } /// Full info about a channel, supergroup or gigagroup. See - [TLDef(0xBBAB348D)] + [TLDef(0x9FF3B858)] public sealed partial class ChannelFull : ChatFullBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -1446,6 +1452,7 @@ namespace TL [IfFlag(41)] public int boosts_unrestrict; /// Custom emoji stickerset associated to the current supergroup, set using Channels_SetEmojiStickers after reaching the appropriate boost level, see here » for more info. [IfFlag(42)] public StickerSet emojiset; + [IfFlag(49)] public BotVerification bot_verification; [Flags] public enum Flags : uint { @@ -1549,6 +1556,8 @@ namespace TL can_view_stars_revenue = 0x8000, /// If set, users may send paid Telegram Star reactions » to messages of this channel. paid_reactions_available = 0x10000, + /// Field has a value + has_bot_verification = 0x20000, } /// ID of the channel @@ -1698,6 +1707,8 @@ namespace TL public virtual MessageReplyHeaderBase ReplyTo => default; /// Date of the message public virtual DateTime Date => default; + /// Reactions to this message + public virtual MessageReactions Reactions => default; /// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well. public virtual int TtlPeriod => default; } @@ -1724,7 +1735,7 @@ namespace TL public override Peer Peer => peer_id; } /// A message See - [TLDef(0x94345242)] + [TLDef(0x96FDBBE9)] public sealed partial class Message : MessageBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -1783,6 +1794,7 @@ namespace TL [IfFlag(34)] public long effect; /// Represents a fact-check ». [IfFlag(35)] public FactCheck factcheck; + [IfFlag(37)] public DateTime report_delivery_until_date; [Flags] public enum Flags : uint { @@ -1858,6 +1870,8 @@ namespace TL has_factcheck = 0x8, /// The video contained in the message is currently being processed by the server (i.e. to generate alternative qualities, that will be contained in the final .alt_document), and will be sent once the video is processed, which will happen approximately at the specified date (i.e. messages with this flag set should be treated similarly to scheduled messages, but instead of the scheduled date, date contains the estimated conversion date).
See here » for more info.
video_processing_pending = 0x10, + /// Field has a value + has_report_delivery_until_date = 0x20, } /// ID of the message @@ -1870,11 +1884,13 @@ namespace TL public override MessageReplyHeaderBase ReplyTo => reply_to; /// Date of the message public override DateTime Date => date; + /// Reactions to this message + public override MessageReactions Reactions => reactions; /// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well. public override int TtlPeriod => ttl_period; } /// Indicates a service message See - [TLDef(0x2B085862)] + [TLDef(0xD3D28540)] public sealed partial class MessageService : MessageBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -1891,6 +1907,7 @@ namespace TL public DateTime date; /// Event connected with the service message public MessageAction action; + [IfFlag(20)] public MessageReactions reactions; /// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well. [IfFlag(25)] public int ttl_period; @@ -1906,12 +1923,15 @@ namespace TL media_unread = 0x20, /// Field has a value has_from_id = 0x100, + reactions_are_possible = 0x200, /// Whether the message is silent silent = 0x2000, /// Whether it's a channel post post = 0x4000, /// This is a legacy message: it has to be refetched with the new layer legacy = 0x80000, + /// Field has a value + has_reactions = 0x100000, /// Field has a value has_ttl_period = 0x2000000, } @@ -1926,6 +1946,7 @@ namespace TL public override MessageReplyHeaderBase ReplyTo => reply_to; /// Message date public override DateTime Date => date; + public override MessageReactions Reactions => reactions; /// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well. public override int TtlPeriod => ttl_period; } @@ -2821,17 +2842,19 @@ namespace TL } } /// You received a gift, see here » for more info. See - [TLDef(0x08557637)] + [TLDef(0xD8F4F0A7)] public sealed partial class MessageActionStarGift : MessageAction { /// Extra bits of information, use flags.HasFlag(...) to test for those public Flags flags; /// Info about the gift - public StarGift gift; + public StarGiftBase gift; /// Additional message from the sender of the gift [IfFlag(1)] public TextWithEntities message; /// The receiver of this gift may convert it to this many Telegram Stars, instead of displaying it on their profile page.
convert_stars will be equal to stars only if the gift was bought using recently bought Telegram Stars, otherwise it will be less than stars.
[IfFlag(4)] public long convert_stars; + [IfFlag(5)] public int upgrade_msg_id; + [IfFlag(8)] public long upgrade_stars; [Flags] public enum Flags : uint { @@ -2845,6 +2868,30 @@ namespace TL converted = 0x8, /// Field has a value has_convert_stars = 0x10, + upgraded = 0x20, + /// Field has a value + has_upgrade_stars = 0x100, + refunded = 0x200, + can_upgrade = 0x400, + } + } + ///
See + [TLDef(0x26077B99)] + public sealed partial class MessageActionStarGiftUnique : MessageAction + { + public Flags flags; + public StarGiftBase gift; + [IfFlag(3)] public int can_export_at; + [IfFlag(4)] public long transfer_stars; + + [Flags] public enum Flags : uint + { + upgrade = 0x1, + transferred = 0x2, + saved = 0x4, + has_can_export_at = 0x8, + has_transfer_stars = 0x10, + refunded = 0x20, } } @@ -3451,7 +3498,7 @@ namespace TL } /// Extended user info See - [TLDef(0x979D2376)] + [TLDef(0x4D975BBC)] public sealed partial class UserFull : IObject { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -3516,6 +3563,7 @@ namespace TL [IfFlag(40)] public int stargifts_count; /// This bot has an active referral program » [IfFlag(43)] public StarRefProgram starref_program; + [IfFlag(44)] public BotVerification bot_verification; [Flags] public enum Flags : uint { @@ -3603,6 +3651,8 @@ namespace TL bot_can_manage_emoji_status = 0x400, /// Field has a value has_starref_program = 0x800, + /// Field has a value + has_bot_verification = 0x1000, } } @@ -4991,13 +5041,20 @@ namespace TL public int version; } /// A new groupcall was started See - [TLDef(0x14B24500)] + [TLDef(0x97D64341)] public sealed partial class UpdateGroupCall : Update { + public Flags flags; /// The channel/supergroup where this group call or livestream takes place - public long chat_id; + [IfFlag(0)] public long chat_id; /// Info about the group call or livestream public GroupCallBase call; + + [Flags] public enum Flags : uint + { + /// Field has a value + has_chat_id = 0x1, + } } /// The Time-To-Live for messages sent by the current user in a specific chat has changed See [TLDef(0xBB9BB9A5)] @@ -7528,7 +7585,7 @@ namespace TL public ChatBase chat; } /// Chat invite info See - [TLDef(0xFE65389D)] + [TLDef(0x5C9D3702)] public sealed partial class ChatInvite : ChatInviteBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -7549,6 +7606,7 @@ namespace TL [IfFlag(10)] public StarsSubscriptionPricing subscription_pricing; /// For Telegram Star subscriptions », the ID of the payment form for the subscription. [IfFlag(12)] public long subscription_form_id; + [IfFlag(13)] public BotVerification bot_verification; [Flags] public enum Flags : uint { @@ -7578,6 +7636,8 @@ namespace TL can_refulfill_subscription = 0x800, /// Field has a value has_subscription_form_id = 0x1000, + /// Field has a value + has_bot_verification = 0x2000, } } /// A chat invitation that also allows peeking into the group to read messages without joining it. See @@ -7718,7 +7778,7 @@ namespace TL } /// Info about bots (available bot commands, etc) See - [TLDef(0x36607333)] + [TLDef(0x4D8A0299)] public sealed partial class BotInfo : IObject { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -7739,6 +7799,7 @@ namespace TL [IfFlag(7)] public string privacy_policy_url; /// Mini app » settings
[IfFlag(8)] public BotAppSettings app_settings; + [IfFlag(9)] public BotVerifierSettings verifier_settings; [Flags] public enum Flags : uint { @@ -7760,6 +7821,8 @@ namespace TL has_privacy_policy_url = 0x80, /// Field has a value has_app_settings = 0x100, + /// Field has a value + has_verifier_settings = 0x200, } } @@ -10351,17 +10414,25 @@ namespace TL public PageCaption caption; } - /// Why was the phone call discarded? See - public enum PhoneCallDiscardReason : uint + /// Why was the phone call discarded? See Derived classes: , , , + public abstract partial class PhoneCallDiscardReason : IObject { } + /// The phone call was missed See + [TLDef(0x85E42301)] + public sealed partial class PhoneCallDiscardReasonMissed : PhoneCallDiscardReason { } + /// The phone call was disconnected See + [TLDef(0xE095C1A0)] + public sealed partial class PhoneCallDiscardReasonDisconnect : PhoneCallDiscardReason { } + /// The phone call was ended normally See + [TLDef(0x57ADC690)] + public sealed partial class PhoneCallDiscardReasonHangup : PhoneCallDiscardReason { } + /// The phone call was discarded because the user is busy in another call See + [TLDef(0xFAF7E8C9)] + public sealed partial class PhoneCallDiscardReasonBusy : PhoneCallDiscardReason { } + /// See + [TLDef(0xAFE2B839)] + public sealed partial class PhoneCallDiscardReasonAllowGroupCall : PhoneCallDiscardReason { - ///The phone call was missed - Missed = 0x85E42301, - ///The phone call was disconnected - Disconnect = 0xE095C1A0, - ///The phone call was ended normally - Hangup = 0x57ADC690, - ///The phone call was discarded because the user is busy in another call - Busy = 0xFAF7E8C9, + public byte[] encrypted_key; } /// Represents a json-encoded object See @@ -11060,6 +11131,7 @@ namespace TL public virtual long ParticipantId => default; /// Phone call protocol info public virtual PhoneCallProtocol Protocol => default; + public virtual InputGroupCall ConferenceCall => default; } /// Empty constructor See [TLDef(0x5366C915)] @@ -11072,7 +11144,7 @@ namespace TL public override long ID => id; } /// Incoming phone call See - [TLDef(0xC5226F17)] + [TLDef(0xEED42858)] public sealed partial class PhoneCallWaiting : PhoneCallBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -11091,6 +11163,7 @@ namespace TL public PhoneCallProtocol protocol; /// When was the phone call received [IfFlag(0)] public DateTime receive_date; + [IfFlag(8)] public InputGroupCall conference_call; [Flags] public enum Flags : uint { @@ -11098,6 +11171,8 @@ namespace TL has_receive_date = 0x1, /// Is this a video call video = 0x40, + /// Field has a value + has_conference_call = 0x100, } /// Call ID @@ -11112,9 +11187,10 @@ namespace TL public override long ParticipantId => participant_id; /// Phone call protocol info public override PhoneCallProtocol Protocol => protocol; + public override InputGroupCall ConferenceCall => conference_call; } /// Requested phone call See - [TLDef(0x14B0ED0C)] + [TLDef(0x45361C63)] public sealed partial class PhoneCallRequested : PhoneCallBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -11133,11 +11209,14 @@ namespace TL public byte[] g_a_hash; /// Call protocol info to be passed to libtgvoip public PhoneCallProtocol protocol; + [IfFlag(8)] public InputGroupCall conference_call; [Flags] public enum Flags : uint { /// Whether this is a video call video = 0x40, + /// Field has a value + has_conference_call = 0x100, } /// Phone call ID @@ -11152,9 +11231,10 @@ namespace TL public override long ParticipantId => participant_id; /// Call protocol info to be passed to libtgvoip public override PhoneCallProtocol Protocol => protocol; + public override InputGroupCall ConferenceCall => conference_call; } /// An accepted phone call See - [TLDef(0x3660C311)] + [TLDef(0x22FD7181)] public sealed partial class PhoneCallAccepted : PhoneCallBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -11173,11 +11253,14 @@ namespace TL public byte[] g_b; /// Protocol to use for phone call public PhoneCallProtocol protocol; + [IfFlag(8)] public InputGroupCall conference_call; [Flags] public enum Flags : uint { /// Whether this is a video call video = 0x40, + /// Field has a value + has_conference_call = 0x100, } /// ID of accepted phone call @@ -11192,9 +11275,10 @@ namespace TL public override long ParticipantId => participant_id; /// Protocol to use for phone call public override PhoneCallProtocol Protocol => protocol; + public override InputGroupCall ConferenceCall => conference_call; } /// Phone call See - [TLDef(0x30535AF5)] + [TLDef(0x3BA5940C)] public sealed partial class PhoneCall : PhoneCallBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -11221,6 +11305,7 @@ namespace TL public DateTime start_date; /// Custom JSON-encoded call parameters to be passed to tgcalls. [IfFlag(7)] public DataJSON custom_parameters; + [IfFlag(8)] public InputGroupCall conference_call; [Flags] public enum Flags : uint { @@ -11230,6 +11315,8 @@ namespace TL video = 0x40, /// Field has a value has_custom_parameters = 0x80, + /// Field has a value + has_conference_call = 0x100, } /// Call ID @@ -11244,9 +11331,10 @@ namespace TL public override long ParticipantId => participant_id; /// Call protocol info to be passed to libtgvoip public override PhoneCallProtocol Protocol => protocol; + public override InputGroupCall ConferenceCall => conference_call; } /// Indicates a discarded phone call See - [TLDef(0x50CA4DE1)] + [TLDef(0xF9D25503)] public sealed partial class PhoneCallDiscarded : PhoneCallBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -11257,6 +11345,7 @@ namespace TL [IfFlag(0)] public PhoneCallDiscardReason reason; /// Duration of the phone call in seconds [IfFlag(1)] public int duration; + [IfFlag(8)] public InputGroupCall conference_call; [Flags] public enum Flags : uint { @@ -11270,10 +11359,13 @@ namespace TL need_debug = 0x8, /// Whether the call was a video call video = 0x40, + /// Field has a value + has_conference_call = 0x100, } /// Call ID public override long ID => id; + public override InputGroupCall ConferenceCall => conference_call; } /// Phone call connection See Derived classes: , @@ -13914,7 +14006,7 @@ namespace TL /// Folder ID public virtual int ID => default; /// Folder name (max 12 UTF-8 chars) - public virtual string Title => default; + public virtual TextWithEntities Title => default; /// Emoji to use as icon for the folder. public virtual string Emoticon => default; /// A color ID for the folder tag associated to this folder, see here » for more info. @@ -13925,7 +14017,7 @@ namespace TL public virtual InputPeer[] IncludePeers => default; } /// Dialog filter AKA folder See - [TLDef(0x5FB5523B)] + [TLDef(0xAA472651)] public sealed partial class DialogFilter : DialogFilterBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -13933,7 +14025,7 @@ namespace TL /// Folder ID public int id; /// Folder name (max 12 UTF-8 chars) - public string title; + public TextWithEntities title; /// Emoji to use as icon for the folder. [IfFlag(25)] public string emoticon; /// A color ID for the folder tag associated to this folder, see here » for more info. @@ -13967,12 +14059,13 @@ namespace TL has_emoticon = 0x2000000, /// Field has a value has_color = 0x8000000, + title_noanimate = 0x10000000, } /// Folder ID public override int ID => id; /// Folder name (max 12 UTF-8 chars) - public override string Title => title; + public override TextWithEntities Title => title; /// Emoji to use as icon for the folder. public override string Emoticon => emoticon; /// A color ID for the folder tag associated to this folder, see here » for more info. @@ -13983,7 +14076,7 @@ namespace TL public override InputPeer[] IncludePeers => include_peers; } /// A folder imported using a chat folder deep link ». See - [TLDef(0x9FE28EA4)] + [TLDef(0x96537BD7)] public sealed partial class DialogFilterChatlist : DialogFilterBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -13991,7 +14084,7 @@ namespace TL /// ID of the folder public int id; /// Name of the folder (max 12 UTF-8 chars) - public string title; + public TextWithEntities title; /// Emoji to use as icon for the folder. [IfFlag(25)] public string emoticon; /// A color ID for the folder tag associated to this folder, see here » for more info. @@ -14009,12 +14102,13 @@ namespace TL has_my_invites = 0x4000000, /// Field has a value has_color = 0x8000000, + title_noanimate = 0x10000000, } /// ID of the folder public override int ID => id; /// Name of the folder (max 12 UTF-8 chars) - public override string Title => title; + public override TextWithEntities Title => title; /// Emoji to use as icon for the folder. public override string Emoticon => emoticon; /// A color ID for the folder tag associated to this folder, see here » for more info. @@ -14601,7 +14695,7 @@ namespace TL public override long AccessHash => access_hash; } /// Info about a group call or livestream See - [TLDef(0xD597650C)] + [TLDef(0xCDF8D3E3)] public sealed partial class GroupCall : GroupCallBase { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -14626,6 +14720,7 @@ namespace TL public int unmuted_video_limit; /// Version public int version; + [IfFlag(14)] public long conference_from_call; [Flags] public enum Flags : uint { @@ -14655,6 +14750,8 @@ namespace TL rtmp_stream = 0x1000, /// Whether the listeners list is hidden and cannot be fetched using Phone_GetGroupParticipants. The phone.groupParticipants.count and groupCall.participants_count counters will still include listeners. listeners_hidden = 0x2000, + /// Field has a value + has_conference_from_call = 0x4000, } /// Group call ID @@ -15700,8 +15797,28 @@ namespace TL hide_name = 0x1, /// Field has a value has_message = 0x2, + include_upgrade = 0x4, } } + /// See + [TLDef(0x5EBE7262)] + public sealed partial class InputInvoiceStarGiftUpgrade : InputInvoice + { + public Flags flags; + public int msg_id; + + [Flags] public enum Flags : uint + { + keep_original_details = 0x1, + } + } + /// See + [TLDef(0xAE3BA9ED)] + public sealed partial class InputInvoiceStarGiftTransfer : InputInvoice + { + public int msg_id; + public InputUserBase to_id; + } /// Exported invoice deep link See [TLDef(0xAED0CBD9)] @@ -16713,13 +16830,13 @@ namespace TL public IPeerInfo UserOrChat(Peer peer) => peer?.UserOrChat(users, chats); } /// Info about a chat folder deep link ». See - [TLDef(0x1DCD839D)] + [TLDef(0xF10ECE2F)] public sealed partial class Chatlists_ChatlistInvite : Chatlists_ChatlistInviteBase, IPeerResolver { /// Extra bits of information, use flags.HasFlag(...) to test for those public Flags flags; /// Name of the link - public string title; + public TextWithEntities title; /// Emoji to use as icon for the folder. [IfFlag(0)] public string emoticon; /// Supergroups and channels to join @@ -16733,6 +16850,7 @@ namespace TL { /// Field has a value has_emoticon = 0x1, + title_noanimate = 0x2, } /// Related chat information @@ -19166,7 +19284,7 @@ namespace TL /// ID of the message containing the , for incoming star giveaway prizes. [IfFlag(13)] public int giveaway_post_id; /// This transaction indicates a purchase or a sale (conversion back to Stars) of a gift ». - [IfFlag(14)] public StarGift stargift; + [IfFlag(14)] public StarGiftBase stargift; /// This transaction is payment for paid bot broadcasts.
Paid broadcasts are only allowed if the allow_paid_floodskip parameter of Messages_SendMessage and other message sending methods is set while trying to broadcast more than 30 messages per second to bot users.
The integer value returned by this flag indicates the number of billed API calls.
[IfFlag(15)] public int floodskip_number; /// This transaction is the receival (or refund) of an affiliate commission (i.e. this is the transaction received by the peer that created the referral link, flag 17 is for transactions made by users that imported the referral link). @@ -19214,6 +19332,7 @@ namespace TL has_starref_commission_permille = 0x10000, /// Fields and have a value has_starref_peer = 0x20000, + stargift_upgrade = 0x40000, } } @@ -19575,9 +19694,17 @@ namespace TL } } + /// Represents a star gift, see here » for more info. See Derived classes: + public abstract partial class StarGiftBase : IObject + { + /// Identifier of the gift + public virtual long ID => default; + /// For limited-supply gifts: the total number of gifts that was available in the initial supply. + public virtual int AvailabilityTotal => default; + } /// Represents a star gift, see here » for more info. See - [TLDef(0x49C577CD)] - public sealed partial class StarGift : IObject + [TLDef(0x02CC73C8)] + public sealed partial class StarGift : StarGiftBase { /// Extra bits of information, use flags.HasFlag(...) to test for those public Flags flags; @@ -19597,6 +19724,7 @@ namespace TL [IfFlag(1)] public DateTime first_sale_date; /// For sold out gifts only: when was the gift last bought. [IfFlag(1)] public DateTime last_sale_date; + [IfFlag(3)] public long upgrade_stars; [Flags] public enum Flags : uint { @@ -19606,7 +19734,29 @@ namespace TL sold_out = 0x2, /// Whether this is a birthday-themed gift birthday = 0x4, + /// Field has a value + has_upgrade_stars = 0x8, } + + /// Identifier of the gift + public override long ID => id; + /// For limited-supply gifts: the total number of gifts that was available in the initial supply. + public override int AvailabilityTotal => availability_total; + } + /// See + [TLDef(0x6A1407CD)] + public sealed partial class StarGiftUnique : StarGiftBase + { + public long id; + public string title; + public int num; + public long owner_id; + public StarGiftAttribute[] attributes; + public int availability_issued; + public int availability_total; + + public override long ID => id; + public override int AvailabilityTotal => availability_total; } /// Available gifts ». See @@ -19617,11 +19767,11 @@ namespace TL /// Hash used for caching, for more info click here public int hash; /// List of available gifts. - public StarGift[] gifts; + public StarGiftBase[] gifts; } /// Represents a gift, displayed on a user's profile page. See - [TLDef(0xEEA49A6E)] + [TLDef(0x325835E1)] public sealed partial class UserStarGift : IObject { /// Extra bits of information, use flags.HasFlag(...) to test for those @@ -19631,13 +19781,16 @@ namespace TL /// When was this gift sent. public DateTime date; /// The gift. - public StarGift gift; + public StarGiftBase gift; /// Message attached to the gift by the sender. [IfFlag(2)] public TextWithEntities message; /// Only visible to the receiver of the gift, contains the ID of the with the in the chat with from_id. [IfFlag(3)] public int msg_id; /// The receiver of this gift may convert it to this many Telegram Stars, instead of displaying it on their profile page.
convert_stars will be equal to the buying price of the gift only if the gift was bought using recently bought Telegram Stars, otherwise it will be less than stars.
[IfFlag(4)] public long convert_stars; + [IfFlag(6)] public long upgrade_stars; + [IfFlag(7)] public int can_export_at; + [IfFlag(8)] public long transfer_stars; [Flags] public enum Flags : uint { @@ -19653,6 +19806,14 @@ namespace TL has_convert_stars = 0x10, /// If set, indicates this is a gift sent by from_id, received by the current user and currently hidden from our profile page. unsaved = 0x20, + /// Field has a value + has_upgrade_stars = 0x40, + /// Field has a value + has_can_export_at = 0x80, + /// Field has a value + has_transfer_stars = 0x100, + refunded = 0x200, + can_upgrade = 0x400, } } @@ -19914,4 +20075,82 @@ namespace TL has_next_offset = 0x1, } } + + ///
See + [TLDef(0xB0CD6617)] + public sealed partial class BotVerifierSettings : IObject + { + public Flags flags; + public long icon; + public string company; + [IfFlag(0)] public string custom_description; + + [Flags] public enum Flags : uint + { + has_custom_description = 0x1, + can_modify_custom_description = 0x2, + } + } + + /// See + [TLDef(0xF93CD45C)] + public sealed partial class BotVerification : IObject + { + public long bot_id; + public long icon; + public string description; + } + + /// See + public abstract partial class StarGiftAttribute : IObject { } + /// See + [TLDef(0x39D99013)] + public sealed partial class StarGiftAttributeModel : StarGiftAttribute + { + public string name; + public DocumentBase document; + public int rarity_permille; + } + /// See + [TLDef(0x13ACFF19)] + public sealed partial class StarGiftAttributePattern : StarGiftAttribute + { + public string name; + public DocumentBase document; + public int rarity_permille; + } + /// See + [TLDef(0x94271762)] + public sealed partial class StarGiftAttributeBackdrop : StarGiftAttribute + { + public string name; + public int center_color; + public int edge_color; + public int pattern_color; + public int text_color; + public int rarity_permille; + } + /// See + [TLDef(0xC02C4F4B)] + public sealed partial class StarGiftAttributeOriginalDetails : StarGiftAttribute + { + public Flags flags; + [IfFlag(0)] public long sender_id; + public long recipient_id; + public DateTime date; + [IfFlag(1)] public TextWithEntities message; + + [Flags] public enum Flags : uint + { + has_sender_id = 0x1, + has_message = 0x2, + } + } + + /// See + [TLDef(0x167BD90B)] + public sealed partial class Payments_StarGiftUpgradePreview : IObject + { + public StarGiftAttribute[] sample_attributes; + } } diff --git a/src/TL.SchemaFuncs.cs b/src/TL.SchemaFuncs.cs index 321e06c..ad52cc5 100644 --- a/src/TL.SchemaFuncs.cs +++ b/src/TL.SchemaFuncs.cs @@ -6147,23 +6147,19 @@ namespace TL /// Display or remove a received gift » from our profile. See Possible codes: 400 (details) /// If set, hides the gift from our profile. - /// ID of the user that sent us the gift. /// The ID of the with the . - public static Task Payments_SaveStarGift(this Client client, InputUserBase user_id, int msg_id, bool unsave = false) + public static Task Payments_SaveStarGift(this Client client, int msg_id, bool unsave = false) => client.Invoke(new Payments_SaveStarGift { flags = (Payments_SaveStarGift.Flags)(unsave ? 0x1 : 0), - user_id = user_id, msg_id = msg_id, }); /// Convert a received gift » into Telegram Stars: this will permanently destroy the gift, converting it into .convert_stars Telegram Stars, added to the user's balance. See Possible codes: 400 (details) - /// ID of the user that sent us the gift. /// The ID of the with the . - public static Task Payments_ConvertStarGift(this Client client, InputUserBase user_id, int msg_id) + public static Task Payments_ConvertStarGift(this Client client, int msg_id) => client.Invoke(new Payments_ConvertStarGift { - user_id = user_id, msg_id = msg_id, }); @@ -6241,6 +6237,36 @@ namespace TL link = link, }); + /// See + public static Task Payments_GetStarGiftUpgradePreview(this Client client, long gift_id) + => client.Invoke(new Payments_GetStarGiftUpgradePreview + { + gift_id = gift_id, + }); + + /// See + public static Task Payments_UpgradeStarGift(this Client client, int msg_id, bool keep_original_details = false) + => client.Invoke(new Payments_UpgradeStarGift + { + flags = (Payments_UpgradeStarGift.Flags)(keep_original_details ? 0x1 : 0), + msg_id = msg_id, + }); + + /// See + public static Task Payments_TransferStarGift(this Client client, int msg_id, InputUserBase to_id) + => client.Invoke(new Payments_TransferStarGift + { + msg_id = msg_id, + to_id = to_id, + }); + + /// See + public static Task Payments_GetUserStarGift(this Client client, params int[] msg_id) + => client.Invoke(new Payments_GetUserStarGift + { + msg_id = msg_id, + }); + /// Create a stickerset. See [bots: ✓] Possible codes: 400 (details) /// Whether this is a mask stickerset /// Whether this is a custom emoji stickerset. @@ -6383,11 +6409,12 @@ namespace TL /// Random ID to avoid resending the same object /// Parameter for E2E encryption key exchange » /// Phone call settings - public static Task Phone_RequestCall(this Client client, InputUserBase user_id, int random_id, byte[] g_a_hash, PhoneCallProtocol protocol, bool video = false) + public static Task Phone_RequestCall(this Client client, InputUserBase user_id, int random_id, byte[] g_a_hash, PhoneCallProtocol protocol, InputGroupCall conference_call = null, bool video = false) => client.Invoke(new Phone_RequestCall { - flags = (Phone_RequestCall.Flags)(video ? 0x1 : 0), + flags = (Phone_RequestCall.Flags)((conference_call != null ? 0x2 : 0) | (video ? 0x1 : 0)), user_id = user_id, + conference_call = conference_call, random_id = random_id, g_a_hash = g_a_hash, protocol = protocol, @@ -6500,13 +6527,14 @@ namespace TL /// Join the group call, presenting yourself as the specified user/channel /// The invitation hash from the invite link », if provided allows speaking in a livestream or muted group chat. /// WebRTC parameters - public static Task Phone_JoinGroupCall(this Client client, InputGroupCall call, InputPeer join_as, DataJSON params_, string invite_hash = null, bool muted = false, bool video_stopped = false) + public static Task Phone_JoinGroupCall(this Client client, InputGroupCall call, InputPeer join_as, DataJSON params_, string invite_hash = null, long? key_fingerprint = null, bool muted = false, bool video_stopped = false) => client.Invoke(new Phone_JoinGroupCall { - flags = (Phone_JoinGroupCall.Flags)((invite_hash != null ? 0x2 : 0) | (muted ? 0x1 : 0) | (video_stopped ? 0x4 : 0)), + flags = (Phone_JoinGroupCall.Flags)((invite_hash != null ? 0x2 : 0) | (key_fingerprint != null ? 0x8 : 0) | (muted ? 0x1 : 0) | (video_stopped ? 0x4 : 0)), call = call, join_as = join_as, invite_hash = invite_hash, + key_fingerprint = key_fingerprint ?? default, params_ = params_, }); @@ -6726,6 +6754,14 @@ namespace TL file = file, }); + /// See + public static Task Phone_CreateConferenceCall(this Client client, InputPhoneCall peer, long key_fingerprint) + => client.Invoke(new Phone_CreateConferenceCall + { + peer = peer, + key_fingerprint = key_fingerprint, + }); + /// Get localization pack strings See Possible codes: 400 (details) /// Platform identifier (i.e. android, tdesktop, etc). /// Either an ISO 639-1 language code or a language pack name obtained from a language pack link. @@ -12461,11 +12497,10 @@ namespace TL.Methods public int limit; } - [TLDef(0x87ACF08E)] + [TLDef(0x92FD2AAE)] public sealed partial class Payments_SaveStarGift : IMethod { public Flags flags; - public InputUserBase user_id; public int msg_id; [Flags] public enum Flags : uint @@ -12474,10 +12509,9 @@ namespace TL.Methods } } - [TLDef(0x0421E027)] + [TLDef(0x72770C83)] public sealed partial class Payments_ConvertStarGift : IMethod { - public InputUserBase user_id; public int msg_id; } @@ -12551,6 +12585,37 @@ namespace TL.Methods } } + [TLDef(0x9C9ABCB1)] + public sealed partial class Payments_GetStarGiftUpgradePreview : IMethod + { + public long gift_id; + } + + [TLDef(0xCF4F0781)] + public sealed partial class Payments_UpgradeStarGift : IMethod + { + public Flags flags; + public int msg_id; + + [Flags] public enum Flags : uint + { + keep_original_details = 0x1, + } + } + + [TLDef(0x333FB526)] + public sealed partial class Payments_TransferStarGift : IMethod + { + public int msg_id; + public InputUserBase to_id; + } + + [TLDef(0xB502E4A5)] + public sealed partial class Payments_GetUserStarGift : IMethod + { + public int[] msg_id; + } + [TLDef(0x9021AB67)] public sealed partial class Stickers_CreateStickerSet : IMethod { @@ -12659,11 +12724,12 @@ namespace TL.Methods [TLDef(0x55451FA9)] public sealed partial class Phone_GetCallConfig : IMethod { } - [TLDef(0x42FF96ED)] + [TLDef(0xA6C4600C)] public sealed partial class Phone_RequestCall : IMethod { public Flags flags; public InputUserBase user_id; + [IfFlag(1)] public InputGroupCall conference_call; public int random_id; public byte[] g_a_hash; public PhoneCallProtocol protocol; @@ -12671,6 +12737,7 @@ namespace TL.Methods [Flags] public enum Flags : uint { video = 0x1, + has_conference_call = 0x2, } } @@ -12757,13 +12824,14 @@ namespace TL.Methods } } - [TLDef(0xB132FF7B)] + [TLDef(0xD61E1DF3)] public sealed partial class Phone_JoinGroupCall : IMethod { public Flags flags; public InputGroupCall call; public InputPeer join_as; [IfFlag(1)] public string invite_hash; + [IfFlag(3)] public long key_fingerprint; public DataJSON params_; [Flags] public enum Flags : uint @@ -12771,6 +12839,7 @@ namespace TL.Methods muted = 0x1, has_invite_hash = 0x2, video_stopped = 0x4, + has_key_fingerprint = 0x8, } } @@ -12950,6 +13019,13 @@ namespace TL.Methods public InputFileBase file; } + [TLDef(0xDFC909AB)] + public sealed partial class Phone_CreateConferenceCall : IMethod + { + public InputPhoneCall peer; + public long key_fingerprint; + } + [TLDef(0xF2F2330A)] public sealed partial class Langpack_GetLangPack : IMethod { diff --git a/src/TL.Table.cs b/src/TL.Table.cs index 1d9e4b9..a818019 100644 --- a/src/TL.Table.cs +++ b/src/TL.Table.cs @@ -6,7 +6,7 @@ namespace TL { public static partial class Layer { - public const int Version = 195; // fetched 04/12/2024 17:50:39 + public const int Version = 196; // fetched 01/01/2025 23:32:39 internal const int SecretChats = 144; internal const int MTProto2 = 73; internal const uint VectorCtor = 0x1CB5C415; @@ -124,7 +124,7 @@ namespace TL [0x36C6019A] = typeof(PeerChat), [0xA2A5371E] = typeof(PeerChannel), [0xD3BC4B7A] = typeof(UserEmpty), - [0x83314FCA] = typeof(User), + [0x4B46C37E] = typeof(User), [0x4F11BAE1] = null,//UserProfilePhotoEmpty [0x82D1F706] = typeof(UserProfilePhoto), [0x09D05049] = null,//UserStatusEmpty @@ -136,10 +136,10 @@ namespace TL [0x29562865] = typeof(ChatEmpty), [0x41CBF256] = typeof(Chat), [0x6592A1A7] = typeof(ChatForbidden), - [0xFE4478BD] = typeof(Channel), + [0xE00998B7] = typeof(Channel), [0x17D493D5] = typeof(ChannelForbidden), [0x2633421B] = typeof(ChatFull), - [0xBBAB348D] = typeof(ChannelFull), + [0x9FF3B858] = typeof(ChannelFull), [0xC02D4007] = typeof(ChatParticipant), [0xE46BCEE4] = typeof(ChatParticipantCreator), [0xA0933F5B] = typeof(ChatParticipantAdmin), @@ -148,8 +148,8 @@ namespace TL [0x37C1011C] = null,//ChatPhotoEmpty [0x1C6E1C11] = typeof(ChatPhoto), [0x90A6CA84] = typeof(MessageEmpty), - [0x94345242] = typeof(Message), - [0x2B085862] = typeof(MessageService), + [0x96FDBBE9] = typeof(Message), + [0xD3D28540] = typeof(MessageService), [0x3DED6320] = null,//MessageMediaEmpty [0x695150D7] = typeof(MessageMediaPhoto), [0x56E0D474] = typeof(MessageMediaGeo), @@ -213,7 +213,8 @@ namespace TL [0x41B3E202] = typeof(MessageActionPaymentRefunded), [0x45D5B021] = typeof(MessageActionGiftStars), [0xB00C47A2] = typeof(MessageActionPrizeStars), - [0x08557637] = typeof(MessageActionStarGift), + [0xD8F4F0A7] = typeof(MessageActionStarGift), + [0x26077B99] = typeof(MessageActionStarGiftUnique), [0xD58A08C6] = typeof(Dialog), [0x71BD134C] = typeof(DialogFolder), [0x2331B22D] = typeof(PhotoEmpty), @@ -241,7 +242,7 @@ namespace TL [0xACD66C5E] = typeof(PeerSettings), [0xA437C3ED] = typeof(WallPaper), [0xE0804116] = typeof(WallPaperNoFile), - [0x979D2376] = typeof(UserFull), + [0x4D975BBC] = typeof(UserFull), [0x145ADE0B] = typeof(Contact), [0xC13E3C50] = typeof(ImportedContact), [0x16D9703B] = typeof(ContactStatus), @@ -364,7 +365,7 @@ namespace TL [0x5BB98608] = typeof(UpdatePinnedChannelMessages), [0xF89A6A4E] = typeof(UpdateChat), [0xF2EBDB4E] = typeof(UpdateGroupCallParticipants), - [0x14B24500] = typeof(UpdateGroupCall), + [0x97D64341] = typeof(UpdateGroupCall), [0xBB9BB9A5] = typeof(UpdatePeerHistoryTTL), [0xD087663A] = typeof(UpdateChatParticipant), [0x985D3ABB] = typeof(UpdateChannelParticipant), @@ -543,7 +544,7 @@ namespace TL [0xA22CBD96] = typeof(ChatInviteExported), [0xED107AB7] = typeof(ChatInvitePublicJoinRequests), [0x5A686D7C] = typeof(ChatInviteAlready), - [0xFE65389D] = typeof(ChatInvite), + [0x5C9D3702] = typeof(ChatInvite), [0x61695CB0] = typeof(ChatInvitePeek), [0xFFB62B95] = null,//InputStickerSetEmpty [0x9DE7A269] = typeof(InputStickerSetID), @@ -560,7 +561,7 @@ namespace TL [0x6E153F16] = typeof(Messages_StickerSet), [0xD3F924EB] = null,//Messages_StickerSetNotModified [0xC27AC8C7] = typeof(BotCommand), - [0x36607333] = typeof(BotInfo), + [0x4D8A0299] = typeof(BotInfo), [0xA2FA4880] = typeof(KeyboardButton), [0x258AFF05] = typeof(KeyboardButtonUrl), [0x35BBDB6B] = typeof(KeyboardButtonCallback), @@ -747,6 +748,11 @@ namespace TL [0x76768BED] = typeof(PageBlockDetails), [0x16115A96] = typeof(PageBlockRelatedArticles), [0xA44F3EF6] = typeof(PageBlockMap), + [0x85E42301] = typeof(PhoneCallDiscardReasonMissed), + [0xE095C1A0] = typeof(PhoneCallDiscardReasonDisconnect), + [0x57ADC690] = typeof(PhoneCallDiscardReasonHangup), + [0xFAF7E8C9] = typeof(PhoneCallDiscardReasonBusy), + [0xAFE2B839] = typeof(PhoneCallDiscardReasonAllowGroupCall), [0x7D748D04] = typeof(DataJSON), [0xCB296BF8] = typeof(LabeledPrice), [0x049EE584] = typeof(Invoice), @@ -779,11 +785,11 @@ namespace TL [0x32DA9E9C] = typeof(InputStickerSetItem), [0x1E36FDED] = typeof(InputPhoneCall), [0x5366C915] = typeof(PhoneCallEmpty), - [0xC5226F17] = typeof(PhoneCallWaiting), - [0x14B0ED0C] = typeof(PhoneCallRequested), - [0x3660C311] = typeof(PhoneCallAccepted), - [0x30535AF5] = typeof(PhoneCall), - [0x50CA4DE1] = typeof(PhoneCallDiscarded), + [0xEED42858] = typeof(PhoneCallWaiting), + [0x45361C63] = typeof(PhoneCallRequested), + [0x22FD7181] = typeof(PhoneCallAccepted), + [0x3BA5940C] = typeof(PhoneCall), + [0xF9D25503] = typeof(PhoneCallDiscarded), [0x9CC123C7] = typeof(PhoneConnection), [0x635FE375] = typeof(PhoneConnectionWebrtc), [0xFC878FC8] = typeof(PhoneCallProtocol), @@ -986,9 +992,9 @@ namespace TL [0x4899484E] = typeof(Messages_VotesList), [0xF568028A] = typeof(BankCardOpenUrl), [0x3E24E573] = typeof(Payments_BankCardData), - [0x5FB5523B] = typeof(DialogFilter), + [0xAA472651] = typeof(DialogFilter), [0x363293AE] = null,//DialogFilterDefault - [0x9FE28EA4] = typeof(DialogFilterChatlist), + [0x96537BD7] = typeof(DialogFilterChatlist), [0x77744D4A] = typeof(DialogFilterSuggested), [0xB637EDAF] = typeof(StatsDateRangeDays), [0xCB43ACDE] = typeof(StatsAbsValueAndPrev), @@ -1020,7 +1026,7 @@ namespace TL [0xE8FD8014] = typeof(PeerBlocked), [0x7FE91C14] = typeof(Stats_MessageStats), [0x7780BCB4] = typeof(GroupCallDiscarded), - [0xD597650C] = typeof(GroupCall), + [0xCDF8D3E3] = typeof(GroupCall), [0xD8AA840F] = typeof(InputGroupCall), [0xEBA636FE] = typeof(GroupCallParticipant), [0x9E727AAD] = typeof(Phone_GroupCall), @@ -1097,6 +1103,8 @@ namespace TL [0x65F00CE3] = typeof(InputInvoiceStars), [0x34E793F1] = typeof(InputInvoiceChatInviteSubscription), [0x25D8C1D8] = typeof(InputInvoiceStarGift), + [0x5EBE7262] = typeof(InputInvoiceStarGiftUpgrade), + [0xAE3BA9ED] = typeof(InputInvoiceStarGiftTransfer), [0xAED0CBD9] = typeof(Payments_ExportedInvoice), [0xCFB9D957] = typeof(Messages_TranscribedAudio), [0x5334759C] = typeof(Help_PremiumPromo), @@ -1171,7 +1179,7 @@ namespace TL [0x10E6E3A6] = typeof(Chatlists_ExportedChatlistInvite), [0x10AB6DC7] = typeof(Chatlists_ExportedInvites), [0xFA87F659] = typeof(Chatlists_ChatlistInviteAlready), - [0x1DCD839D] = typeof(Chatlists_ChatlistInvite), + [0xF10ECE2F] = typeof(Chatlists_ChatlistInvite), [0x93BD878D] = typeof(Chatlists_ChatlistUpdates), [0xE8A775B0] = typeof(Bots_BotInfo), [0xB6CC2D5C] = typeof(MessagePeerVote), @@ -1332,10 +1340,11 @@ namespace TL [0x4BA3A95A] = typeof(MessageReactor), [0x94CE852A] = typeof(StarsGiveawayOption), [0x54236209] = typeof(StarsGiveawayWinnersOption), - [0x49C577CD] = typeof(StarGift), + [0x02CC73C8] = typeof(StarGift), + [0x6A1407CD] = typeof(StarGiftUnique), [0xA388A368] = null,//Payments_StarGiftsNotModified [0x901689EA] = typeof(Payments_StarGifts), - [0xEEA49A6E] = typeof(UserStarGift), + [0x325835E1] = typeof(UserStarGift), [0x6B65B517] = typeof(Payments_UserStarGifts), [0x7903E3D9] = typeof(MessageReportOption), [0xF0E4E0B6] = typeof(ReportResultChooseOption), @@ -1351,6 +1360,13 @@ namespace TL [0xBBB6B4A3] = typeof(StarsAmount), [0x6010C534] = typeof(Messages_FoundStickersNotModified), [0x82C9E290] = typeof(Messages_FoundStickers), + [0xB0CD6617] = typeof(BotVerifierSettings), + [0xF93CD45C] = typeof(BotVerification), + [0x39D99013] = typeof(StarGiftAttributeModel), + [0x13ACFF19] = typeof(StarGiftAttributePattern), + [0x94271762] = typeof(StarGiftAttributeBackdrop), + [0xC02C4F4B] = typeof(StarGiftAttributeOriginalDetails), + [0x167BD90B] = typeof(Payments_StarGiftUpgradePreview), // from TL.Secret: [0x6ABD9782] = typeof(Layer143.DecryptedMessageMediaDocument), [0x020DF5D0] = typeof(Layer101.MessageEntityBlockquote), diff --git a/src/WTelegramClient.csproj b/src/WTelegramClient.csproj index 9ddd748..ff8487a 100644 --- a/src/WTelegramClient.csproj +++ b/src/WTelegramClient.csproj @@ -13,7 +13,7 @@ WTelegramClient 0.0.0 Wizou - Telegram Client API (MTProto) library written 100% in C# and .NET Standard | Latest API layer: 195 + Telegram Client API (MTProto) library written 100% in C# and .NET Standard | Latest API layer: 196 Release Notes: $(ReleaseNotes.Replace("|", "%0D%0A").Replace(" - ","%0D%0A- ").Replace(" ", "%0D%0A%0D%0A"))