diff --git a/EXAMPLES.md b/EXAMPLES.md index 2687469..55d5768 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -454,8 +454,8 @@ finally Many API calls return a structure with a `users` and a `chats` field at the root of the structure. This is also the case for updates passed to `client.OnUpdate`. -These two dictionaries give details about the various users/chats that will be typically referenced in subobjects deeper in the structure, -typically in the form of a `Peer` object or a `user_id` field. +These two dictionaries give details *(including access hash)* about the various users/chats that will be typically referenced in subobjects deeper in the structure, +typically in the form of a `Peer` object or a `user_id`/`chat_id` field. In such case, the root structure inherits the `IPeerResolver` interface, and you can use the `UserOrChat(peer)` method to resolve a `Peer` into either a `User` or `ChatBase` (`Chat`,`Channel`...) description structure *(depending on the kind of peer it was describing)* diff --git a/src/TL.Schema.cs b/src/TL.Schema.cs index eff054b..3a0fedf 100644 --- a/src/TL.Schema.cs +++ b/src/TL.Schema.cs @@ -827,6 +827,7 @@ namespace TL /// Whether we can edit the profile picture, name, about text and description of this bot because we own it. bot_can_edit = 0x2, close_friend = 0x4, + /// Whether we have hidden » all active stories of this user. stories_hidden = 0x8, stories_unavailable = 0x10, /// Field has a value @@ -2792,7 +2793,7 @@ namespace TL } } - /// List of actions that are possible when interacting with this user, to be shown as suggested actions in the chat bar See + /// List of actions that are possible when interacting with this user, to be shown as suggested actions in the chat action bar », see here » for more info. See [TLDef(0xA518110D)] public class PeerSettings : IObject { @@ -3639,7 +3640,7 @@ namespace TL has_pts = 0x1, } } - /// A new channel is available See + /// A new channel or supergroup is available, or info about an existing channel has changed and must be refeteched. See [TLDef(0x635B4C09)] public class UpdateChannel : Update { @@ -4249,19 +4250,20 @@ namespace TL /// Message ID of latest read outgoing message for this thread public int read_max_id; } - /// A peer was blocked See + /// We blocked a peer, see here » for more info on blocklists. See [TLDef(0xEBE07752)] public class UpdatePeerBlocked : Update { /// Extra bits of information, use flags.HasFlag(...) to test for those public Flags flags; - /// The blocked peer + /// The (un)blocked peer public Peer peer_id; [Flags] public enum Flags : uint { /// Whether the peer was blocked or unblocked blocked = 0x1, + /// Whether the peer was added/removed to/from the story blocklist; if not set, this update affects the main blocklist, see here » for more info. blocked_my_stories_from = 0x2, } } @@ -5913,7 +5915,7 @@ namespace TL [TLDef(0x2F453E49)] public class InputPrivacyValueAllowCloseFriends : InputPrivacyRule { } - /// Privacy rules together with privacy indicate what can or can't someone do and are specified by a constructor, and its input counterpart . See Derived classes: , , , , , , , , + /// Privacy rules together with privacy keys indicate what can or can't someone do and are specified by a constructor, and its input counterpart . See Derived classes: , , , , , , , , public abstract class PrivacyRule : IObject { } /// Allow all contacts See [TLDef(0xFFFE1BAC)] @@ -15276,15 +15278,17 @@ namespace TL public Dictionary users; } - /// See Derived classes: , + /// Contains info about a message or story to reply to. See Derived classes: , public abstract class InputReplyTo : IObject { } - /// See + /// Reply to a message. See [TLDef(0x9C5386E4)] public class InputReplyToMessage : InputReplyTo { /// Extra bits of information, use flags.HasFlag(...) to test for those public Flags flags; + /// The message ID to reply to. public int reply_to_msg_id; + /// This field must contain the topic ID only when replying to messages in forum topics different from the "General" topic (i.e. reply_to_msg_id is set and reply_to_msg_id != topicID and topicID != 1).
If the replied-to message is deleted before the method finishes execution, the value in this field will be used to send the message to the correct topic, instead of the "General" topic.
[IfFlag(0)] public int top_msg_id; [Flags] public enum Flags : uint @@ -15293,11 +15297,13 @@ namespace TL has_top_msg_id = 0x1, } } - ///
See + /// Reply to a story. See [TLDef(0x15B0F283)] public class InputReplyToStory : InputReplyTo { + /// ID of the user that posted the story. public InputUserBase user_id; + /// ID of the story to reply to. public int story_id; } diff --git a/src/TL.SchemaFuncs.cs b/src/TL.SchemaFuncs.cs index ca756c0..37046e4 100644 --- a/src/TL.SchemaFuncs.cs +++ b/src/TL.SchemaFuncs.cs @@ -1224,8 +1224,9 @@ namespace TL phones = phones, }); - /// Adds the user to the blacklist. See Possible codes: 400 (details) - /// User ID + /// Adds a peer to a blocklist, see here » for more info. See Possible codes: 400 (details) + /// Whether the peer should be added to the story blocklist; if not set, the peer will be added to the main blocklist, see here » for more info. + /// Peer public static Task Contacts_Block(this Client client, InputPeer id, bool my_stories_from = false) => client.Invoke(new Contacts_Block { @@ -1233,8 +1234,9 @@ namespace TL id = id, }); - /// Deletes the user from the blacklist. See Possible codes: 400 (details) - /// User ID + /// Deletes a peer from a blocklist, see here » for more info. See Possible codes: 400 (details) + /// Whether the peer should be removed from the story blocklist; if not set, the peer will be removed from the main blocklist, see here » for more info. + /// Peer public static Task Contacts_Unblock(this Client client, InputPeer id, bool my_stories_from = false) => client.Invoke(new Contacts_Unblock { @@ -1243,6 +1245,7 @@ namespace TL }); /// Returns the list of blocked users. See + /// Whether to fetch the story blocklist; if not set, will fetch the main blocklist. See here » for differences between the two. /// The number of list elements to be skipped /// The number of list elements to be returned public static Task Contacts_GetBlocked(this Client client, int offset = default, int limit = int.MaxValue, bool my_stories_from = false) @@ -1339,7 +1342,7 @@ namespace TL phone = phone, }); - /// If the of a new user allow us to add them as contact, add that user as contact See Possible codes: 400 (details) + /// If the add contact action bar is active, add that user as contact See Possible codes: 400 (details) /// The user to add as contact public static Task Contacts_AcceptContact(this Client client, InputUserBase id) => client.Invoke(new Contacts_AcceptContact @@ -1347,7 +1350,7 @@ namespace TL id = id, }); - /// Get contacts near you See Possible codes: 400,406 (details) + /// Get users and geochats near you, see here » for more info. See Possible codes: 400,406 (details) /// While the geolocation of the current user is public, clients should update it in the background every half-an-hour or so, while setting this flag.
Do this only if the new location is more than 1 KM away from the previous one, or if the previous location is unknown. /// Geolocation /// If set, the geolocation of the current user will be public for the specified number of seconds; pass 0x7fffffff to disable expiry, 0 to make the current geolocation private; if the flag isn't set, no changes will be applied. @@ -1393,14 +1396,17 @@ namespace TL token = token, }); - /// See + /// Edit the close friends list, see here » for more info. See + /// Full list of user IDs of close friends, see here for more info. public static Task Contacts_EditCloseFriends(this Client client, params long[] id) => client.Invoke(new Contacts_EditCloseFriends { id = id, }); - /// See + /// Replace the contents of an entire blocklist, see here for more info ». See + /// Whether to edit the story blocklist; if not set, will edit the main blocklist. See here » for differences between the two. + /// Full content of the blocklist. /// Maximum number of results to return, see pagination public static Task Contacts_SetBlocked(this Client client, InputPeer[] id, int limit = int.MaxValue, bool my_stories_from = false) => client.Invoke(new Contacts_SetBlocked @@ -1559,6 +1565,7 @@ namespace TL /// Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have content protection enabled /// Whether to move used stickersets to top, see here for more info on this flag » /// The destination where the message will be sent + /// If set, indicates that the message should be sent in reply to the specified message or story. /// The message /// Unique client message ID required to prevent message resending You can use /// Reply markup for sending bot buttons @@ -1586,6 +1593,7 @@ namespace TL /// Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have content protection enabled /// Whether to move used stickersets to top, see here for more info on this flag » /// Destination + /// If set, indicates that the message should be sent in reply to the specified message or story. /// Attached media /// Caption /// Random ID to avoid resending the same message You can use @@ -2119,6 +2127,7 @@ namespace TL /// Whether to clear the draft /// Whether to hide the via @botname in the resulting message (only for bot usernames encountered in the ) /// Destination + /// If set, indicates that the message should be sent in reply to the specified message or story. /// Random ID to avoid resending the same query You can use /// Query ID from Messages_GetInlineBotResults /// Result ID from Messages_GetInlineBotResults @@ -2472,6 +2481,7 @@ namespace TL /// Notify the other user in a private chat that a screenshot of the chat was taken See Possible codes: 400 (details) /// Other user + /// Indicates the message that was screenshotted (the specified message ID can also be 0 to avoid indicating any specific message). /// Random ID to avoid message resending You can use public static Task Messages_SendScreenshotNotification(this Client client, InputPeer peer, InputReplyTo reply_to, long random_id) => client.Invoke(new Messages_SendScreenshotNotification @@ -2551,6 +2561,7 @@ namespace TL /// Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have content protection enabled /// Whether to move used stickersets to top, see here for more info on this flag » /// The destination chat + /// If set, indicates that the message should be sent in reply to the specified message or story. /// The medias to send: note that they must be separately uploaded using Messages_UploadMedia first, using raw inputMediaUploaded* constructors is not supported. /// Scheduled message date for scheduled messages /// Send this message as the specified peer @@ -2761,7 +2772,7 @@ namespace TL url = url, }); - /// Should be called after the user hides the report spam/add as contact bar of a new chat, effectively prevents the user from executing the actions specified in the peer's settings. See + /// Should be called after the user hides the report spam/add as contact bar of a new chat, effectively prevents the user from executing the actions specified in the action bar ». See /// Peer public static Task Messages_HidePeerSettingsBar(this Client client, InputPeer peer) => client.Invoke(new Messages_HidePeerSettingsBar @@ -3371,6 +3382,7 @@ namespace TL /// If the web app was opened from the attachment menu using a attachment menu deep link, start_param should contain the data from the startattach parameter. /// Theme parameters » /// Short name of the application; 0-64 English letters, digits, and underscores + /// If set, indicates that the inline message that will be sent by the bot on behalf of the user once the web app interaction is Messages_SendWebViewResultMessage should be sent in reply to the specified message or story. /// Open the web app as the specified peer, sending the resulting the message as the specified peer. public static Task Messages_RequestWebView(this Client client, InputPeer peer, InputUserBase bot, string platform, InputReplyTo reply_to = null, string url = null, DataJSON theme_params = null, string start_param = null, InputPeer send_as = null, bool from_bot_menu = false, bool silent = false) => client.Invoke(new Messages_RequestWebView @@ -3391,6 +3403,7 @@ namespace TL /// Dialog where the web app was opened. /// Bot that owns the web app /// Web app interaction ID obtained from Messages_RequestWebView + /// If set, indicates that the inline message that will be sent by the bot on behalf of the user once the web app interaction is Messages_SendWebViewResultMessage should be sent in reply to the specified message or story. /// Open the web app as the specified peer public static Task Messages_ProlongWebView(this Client client, InputPeer peer, InputUserBase bot, long query_id, InputReplyTo reply_to = null, InputPeer send_as = null, bool silent = false) => client.Invoke(new Messages_ProlongWebView @@ -4142,8 +4155,8 @@ namespace TL /// Whether to create a forum /// Channel title /// Channel description - /// Geogroup location - /// Geogroup address + /// Geogroup location, see here » for more info on geogroups. + /// Geogroup address, see here » for more info on geogroups. /// Time-to-live of all messages that will be sent in the supergroup: once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well. You can use Messages_SetDefaultHistoryTTL to edit this value later. public static Task Channels_CreateChannel(this Client client, string title, string about, InputGeoPoint geo_point = null, string address = null, int? ttl_period = null, bool broadcast = false, bool megagroup = false, bool for_import = false, bool forum = false) => client.Invoke(new Channels_CreateChannel @@ -4387,7 +4400,7 @@ namespace TL password = password, }); - /// Edit location of geogroup See Possible codes: 400 (details) + /// Edit location of geogroup, see here » for more info on geogroups. See Possible codes: 400 (details) /// Geogroup /// New geolocation /// Address string @@ -5863,7 +5876,9 @@ namespace TL { }); - /// See Possible codes: 400 (details) + /// Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see here » for more info. See Possible codes: 400 (details) + /// Peer whose stories should be (un)hidden. + /// Whether to hide or unhide stories. public static Task Stories_TogglePeerStoriesHidden(this Client client, InputPeer peer, bool hidden) => client.Invoke(new Stories_TogglePeerStoriesHidden {