mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-01-01 09:06:24 +01:00
Update content of files
This commit is contained in:
parent
873e885cf4
commit
accf8b057e
13 changed files with 24 additions and 17 deletions
|
@ -124,10 +124,15 @@ See <a href="#email-verification">here »</a> for more info on the verification
|
||||||
<li><a href="/constructor/auth.sentCodeTypeEmailCode">auth.sentCodeTypeEmailCode</a>: the code was sent to the configured login email.</li>
|
<li><a href="/constructor/auth.sentCodeTypeEmailCode">auth.sentCodeTypeEmailCode</a>: the code was sent to the configured login email.</li>
|
||||||
<li><a href="/constructor/auth.sentCodeTypeFragmentSms">auth.sentCodeTypeFragmentSms</a>: the code was sent via <a href="https://fragment.com">fragment.com</a>: open the specified <code>url</code> to log into the <a href="https://fragment.com">Fragment</a> platform with your wallet and view the code. </li>
|
<li><a href="/constructor/auth.sentCodeTypeFragmentSms">auth.sentCodeTypeFragmentSms</a>: the code was sent via <a href="https://fragment.com">fragment.com</a>: open the specified <code>url</code> to log into the <a href="https://fragment.com">Fragment</a> platform with your wallet and view the code. </li>
|
||||||
<li><a href="/constructor/auth.sentCodeTypeApp">auth.sentCodeTypeApp</a>: the code was sent as a Telegram service notification to all other logged-in sessions.</li>
|
<li><a href="/constructor/auth.sentCodeTypeApp">auth.sentCodeTypeApp</a>: the code was sent as a Telegram service notification to all other logged-in sessions.</li>
|
||||||
<li><a href="/constructor/auth.sentCodeTypeFirebaseSms">auth.sentCodeTypeFirebaseSms</a>: only for official apps, only used if the <a href="/constructor/codeSettings">codeSettings</a>.<code>allow_firebase</code> flag is set. <ul>
|
<li><a href="/constructor/auth.sentCodeTypeFirebaseSms">auth.sentCodeTypeFirebaseSms</a>: firebase login flow, only for official apps. <ul>
|
||||||
<li>On Android, the client must pass <a href="/constructor/auth.sentCodeTypeFirebaseSms">auth.sentCodeTypeFirebaseSms</a> to the <a href="https://developer.android.com/training/safetynet/attestation">SafetyNet Attestation API</a>, and then pass the obtained JWS object to <a href="/method/auth.requestFirebaseSms">auth.requestFirebaseSms</a>.<code>safety_net_token</code>, along with the <code>phone_number</code> and the <code>phone_code_hash</code>.<br>
|
<li>On Android, can only be received if the <a href="/constructor/codeSettings">codeSettings</a>.<code>allow_firebase</code> flag is set.<br>
|
||||||
|
The client must pass the received <a href="/constructor/auth.sentCodeTypeFirebaseSms">auth.sentCodeTypeFirebaseSms</a>.<code>nonce</code> to the <a href="https://developer.android.com/training/safetynet/attestation">SafetyNet Attestation API</a>, and then pass the obtained JWS object to <a href="/method/auth.requestFirebaseSms">auth.requestFirebaseSms</a>.<code>safety_net_token</code>, along with the <code>phone_number</code> and the <code>phone_code_hash</code>.<br>
|
||||||
|
If the method returns <a href="/constructor/boolTrue">boolTrue</a>, the code will be sent via SMS; otherwise, the <code>next_type</code> authentication method must be used, with <a href="/method/auth.resendCode">auth.resendCode</a>.</li>
|
||||||
|
<li>On iOS, can only be received if the device token for Apple Push was passed to <a href="/constructor/codeSettings">codeSettings</a>.<code>token</code>.<br>
|
||||||
|
The client then waits for a new push notification for <a href="/constructor/auth.sentCodeTypeFirebaseSms">auth.sentCodeTypeFirebaseSms</a>.<code>push_timeout</code> seconds.<br>
|
||||||
|
If a push notification isn't received within <code>push_timeout</code> seconds, the <code>next_type</code> authentication method must be used, with <a href="/method/auth.resendCode">auth.resendCode</a>.<br>
|
||||||
|
If a push notification is received with <code>receipt</code> and <code>ios_push_secret</code> fields, and the value of the <code>receipt</code> field matches <a href="/constructor/codeSettings">codeSettings</a>.<code>receipt</code>, the value of <code>ios_push_secret</code> is passed to <a href="/method/auth.requestFirebaseSms">auth.requestFirebaseSms</a>.<code>ios_push_secret</code>, along with the <code>phone_number</code> and the <code>phone_code_hash</code>.<br>
|
||||||
If the method returns <a href="/constructor/boolTrue">boolTrue</a>, the code will be sent via SMS; otherwise, the <code>next_type</code> authentication method must be used, with <a href="/method/auth.resendCode">auth.resendCode</a>.</li>
|
If the method returns <a href="/constructor/boolTrue">boolTrue</a>, the code will be sent via SMS; otherwise, the <code>next_type</code> authentication method must be used, with <a href="/method/auth.resendCode">auth.resendCode</a>.</li>
|
||||||
<li>On iOS, the <code>receipt</code> and <code>push_timeout</code> fields of <a href="/constructor/auth.sentCodeTypeFirebaseSms">auth.sentCodeTypeFirebaseSms</a> are populated, </li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="/constructor/auth.sentCodeTypeSms">auth.sentCodeTypeSms</a>: the code was sent via SMS.</li>
|
<li><a href="/constructor/auth.sentCodeTypeSms">auth.sentCodeTypeSms</a>: the code was sent via SMS.</li>
|
||||||
|
|
|
@ -192,7 +192,7 @@ If the client has already encountered an app with this short name from the same
|
||||||
The bot can, however, write to the user directly if it already has a chat with the user or if it requested permission via <code>request_write_access</code> and the user granted it with <code>write_allowed</code>. </p>
|
The bot can, however, write to the user directly if it already has a chat with the user or if it requested permission via <code>request_write_access</code> and the user granted it with <code>write_allowed</code>. </p>
|
||||||
<h3><a class="anchor" href="#theme-parameters" id="theme-parameters" name="theme-parameters"><i class="anchor-icon"></i></a>Theme parameters</h3>
|
<h3><a class="anchor" href="#theme-parameters" id="theme-parameters" name="theme-parameters"><i class="anchor-icon"></i></a>Theme parameters</h3>
|
||||||
<p>Bot web apps can be themed according to the following theme parameters, passed as a JSON object to the <code>theme_params</code> parameter of the <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a> and <a href="/method/messages.requestWebView">messages.requestWebView</a> methods. </p>
|
<p>Bot web apps can be themed according to the following theme parameters, passed as a JSON object to the <code>theme_params</code> parameter of the <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a> and <a href="/method/messages.requestWebView">messages.requestWebView</a> methods. </p>
|
||||||
<p>This JSON object has the the following keys, containing color theme information (hex string, RGB, no alpha) to pass to the web app:</p>
|
<p>This JSON object has the following keys, containing color theme information (hex string, RGB, no alpha) to pass to the web app:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><code>bg_color</code> - Background color</li>
|
<li><code>bg_color</code> - Background color</li>
|
||||||
<li><code>secondary_bg_color</code> - Secondary background color</li>
|
<li><code>secondary_bg_color</code> - Secondary background color</li>
|
||||||
|
|
|
@ -103,7 +103,7 @@ Clients can also receive <a href="/constructor/updateDialogFilters">updateDialog
|
||||||
|
|
||||||
<a href='/method/folders.editPeerFolders'>folders.editPeerFolders</a>#6847d0ab folder_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputFolderPeer'>InputFolderPeer</a>> = <a href='/type/Updates'>Updates</a>;
|
<a href='/method/folders.editPeerFolders'>folders.editPeerFolders</a>#6847d0ab folder_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputFolderPeer'>InputFolderPeer</a>> = <a href='/type/Updates'>Updates</a>;
|
||||||
<a href='/method/folders.deleteFolder'>folders.deleteFolder</a>#1c295881 folder_id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre>
|
<a href='/method/folders.deleteFolder'>folders.deleteFolder</a>#1c295881 folder_id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre>
|
||||||
<p>API peer folders are typically used only by <a href="https://telegram.org/blog/archive-and-new-design">archived chats</a>, and are really handy for distinguishing groups of peers, since most peer-related constructors (updates, chat info) will contain the <code>folder_id</code> assigned the the specified chat. </p>
|
<p>API peer folders are typically used only by <a href="https://telegram.org/blog/archive-and-new-design">archived chats</a>, and are really handy for distinguishing groups of peers, since most peer-related constructors (updates, chat info) will contain the <code>folder_id</code> assigned the specified chat. </p>
|
||||||
<p>In Telegram apps, API peer folders are used only to implement the chat archive, identified by <code>folder_id</code> <code>1</code>; all other peers are in <code>folder_id</code> <code>0</code> by default; no other <code>folder_id</code> is allowed at the moment.</p>
|
<p>In Telegram apps, API peer folders are used only to implement the chat archive, identified by <code>folder_id</code> <code>1</code>; all other peers are in <code>folder_id</code> <code>0</code> by default; no other <code>folder_id</code> is allowed at the moment.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="/method/folders.editPeerFolders">folders.editPeerFolders</a> can be used to add and remove peers from peer folders.</li>
|
<li><a href="/method/folders.editPeerFolders">folders.editPeerFolders</a> can be used to add and remove peers from peer folders.</li>
|
||||||
|
|
|
@ -102,6 +102,7 @@
|
||||||
<li>Added <strong>via_chatlist</strong> parameter in <a href="/constructor/updateChannelParticipant">updateChannelParticipant</a></li>
|
<li>Added <strong>via_chatlist</strong> parameter in <a href="/constructor/updateChannelParticipant">updateChannelParticipant</a></li>
|
||||||
<li>Added <strong>via_chatlist</strong> parameter in <a href="/constructor/chatInviteImporter">chatInviteImporter</a></li>
|
<li>Added <strong>via_chatlist</strong> parameter in <a href="/constructor/chatInviteImporter">chatInviteImporter</a></li>
|
||||||
<li>Added <strong>flags</strong>, <strong>via_chatlist</strong> parameters in <a href="/constructor/channelAdminLogEventActionParticipantJoinByInvite">channelAdminLogEventActionParticipantJoinByInvite</a></li>
|
<li>Added <strong>flags</strong>, <strong>via_chatlist</strong> parameters in <a href="/constructor/channelAdminLogEventActionParticipantJoinByInvite">channelAdminLogEventActionParticipantJoinByInvite</a></li>
|
||||||
|
<li>Added <strong>my</strong> parameter in <a href="/constructor/messagePeerReaction">messagePeerReaction</a></li>
|
||||||
<li>Added <strong>flags</strong>, <strong>crypto_currency</strong>, <strong>crypto_amount</strong> parameters in <a href="/constructor/messageActionGiftPremium">messageActionGiftPremium</a></li>
|
<li>Added <strong>flags</strong>, <strong>crypto_currency</strong>, <strong>crypto_amount</strong> parameters in <a href="/constructor/messageActionGiftPremium">messageActionGiftPremium</a></li>
|
||||||
<li>Added <strong>reset_available_period</strong>, <strong>reset_pending_date</strong> parameters, removed <strong>next_phone_login_date</strong> parameter in <a href="/constructor/auth.sentCodeTypeEmailCode">auth.sentCodeTypeEmailCode</a></li>
|
<li>Added <strong>reset_available_period</strong>, <strong>reset_pending_date</strong> parameters, removed <strong>next_phone_login_date</strong> parameter in <a href="/constructor/auth.sentCodeTypeEmailCode">auth.sentCodeTypeEmailCode</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -112,6 +113,7 @@
|
||||||
<a href="/constructor/updateChannelParticipant">updateChannelParticipant</a>#985d3abb flags:<a href="/type/%23">#</a> via_chatlist:flags.3?<a href="/constructor/true">true</a> channel_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> actor_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> prev_participant:flags.0?<a href="/type/ChannelParticipant">ChannelParticipant</a> new_participant:flags.1?<a href="/type/ChannelParticipant">ChannelParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
<a href="/constructor/updateChannelParticipant">updateChannelParticipant</a>#985d3abb flags:<a href="/type/%23">#</a> via_chatlist:flags.3?<a href="/constructor/true">true</a> channel_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> actor_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> prev_participant:flags.0?<a href="/type/ChannelParticipant">ChannelParticipant</a> new_participant:flags.1?<a href="/type/ChannelParticipant">ChannelParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||||
<a href="/constructor/chatInviteImporter">chatInviteImporter</a>#8c5adfd9 flags:<a href="/type/%23">#</a> requested:flags.0?<a href="/constructor/true">true</a> via_chatlist:flags.3?<a href="/constructor/true">true</a> user_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> about:flags.2?<a href="/type/string">string</a> approved_by:flags.1?<a href="/type/long">long</a> = <a href="/type/ChatInviteImporter">ChatInviteImporter</a>;
|
<a href="/constructor/chatInviteImporter">chatInviteImporter</a>#8c5adfd9 flags:<a href="/type/%23">#</a> requested:flags.0?<a href="/constructor/true">true</a> via_chatlist:flags.3?<a href="/constructor/true">true</a> user_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> about:flags.2?<a href="/type/string">string</a> approved_by:flags.1?<a href="/type/long">long</a> = <a href="/type/ChatInviteImporter">ChatInviteImporter</a>;
|
||||||
<a href="/constructor/channelAdminLogEventActionParticipantJoinByInvite">channelAdminLogEventActionParticipantJoinByInvite</a>#fe9fc158 flags:<a href="/type/%23">#</a> via_chatlist:flags.0?<a href="/constructor/true">true</a> invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;<br>
|
<a href="/constructor/channelAdminLogEventActionParticipantJoinByInvite">channelAdminLogEventActionParticipantJoinByInvite</a>#fe9fc158 flags:<a href="/type/%23">#</a> via_chatlist:flags.0?<a href="/constructor/true">true</a> invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;<br>
|
||||||
|
<a href="/constructor/messagePeerReaction">messagePeerReaction</a>#8c79b63c flags:<a href="/type/%23">#</a> big:flags.0?<a href="/constructor/true">true</a> unread:flags.1?<a href="/constructor/true">true</a> my:flags.2?<a href="/constructor/true">true</a> peer_id:<a href="/type/Peer">Peer</a> date:<a href="/type/int">int</a> reaction:<a href="/type/Reaction">Reaction</a> = <a href="/type/MessagePeerReaction">MessagePeerReaction</a>;
|
||||||
<a href="/constructor/messageActionGiftPremium">messageActionGiftPremium</a>#c83d6aec flags:<a href="/type/%23">#</a> currency:<a href="/type/string">string</a> amount:<a href="/type/long">long</a> months:<a href="/type/int">int</a> crypto_currency:flags.0?<a href="/type/string">string</a> crypto_amount:flags.0?<a href="/type/long">long</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
<a href="/constructor/messageActionGiftPremium">messageActionGiftPremium</a>#c83d6aec flags:<a href="/type/%23">#</a> currency:<a href="/type/string">string</a> amount:<a href="/type/long">long</a> months:<a href="/type/int">int</a> crypto_currency:flags.0?<a href="/type/string">string</a> crypto_amount:flags.0?<a href="/type/long">long</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
||||||
<a href="/constructor/auth.sentCodeTypeEmailCode">auth.sentCodeTypeEmailCode</a>#f450f59b flags:<a href="/type/%23">#</a> apple_signin_allowed:flags.0?<a href="/constructor/true">true</a> google_signin_allowed:flags.1?<a href="/constructor/true">true</a> email_pattern:<a href="/type/string">string</a> length:<a href="/type/int">int</a> reset_available_period:flags.3?<a href="/type/int">int</a> reset_pending_date:flags.4?<a href="/type/int">int</a> = <a href="/type/auth.SentCodeType">auth.SentCodeType</a>;<br>
|
<a href="/constructor/auth.sentCodeTypeEmailCode">auth.sentCodeTypeEmailCode</a>#f450f59b flags:<a href="/type/%23">#</a> apple_signin_allowed:flags.0?<a href="/constructor/true">true</a> google_signin_allowed:flags.1?<a href="/constructor/true">true</a> email_pattern:<a href="/type/string">string</a> length:<a href="/type/int">int</a> reset_available_period:flags.3?<a href="/type/int">int</a> reset_pending_date:flags.4?<a href="/type/int">int</a> = <a href="/type/auth.SentCodeType">auth.SentCodeType</a>;<br>
|
||||||
<a href="/constructor/dialogFilterChatlist">dialogFilterChatlist</a>#d64a04a8 flags:<a href="/type/%23">#</a> has_my_invites:flags.26?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> title:<a href="/type/string">string</a> emoticon:flags.25?<a href="/type/string">string</a> pinned_peers:<a href="/type/Vector%20t">Vector</a><<a href="/type/InputPeer">InputPeer</a>> include_peers:<a href="/type/Vector%20t">Vector</a><<a href="/type/InputPeer">InputPeer</a>> = <a href="/type/DialogFilter">DialogFilter</a>;<br>
|
<a href="/constructor/dialogFilterChatlist">dialogFilterChatlist</a>#d64a04a8 flags:<a href="/type/%23">#</a> has_my_invites:flags.26?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> title:<a href="/type/string">string</a> emoticon:flags.25?<a href="/type/string">string</a> pinned_peers:<a href="/type/Vector%20t">Vector</a><<a href="/type/InputPeer">InputPeer</a>> include_peers:<a href="/type/Vector%20t">Vector</a><<a href="/type/InputPeer">InputPeer</a>> = <a href="/type/DialogFilter">DialogFilter</a>;<br>
|
||||||
|
@ -259,8 +261,8 @@ The current <a href="/api/auth#future-auth-tokens">future auth token</a> is now
|
||||||
Bots can now prompt the user to select and share a peer with the bot with <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a>, by using a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> bot button.<br>
|
Bots can now prompt the user to select and share a peer with the bot with <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a>, by using a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> bot button.<br>
|
||||||
Added support for <a href="/api/custom-emoji#emoji-categories">categorized custom emojis »</a>, a <a href="/method/messages.searchCustomEmoji">messages.searchCustomEmoji</a> method to look up <a href="/api/custom-emoji">custom emojis</a> by their corresponding UTF8 emoji and added <a href="/api/links#custom-emoji-stickerset-links">custom emoji stickerset deep links</a>.<br>
|
Added support for <a href="/api/custom-emoji#emoji-categories">categorized custom emojis »</a>, a <a href="/method/messages.searchCustomEmoji">messages.searchCustomEmoji</a> method to look up <a href="/api/custom-emoji">custom emojis</a> by their corresponding UTF8 emoji and added <a href="/api/links#custom-emoji-stickerset-links">custom emoji stickerset deep links</a>.<br>
|
||||||
Also implemented synchronization of media autosave settings.</p>
|
Also implemented synchronization of media autosave settings.</p>
|
||||||
<p>Most importantly, added support for Safetynet/Firebase SMS authentication, which is now mandatory when requesting SMS codes to log in or sign up to Telegram.<br>
|
<p>Most importantly, added support for Firebase SMS authentication, which is now mandatory when requesting SMS codes to log in or sign up to Telegram.<br>
|
||||||
Currently, only official apps can make use of Safetynet/Firebase SMS authentication: this means that only the official applications can be used to sign up to Telegram, or receive the login code via SMS/call. Third-party apps may log in using any of the other code delivery methods (Telegram codes, Fragment codes, email codes, <a href="/api/auth#future-auth-tokens">future auth tokens</a>).</p>
|
Currently, only official apps can make use of Firebase SMS authentication: this means that only the official applications can be used to sign up to Telegram, or receive the login code via SMS/call. Third-party apps may log in using any of the other code delivery methods (Telegram codes, Fragment codes, email codes, <a href="/api/auth#future-auth-tokens">future auth tokens</a>).</p>
|
||||||
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
|
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
|
||||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -103,7 +103,7 @@ You can also attach an inline keyboard to the message using the <code>reply_mark
|
||||||
<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;</code></pre>
|
<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;</code></pre>
|
||||||
<p>The user receives an <a href="/api/links#invoice-links">invoice deep link</a> or an <a href="/constructor/updateNewMessage">updateNewMessage</a> constructor from the bot, containing a <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> constructor with basic info about the product.</p>
|
<p>The user receives an <a href="/api/links#invoice-links">invoice deep link</a> or an <a href="/constructor/updateNewMessage">updateNewMessage</a> constructor from the bot, containing a <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> constructor with basic info about the product.</p>
|
||||||
<p>For invoice messages, the <a href="/constructor/message">message</a> will also have a <a href="/constructor/replyInlineMarkup">replyInlineMarkup</a> keyboard attached to it.
|
<p>For invoice messages, the <a href="/constructor/message">message</a> will also have a <a href="/constructor/replyInlineMarkup">replyInlineMarkup</a> keyboard attached to it.
|
||||||
The the first button of the keyboard will always be a <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button.</p>
|
The first button of the keyboard will always be a <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button.</p>
|
||||||
<h4><a class="anchor" href="#22-getting-invoice-info-about-the-product" id="22-getting-invoice-info-about-the-product" name="22-getting-invoice-info-about-the-product"><i class="anchor-icon"></i></a>2.2 Getting invoice info about the product</h4>
|
<h4><a class="anchor" href="#22-getting-invoice-info-about-the-product" id="22-getting-invoice-info-about-the-product" name="22-getting-invoice-info-about-the-product"><i class="anchor-icon"></i></a>2.2 Getting invoice info about the product</h4>
|
||||||
<pre><code><a href='/constructor/inputInvoiceMessage'>inputInvoiceMessage</a>#c5b56859 peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/InputInvoice'>InputInvoice</a>;
|
<pre><code><a href='/constructor/inputInvoiceMessage'>inputInvoiceMessage</a>#c5b56859 peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/InputInvoice'>InputInvoice</a>;
|
||||||
<a href='/constructor/inputInvoiceSlug'>inputInvoiceSlug</a>#c326caef slug:<a href='/type/string'>string</a> = <a href='/type/InputInvoice'>InputInvoice</a>;
|
<a href='/constructor/inputInvoiceSlug'>inputInvoiceSlug</a>#c326caef slug:<a href='/type/string'>string</a> = <a href='/type/InputInvoice'>InputInvoice</a>;
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
|
|
||||||
<a href='/constructor/reactionCount'>reactionCount</a>#a3d1cb80 flags:<a href='/type/%23'>#</a> chosen_order:flags.0?<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> count:<a href='/type/int'>int</a> = <a href='/type/ReactionCount'>ReactionCount</a>;
|
<a href='/constructor/reactionCount'>reactionCount</a>#a3d1cb80 flags:<a href='/type/%23'>#</a> chosen_order:flags.0?<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> count:<a href='/type/int'>int</a> = <a href='/type/ReactionCount'>ReactionCount</a>;
|
||||||
|
|
||||||
<a href='/constructor/messagePeerReaction'>messagePeerReaction</a>#8c79b63c flags:<a href='/type/%23'>#</a> big:flags.0?<a href='/constructor/true'>true</a> unread:flags.1?<a href='/constructor/true'>true</a> peer_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> = <a href='/type/MessagePeerReaction'>MessagePeerReaction</a>;
|
<a href='/constructor/messagePeerReaction'>messagePeerReaction</a>#8c79b63c flags:<a href='/type/%23'>#</a> big:flags.0?<a href='/constructor/true'>true</a> unread:flags.1?<a href='/constructor/true'>true</a> my:flags.2?<a href='/constructor/true'>true</a> peer_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> = <a href='/type/MessagePeerReaction'>MessagePeerReaction</a>;
|
||||||
|
|
||||||
<a href='/constructor/messageReactions'>messageReactions</a>#4f2b9479 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> can_see_list:flags.2?<a href='/constructor/true'>true</a> results:<a href='/type/Vector%20t'>Vector</a><<a href='/type/ReactionCount'>ReactionCount</a>> recent_reactions:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessagePeerReaction'>MessagePeerReaction</a>> = <a href='/type/MessageReactions'>MessageReactions</a>;
|
<a href='/constructor/messageReactions'>messageReactions</a>#4f2b9479 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> can_see_list:flags.2?<a href='/constructor/true'>true</a> results:<a href='/type/Vector%20t'>Vector</a><<a href='/type/ReactionCount'>ReactionCount</a>> recent_reactions:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessagePeerReaction'>MessagePeerReaction</a>> = <a href='/type/MessageReactions'>MessageReactions</a>;
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ Its ID for main and testing endpoints can be seen in the <a href="https://github
|
||||||
<li><code>from_id</code> set to the peer of <code>@replies</code></li>
|
<li><code>from_id</code> set to the peer of <code>@replies</code></li>
|
||||||
<li><code>peer_id</code> set to our own peer</li>
|
<li><code>peer_id</code> set to our own peer</li>
|
||||||
<li><code>fwd_from.saved_from_msg_id</code> set to the ID of the reply</li>
|
<li><code>fwd_from.saved_from_msg_id</code> set to the ID of the reply</li>
|
||||||
<li><code>fwd_from.from_id</code> set to the the peer that replied to us</li>
|
<li><code>fwd_from.from_id</code> set to the peer that replied to us</li>
|
||||||
<li><code>reply_to.reply_to_peer_id</code> set to the peer of the <a href="/api/discussion">discussion group</a></li>
|
<li><code>reply_to.reply_to_peer_id</code> set to the peer of the <a href="/api/discussion">discussion group</a></li>
|
||||||
<li><code>reply_to.reply_to_msg_id</code> set to the ID of our message</li>
|
<li><code>reply_to.reply_to_msg_id</code> set to the ID of our message</li>
|
||||||
<li><code>reply_to.reply_to_top_id</code> set to the <a href="/api/threads">thread ID</a></li>
|
<li><code>reply_to.reply_to_top_id</code> set to the <a href="/api/threads">thread ID</a></li>
|
||||||
|
|
|
@ -243,7 +243,7 @@ After the next update, only HTTPS links will be allowed in <em>login_url</em> in
|
||||||
<h4><a class="anchor" href="#november-5-2021" id="november-5-2021" name="november-5-2021"><i class="anchor-icon"></i></a>November 5, 2021</h4>
|
<h4><a class="anchor" href="#november-5-2021" id="november-5-2021" name="november-5-2021"><i class="anchor-icon"></i></a>November 5, 2021</h4>
|
||||||
<p><strong>Bot API 5.4</strong></p>
|
<p><strong>Bot API 5.4</strong></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Added the the parameter <code>creates_join_request</code> to the methods <a href="/bots/api#createchatinvitelink">createChatInviteLink</a> and <a href="/bots/api#editchatinvitelink">editChatInviteLink</a> for managing chat invite links that create join requests (read more about this on our <a href="https://telegram.org/blog/shared-media-scrolling-calendar-join-requests-and-more#join-requests-for-groups-and-channels">blog</a>).</li>
|
<li>Added the parameter <code>creates_join_request</code> to the methods <a href="/bots/api#createchatinvitelink">createChatInviteLink</a> and <a href="/bots/api#editchatinvitelink">editChatInviteLink</a> for managing chat invite links that create join requests (read more about this on our <a href="https://telegram.org/blog/shared-media-scrolling-calendar-join-requests-and-more#join-requests-for-groups-and-channels">blog</a>).</li>
|
||||||
<li>Added the fields <code>creates_join_request</code> and <code>pending_join_request_count</code> to the class <a href="/bots/api#chatinvitelink">ChatInviteLink</a>.</li>
|
<li>Added the fields <code>creates_join_request</code> and <code>pending_join_request_count</code> to the class <a href="/bots/api#chatinvitelink">ChatInviteLink</a>.</li>
|
||||||
<li>Added the field <code>name</code> to the class <a href="/bots/api#chatinvitelink">ChatInviteLink</a> and the parameters <code>name</code> to the methods <a href="/bots/api#createchatinvitelink">createChatInviteLink</a> and <a href="/bots/api#editchatinvitelink">editChatInviteLink</a> for managing <a href="https://telegram.org/blog/shared-media-scrolling-calendar-join-requests-and-more#unique-names-for-invite-links">invite link names</a>.</li>
|
<li>Added the field <code>name</code> to the class <a href="/bots/api#chatinvitelink">ChatInviteLink</a> and the parameters <code>name</code> to the methods <a href="/bots/api#createchatinvitelink">createChatInviteLink</a> and <a href="/bots/api#editchatinvitelink">editChatInviteLink</a> for managing <a href="https://telegram.org/blog/shared-media-scrolling-calendar-join-requests-and-more#unique-names-for-invite-links">invite link names</a>.</li>
|
||||||
<li>Added updates about new requests to join the chat, represented by the class <a href="/bots/api#chatjoinrequest">ChatJoinRequest</a> and the field <em>chat_join_request</em> in the <a href="/bots/api#update">Update</a> class. The bot must be an administrator in the chat with the <em>can_invite_users</em> administrator right to receive these updates.</li>
|
<li>Added updates about new requests to join the chat, represented by the class <a href="/bots/api#chatjoinrequest">ChatJoinRequest</a> and the field <em>chat_join_request</em> in the <a href="/bots/api#update">Update</a> class. The bot must be an administrator in the chat with the <em>can_invite_users</em> administrator right to receive these updates.</li>
|
||||||
|
|
|
@ -8519,7 +8519,7 @@ No more than <strong>50</strong> results per query are allowed.</p>
|
||||||
</table>
|
</table>
|
||||||
<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>
|
<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>
|
||||||
<h4><a class="anchor" href="#inlinequeryresultvoice" id="inlinequeryresultvoice" name="inlinequeryresultvoice"><i class="anchor-icon"></i></a>InlineQueryResultVoice</h4>
|
<h4><a class="anchor" href="#inlinequeryresultvoice" id="inlinequeryresultvoice" name="inlinequeryresultvoice"><i class="anchor-icon"></i></a>InlineQueryResultVoice</h4>
|
||||||
<p>Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the the voice message.</p>
|
<p>Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the voice message.</p>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -105,12 +105,12 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>token</strong></td>
|
<td><strong>token</strong></td>
|
||||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/type/string">string</a></td>
|
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/type/string">string</a></td>
|
||||||
<td> </td>
|
<td>Used only by official iOS apps for Firebase auth: device token for apple push.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>app_sandbox</strong></td>
|
<td><strong>app_sandbox</strong></td>
|
||||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/type/Bool">Bool</a></td>
|
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/type/Bool">Bool</a></td>
|
||||||
<td> </td>
|
<td>Used only by official iOS apps for firebase auth: whether a sandbox-certificate will be used during transmission of the push notification.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>broadcast_post</strong></td>
|
<td><strong>broadcast_post</strong></td>
|
||||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/int">int</a></td>
|
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/int">int</a></td>
|
||||||
<td>If set, contains the ID of the channel post that started the the <a href="/api/threads">comment thread</a></td>
|
<td>If set, contains the ID of the channel post that started the <a href="/api/threads">comment thread</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -179,7 +179,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>private_forward_name</strong></td>
|
<td><strong>private_forward_name</strong></td>
|
||||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.16?<a href="/type/string">string</a></td>
|
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.16?<a href="/type/string">string</a></td>
|
||||||
<td>Anonymized text to be shown instead of the the user's name on forwarded messages</td>
|
<td>Anonymized text to be shown instead of the user's name on forwarded messages</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>bot_group_admin_rights</strong></td>
|
<td><strong>bot_group_admin_rights</strong></td>
|
||||||
|
|
|
@ -191,7 +191,7 @@ iv = slice( password_hash, 32, 16 )</code></pre>
|
||||||
<p>The <em>passport_secret</em> can now be used to decrypt encrypted passport data stored on telegram servers:</p>
|
<p>The <em>passport_secret</em> can now be used to decrypt encrypted passport data stored on telegram servers:</p>
|
||||||
<h3><a class="anchor" href="#data-and-file-encryption" id="data-and-file-encryption" name="data-and-file-encryption"><i class="anchor-icon"></i></a>Data and File Encryption</h3>
|
<h3><a class="anchor" href="#data-and-file-encryption" id="data-and-file-encryption" name="data-and-file-encryption"><i class="anchor-icon"></i></a>Data and File Encryption</h3>
|
||||||
<h4><a class="anchor" href="#encryption" id="encryption" name="encryption"><i class="anchor-icon"></i></a>Encryption</h4>
|
<h4><a class="anchor" href="#encryption" id="encryption" name="encryption"><i class="anchor-icon"></i></a>Encryption</h4>
|
||||||
<p>To encrypt Telegram Passport data, the client generates a <em>data_secret</em> (a 32-byte number with the modulo 255 sum of bytes equal to 239). The the data is encrypted according to the following scheme:</p>
|
<p>To encrypt Telegram Passport data, the client generates a <em>data_secret</em> (a 32-byte number with the modulo 255 sum of bytes equal to 239). The data is encrypted according to the following scheme:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<p>Data is padded to a length that is divisible by 16 bytes. To achieve this, 32 to 255 bytes are added at the beginning, where the first byte always holds the number of added bytes and the rest are random.</p>
|
<p>Data is padded to a length that is divisible by 16 bytes. To achieve this, 32 to 255 bytes are added at the beginning, where the first byte always holds the number of added bytes and the rest are random.</p>
|
||||||
|
|
Loading…
Reference in a new issue