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
{