mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-03-27 18:20:44 +01:00
Update content of files
This commit is contained in:
parent
eee2217ac4
commit
de6d22f14f
309 changed files with 8168 additions and 2046 deletions
data/corefork.telegram.org
api
auth.html
bots.htmlbots
config.htmldatacenter.htmldiscussion.htmlend-to-end.htmlerrors.htmlfiles.htmlinvoking.htmllayers.htmllive-location.htmlmentions.htmlpassport.htmlpayments.htmlpin.htmlpoll.htmlqr-login.htmlrecent-actions.htmlrequests.htmlscheduled-messages.htmlsearch.htmlsrp.htmlstats.htmlthreads.htmltop-rating.htmlupdates.htmlbots
constructor
account.chatThemesaccount.chatThemesNotModifiedaccount.passwordaccount.sentEmailCodeaccount.wallPapersauth.exportedAuthorizationauth.passwordRecoveryauth.sentCodeTypeFlashCallbotCommandScopeChatAdmins.htmlbotCommandScopeChats.htmlbotCommandScopePeer.htmlbotCommandScopePeerAdmins.htmlbotCommandScopeUsers.htmlchannel.htmlchannelAdminLogEventActionChangeHistoryTTL.htmlchannelAdminLogEventActionChangeLinkedChat.htmlchannelAdminLogEventActionChangeTheme.htmlchannelAdminLogEventActionDiscardGroupCall.htmlchannelAdminLogEventActionParticipantMute.htmlchannelAdminLogEventActionParticipantUnmute.htmlchannelAdminLogEventActionParticipantVolume.htmlchannelAdminLogEventActionStartGroupCall.htmlchannelAdminLogEventsFilter.htmlchannelFull.htmlchannelParticipant.htmlchannelParticipantAdmin.htmlchannelParticipantBanned.htmlchannelParticipantCreator.htmlchannelParticipantLeft.htmlchannelParticipantSelf.htmlchannels.channelParticipantchannels.channelParticipantschat.htmlchatAdminRights.htmlchatAdminWithInvites.htmlchatEmpty.htmlchatForbidden.htmlchatInviteExported.htmlchatParticipantAdmin.htmlchatParticipantsForbidden.htmlchatPhoto.htmlcontact.htmlcontactStatus.htmlencryptedChat.htmlencryptedChatDiscarded.htmlencryptedChatRequested.htmlgroupCall.htmlgroupCallParticipant.htmlhelp.appUpdateimportedContact.htmlinlineQueryPeerTypeBroadcast.htmlinlineQueryPeerTypeMegagroup.htmlinputBotInlineMessageID64.htmlinputChannel.htmlinputChannelFromMessage.htmlinputGroupCall.htmlinputGroupCallStream.htmlinputPaymentCredentialsGooglePay.htmlinputPeerChannel.htmlinputPeerChannelFromMessage.htmlinputPeerChat.htmlinputPeerPhotoFileLocation.htmlinputPeerUser.htmlinputPeerUserFromMessage.htmlinputPrivacyValueDisallowChatParticipants.html
|
@ -42,56 +42,64 @@
|
|||
<div id="dev_page_content"><!-- scroll_nav -->
|
||||
|
||||
<p>Authorization is associated with a client’s encryption key identifier: <strong>auth_key_id</strong>. No additional parameters need to be passed into methods following authorization. </p>
|
||||
<p>To log in as a <a href="/bots">bot</a>, follow <a href="/api/bots">these instructions »</a>.</p>
|
||||
<h3><a class="anchor" name="sending-a-verification-code" href="#sending-a-verification-code"><i class="anchor-icon"></i></a>Sending a verification code</h3>
|
||||
<p>To log in as a <a href="/bots">bot</a>, follow <a href="/api/bots">these instructions »</a>.</p>
|
||||
<h3><a class="anchor" href="#sending-a-verification-code" id="sending-a-verification-code" name="sending-a-verification-code"><i class="anchor-icon"></i></a>Sending a verification code</h3>
|
||||
<p>Example implementations: <a href="https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java">telegram for android</a>, <a href="https://github.com/tdlib/td/tree/master/td/telegram/SendCodeHelper.cpp">tdlib</a>.</p>
|
||||
<p>To show a nicely formatted and validated phone number field, the <a href="/constructor/help.countriesList">help.countriesList</a> constructor can be obtained using the <a href="/method/help.getCountriesList">help.getCountriesList</a> method.<br>The <a href="/constructor/help.countriesList">help.countriesList</a> config is then used as described <a href="/api/config#country-information-and-login-phone-patterns">here »</a>. </p>
|
||||
<p>Authorization requires that a text message containing an authorization code first be sent to the user’s phone.<br>This may be done using the <a href="/method/auth.sendCode">auth.sendCode</a> method.<br>The system will automatically choose how to send the authorization code; there are four possible ways the code can arrive:</p>
|
||||
<p>To show a nicely formatted and validated phone number field, the <a href="/constructor/help.countriesList">help.countriesList</a> constructor can be obtained using the <a href="/method/help.getCountriesList">help.getCountriesList</a> method.<br>
|
||||
The <a href="/constructor/help.countriesList">help.countriesList</a> config is then used as described <a href="/api/config#country-information-and-login-phone-patterns">here »</a>. </p>
|
||||
<p>Authorization requires that a text message containing an authorization code first be sent to the user’s phone.<br>
|
||||
This may be done using the <a href="/method/auth.sendCode">auth.sendCode</a> method.
|
||||
The system will automatically choose how to send the authorization code; there are four possible ways the code can arrive:</p>
|
||||
<ul>
|
||||
<li><a href="/constructor/auth.sentCodeTypeApp">Telegram code</a></li>
|
||||
<li><a href="/constructor/auth.sentCodeTypeSms">SMS code</a></li>
|
||||
<li><a href="/constructor/auth.sentCodeTypeCall">Phone call</a>: a synthesized voice will tell the user which verification code to input</li>
|
||||
<li><a href="/constructor/auth.sentCodeTypeFlashCall">Flash phone call</a>: the code will be sent via a flash phone call, that will be closed immediately.<br>In the last case, the phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern (see <a href="/constructor/auth.sentCodeTypeFlashCall">auth.sentCodeTypeFlashCall</a>).</li>
|
||||
<li><a href="/constructor/auth.sentCodeTypeFlashCall">Flash phone call</a>: the code will be sent via a flash phone call, that will be closed immediately.
|
||||
In the last case, the phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern (see <a href="/constructor/auth.sentCodeTypeFlashCall">auth.sentCodeTypeFlashCall</a>).</li>
|
||||
</ul>
|
||||
<p>The <a href="/method/auth.sendCode">auth.sendCode</a> method also has parameters for enabling/disabling use of flash calls, and allows passing an SMS token that will be included in the sent SMS.<br>For example, the latter is required in newer versions of android, to use the <a href="https://developers.google.com/identity/sms-retriever/overview">android SMS receiver APIs</a>.</p>
|
||||
<p>The <a href="/method/auth.sendCode">auth.sendCode</a> method also has parameters for enabling/disabling use of flash calls, and allows passing an SMS token that will be included in the sent SMS.
|
||||
For example, the latter is required in newer versions of android, to use the <a href="https://developers.google.com/identity/sms-retriever/overview">android SMS receiver APIs</a>.</p>
|
||||
<p>The returned <a href="/type/auth.SentCode">auth.SentCode</a> object will contain multiple parameters:</p>
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>flags</strong></td>
|
||||
<td align="center"><a href="/type/%23">#</a></td>
|
||||
<td style="text-align: center;"><a href="/type/%23">#</a></td>
|
||||
<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>type</strong></td>
|
||||
<td align="center"><a href="/type/auth.SentCodeType">auth.SentCodeType</a></td>
|
||||
<td style="text-align: center;"><a href="/type/auth.SentCodeType">auth.SentCodeType</a></td>
|
||||
<td>Phone code type</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>phone_code_hash</strong></td>
|
||||
<td align="center"><a href="/type/string">string</a></td>
|
||||
<td style="text-align: center;"><a href="/type/string">string</a></td>
|
||||
<td>Phone code hash, to be stored and later re-used with <a href="/method/auth.signIn">auth.signIn</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>next_type</strong></td>
|
||||
<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/auth.CodeType">auth.CodeType</a></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/auth.CodeType">auth.CodeType</a></td>
|
||||
<td>Phone code type that will be sent next, if the phone code is not received within <code>timeout</code> seconds: to send it use <a href="/method/auth.resendCode">auth.resendCode</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>timeout</strong></td>
|
||||
<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td>
|
||||
<td>Timeout for reception of the phone code</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>If the message takes too long (<code>timeout</code> seconds) to arrive at the phone, the <a href="/method/auth.resendCode">auth.resendCode</a> method may be invoked to resend a code of type <code>next_type</code>.<br>If the same happens again, you can use <a href="/method/auth.resendCode">auth.resendCode</a> with the <code>next_type</code> returned by the previous call to <a href="/method/auth.resendCode">auth.resendCode</a>.<br>To cancel the verification code use <a href="/method/auth.cancelCode">auth.cancelCode</a>.</p>
|
||||
<h3><a class="anchor" name="sign-in-sign-up" href="#sign-in-sign-up"><i class="anchor-icon"></i></a>Sign in/sign up</h3>
|
||||
<p>If the message takes too long (<code>timeout</code> seconds) to arrive at the phone, the <a href="/method/auth.resendCode">auth.resendCode</a> method may be invoked to resend a code of type <code>next_type</code>.
|
||||
If the same happens again, you can use <a href="/method/auth.resendCode">auth.resendCode</a> with the <code>next_type</code> returned by the previous call to <a href="/method/auth.resendCode">auth.resendCode</a>.
|
||||
To cancel the verification code use <a href="/method/auth.cancelCode">auth.cancelCode</a>.</p>
|
||||
<h3><a class="anchor" href="#sign-insign-up" id="sign-insign-up" name="sign-insign-up"><i class="anchor-icon"></i></a>Sign in/sign up</h3>
|
||||
<p>When user enters verification code, the <a href="/method/auth.signIn">auth.signIn</a> method must be used to validate it and possibly sign user in.</p>
|
||||
<p>If the code was entered correctly, but the method returns <a href="/constructor/auth.authorizationSignUpRequired">auth.authorizationSignUpRequired</a>, it means that account with this phone number doesn't exist yet: user needs to provide basic information, accept terms of service and then the new user registration method (<a href="/method/auth.signUp">auth.signUp</a>) must be invoked.</p>
|
||||
<h3><a class="anchor" name="2fa" href="#2fa"><i class="anchor-icon"></i></a>2FA</h3>
|
||||
<p>When trying to sign in using <a href="/method/auth.signIn">auth.signIn</a>, an <a href="/method/auth.signIn#possible-errors">error 400 SESSION_PASSWORD_NEEDED</a> may be returned, if the user has two-factor authentication enabled.<br>In this case, instructions for <a href="/api/srp">SRP 2FA authentication</a> must be followed.</p>
|
||||
<p>If the code was entered correctly, but the method returns <a href="/constructor/auth.authorizationSignUpRequired">auth.authorizationSignUpRequired</a>, it means that account with this phone number doesn't exist yet: user needs to provide basic information, accept terms of service and then the new user registration method (<a href="/method/auth.signUp">auth.signUp</a>) must be invoked.</p>
|
||||
<h3><a class="anchor" href="#2fa" id="2fa" name="2fa"><i class="anchor-icon"></i></a>2FA</h3>
|
||||
<p>When trying to sign in using <a href="/method/auth.signIn">auth.signIn</a>, an <a href="/method/auth.signIn#possible-errors">error 400 SESSION_PASSWORD_NEEDED</a> may be returned, if the user has two-factor authentication enabled.
|
||||
In this case, instructions for <a href="/api/srp">SRP 2FA authentication</a> must be followed.</p>
|
||||
<p>To set up two-factor authorization on an already authorized account, follow the <a href="/api/srp">SRP 2FA authentication docs</a>.</p>
|
||||
<h4><a class="anchor" name="test-phone-numbers" href="#test-phone-numbers"><i class="anchor-icon"></i></a>Test Phone Numbers</h4>
|
||||
<h4><a class="anchor" href="#test-phone-numbers" id="test-phone-numbers" name="test-phone-numbers"><i class="anchor-icon"></i></a>Test Phone Numbers</h4>
|
||||
<p>Each phone number is limited to only a certain amount of logins per day (e.g. 5, but this is subject to change) after which the API will return a FLOOD error until the next day. This might not be enough for testing the implementation of User Authorization flows in client applications.</p>
|
||||
<p>There are several reserved phone number prefixes for testing that your application handles redirects between DCs, sign up, sign in and 2FA flows correctly. These numbers are only available on <strong>Test DCs</strong> (their IP addresses for TCP transport are availble in <a href="https://my.telegram.org/apps">API development tools</a> panel after <a href="https://core.telegram.org/api/obtaining_api_id#obtaining-api-id">api_id was obtained</a>, <a href="https://core.telegram.org/mtproto/transports#uri-format">URI format</a> for HTTPS/Websocket transport).</p>
|
||||
<p>If you wish to emulate an application of a user associated with DC number X, it is sufficient to specify the phone number as <code>99966XYYYY</code>, where YYYY are random numbers, when registering the user. A user like this would always get XXXXXX as the login confirmation code (the DC number, repeated six times). Note that the value of X must be in the range of 1-3 because there are only 3 Test DCs. When the flood limit is reached for any particular test number, just choose another number (changing the YYYY random part).</p>
|
||||
|
@ -100,7 +108,7 @@
|
|||
<blockquote>
|
||||
<p>To help you with working on production DCs, logins with the same phone number with which the <code>api_id</code> was registered have more generous flood limits.</p>
|
||||
</blockquote>
|
||||
<h3><a class="anchor" name="we-are-authorized" href="#we-are-authorized"><i class="anchor-icon"></i></a>We are authorized</h3>
|
||||
<h3><a class="anchor" href="#we-are-authorized" id="we-are-authorized" name="we-are-authorized"><i class="anchor-icon"></i></a>We are authorized</h3>
|
||||
<p>As a result of authorization, the client key, <strong>auth_key_id</strong>, becomes associated with the user, and each subsequent API call with this key will be executed with that user’s identity. The authorization method itself returns the relevant user. It is best to immediately store the User ID locally in a binding with the key.</p>
|
||||
<p>Only a small portion of the API methods are available to <strong>unauthorized</strong> users:</p>
|
||||
<ul>
|
||||
|
@ -122,8 +130,7 @@
|
|||
<li><a href="/method/langpack.getLanguages">langpack.getLanguages</a></li>
|
||||
<li><a href="/method/langpack.getLanguage">langpack.getLanguage</a></li>
|
||||
</ul>
|
||||
<p>Other methods will result in an error: <a href="/api/errors#401-unauthorized"><strong>401 UNAUTHORIZED</strong></a>.</p>
|
||||
</div>
|
||||
<p>Other methods will result in an error: <a href="/api/errors#401-unauthorized"><strong>401 UNAUTHORIZED</strong></a>.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -60,11 +60,11 @@ This article describes the full button flow, using the MTProto API. </p>
|
|||
<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>;
|
||||
|
||||
<a href='/constructor/replyKeyboardHide'>replyKeyboardHide</a>#a03e5b85 flags:<a href='/type/%23'>#</a> selective:flags.2?<a href='/constructor/true'>true</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>;
|
||||
<a href='/constructor/replyKeyboardForceReply'>replyKeyboardForceReply</a>#f4108aa0 flags:<a href='/type/%23'>#</a> single_use:flags.1?<a href='/constructor/true'>true</a> selective:flags.2?<a href='/constructor/true'>true</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>;
|
||||
<a href='/constructor/replyKeyboardMarkup'>replyKeyboardMarkup</a>#3502758c flags:<a href='/type/%23'>#</a> resize:flags.0?<a href='/constructor/true'>true</a> single_use:flags.1?<a href='/constructor/true'>true</a> selective:flags.2?<a href='/constructor/true'>true</a> rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>;
|
||||
<a href='/constructor/replyKeyboardForceReply'>replyKeyboardForceReply</a>#86b40b08 flags:<a href='/type/%23'>#</a> single_use:flags.1?<a href='/constructor/true'>true</a> selective:flags.2?<a href='/constructor/true'>true</a> placeholder:flags.3?<a href='/type/string'>string</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>;
|
||||
<a href='/constructor/replyKeyboardMarkup'>replyKeyboardMarkup</a>#85dd99d1 flags:<a href='/type/%23'>#</a> resize:flags.0?<a href='/constructor/true'>true</a> single_use:flags.1?<a href='/constructor/true'>true</a> selective:flags.2?<a href='/constructor/true'>true</a> rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> placeholder:flags.3?<a href='/type/string'>string</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>;
|
||||
<a href='/constructor/replyInlineMarkup'>replyInlineMarkup</a>#48a30254 rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>;
|
||||
|
||||
<a href='/constructor/message'>message</a>#58ae39c9 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> = <a href='/type/Message'>Message</a>;
|
||||
<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
@ -148,9 +148,9 @@ The same should happen when clicking on <a href="/constructor/keyboardButtonGame
|
|||
<p>The SRP payload will be processed exclusively on the Telegram's servers, simply returning an RPC error without passing the query to the bot if the verification fails.<br>
|
||||
This is just a way of verifying the identity of the user, mainly used by the official <a href="https://t.me/botfather">@botfather</a> bot to allow securely transferring the ownership of a bot to another user.</p>
|
||||
<h4><a class="anchor" href="#answering-a-callback-query" id="answering-a-callback-query" name="answering-a-callback-query"><i class="anchor-icon"></i></a>Answering a callback query</h4>
|
||||
<pre><code><a href='/constructor/updateBotCallbackQuery'>updateBotCallbackQuery</a>#e73547e1 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> peer:<a href='/type/Peer'>Peer</a> msg_id:<a href='/type/int'>int</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
|
||||
<pre><code><a href='/constructor/updateBotCallbackQuery'>updateBotCallbackQuery</a>#b9cfc48d flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> peer:<a href='/type/Peer'>Peer</a> msg_id:<a href='/type/int'>int</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
<a href='/constructor/updateInlineBotCallbackQuery'>updateInlineBotCallbackQuery</a>#f9d27a5a flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> msg_id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
|
||||
<a href='/constructor/updateInlineBotCallbackQuery'>updateInlineBotCallbackQuery</a>#691e9052 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> msg_id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
|
|
@ -46,12 +46,12 @@
|
|||
<h3><a class="anchor" href="#getting-commands" id="getting-commands" name="getting-commands"><i class="anchor-icon"></i></a>Getting commands</h3>
|
||||
<pre><code><a href='/constructor/botCommand'>botCommand</a>#c27ac8c7 command:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> = <a href='/type/BotCommand'>BotCommand</a>;
|
||||
|
||||
<a href='/constructor/botInfo'>botInfo</a>#98e81d3a user_id:<a href='/type/int'>int</a> description:<a href='/type/string'>string</a> commands:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotCommand'>BotCommand</a>> = <a href='/type/BotInfo'>BotInfo</a>;
|
||||
<a href='/constructor/botInfo'>botInfo</a>#1b74b335 user_id:<a href='/type/long'>long</a> description:<a href='/type/string'>string</a> commands:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotCommand'>BotCommand</a>> = <a href='/type/BotInfo'>BotInfo</a>;
|
||||
|
||||
<a href='/constructor/channelFull'>channelFull</a>#f0e6672a flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/int'>int</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/int'>int</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> = <a href='/type/ChatFull'>ChatFull</a>;
|
||||
<a href='/constructor/userFull'>userFull</a>#edf17c12 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> user:<a href='/type/User'>User</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> = <a href='/type/UserFull'>UserFull</a>;
|
||||
<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>;
|
||||
<a href='/constructor/userFull'>userFull</a>#d697ff05 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> user:<a href='/type/User'>User</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> = <a href='/type/UserFull'>UserFull</a>;
|
||||
|
||||
<a href='/constructor/user'>user</a>#938458c1 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;</code></pre>
|
||||
<a href='/constructor/user'>user</a>#3ff6ecb0 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> fake:flags.26?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;</code></pre>
|
||||
<p>The <a href="/constructor/botInfo">botInfo</a> constructors contained in the <a href="/constructor/userFull">userFull</a>, <a href="/constructor/chatFull">chatFull</a>, <a href="/constructor/channelFull">channelFull</a> contain a list of commands, and for groups, the ID and a description of each bot. </p>
|
||||
<p>In graphical clients, when users begin a message with a <code>/</code>, a list of commands supported by all bots present in the current chat should be shown; the same should be done for one-to-one chats with the bot itself. </p>
|
||||
<p>If the command list of a bot changes, the <code>bot_info_version</code> contained in the <a href="/constructor/user">user</a> constructor received in updates will change; this indicates that the client should refetch full bot information using <a href="/method/users.getFullUser">users.getFullUser</a>.</p>
|
||||
|
@ -60,7 +60,7 @@
|
|||
|
||||
---functions---
|
||||
|
||||
<a href='/method/bots.setBotCommands'>bots.setBotCommands</a>#805d46f6 commands:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotCommand'>BotCommand</a>> = <a href='/type/Bool'>Bool</a>;</code></pre>
|
||||
<a href='/method/bots.setBotCommands'>bots.setBotCommands</a>#517165a scope:<a href='/type/BotCommandScope'>BotCommandScope</a> lang_code:<a href='/type/string'>string</a> commands:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotCommand'>BotCommand</a>> = <a href='/type/Bool'>Bool</a>;</code></pre>
|
||||
<p>The command list can be changed by the owner of the bot through <a href="https://t.me/botfather">@botfather</a>, but bots can also change their own command list by invoking <a href="/method/bots.setBotCommands">bots.setBotCommands</a>.</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -80,9 +80,9 @@ Instead, they should send highscores to an intermediate server, that will then r
|
|||
<h3><a class="anchor" href="#getting-highscores" id="getting-highscores" name="getting-highscores"><i class="anchor-icon"></i></a>Getting highscores</h3>
|
||||
<pre><code><a href='/constructor/messageActionGameScore'>messageActionGameScore</a>#92a72876 game_id:<a href='/type/long'>long</a> score:<a href='/type/int'>int</a> = <a href='/type/MessageAction'>MessageAction</a>;
|
||||
|
||||
<a href='/constructor/messageService'>messageService</a>#286fa604 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> = <a href='/type/Message'>Message</a>;
|
||||
<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
<a href='/constructor/highScore'>highScore</a>#58fffcd0 pos:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> score:<a href='/type/int'>int</a> = <a href='/type/HighScore'>HighScore</a>;
|
||||
<a href='/constructor/highScore'>highScore</a>#73a379eb pos:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> score:<a href='/type/int'>int</a> = <a href='/type/HighScore'>HighScore</a>;
|
||||
|
||||
<a href='/constructor/messages.highScores'>messages.highScores</a>#9a3bfd99 scores:<a href='/type/Vector%20t'>Vector</a><<a href='/type/HighScore'>HighScore</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.HighScores'>messages.HighScores</a>;
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ This article describes the full inline bot flow, using the MTProto API. </p>
|
|||
<a href='/constructor/inputBotInlineResultDocument'>inputBotInlineResultDocument</a>#fff8fdc4 flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> title:flags.1?<a href='/type/string'>string</a> description:flags.2?<a href='/type/string'>string</a> document:<a href='/type/InputDocument'>InputDocument</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>;
|
||||
<a href='/constructor/inputBotInlineResultGame'>inputBotInlineResultGame</a>#4fa417f2 id:<a href='/type/string'>string</a> short_name:<a href='/type/string'>string</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>;
|
||||
|
||||
<a href='/constructor/updateBotInlineQuery'>updateBotInlineQuery</a>#54826690 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> query:<a href='/type/string'>string</a> geo:flags.0?<a href='/type/GeoPoint'>GeoPoint</a> offset:<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
|
||||
<a href='/constructor/updateBotInlineQuery'>updateBotInlineQuery</a>#496f379c flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> query:<a href='/type/string'>string</a> geo:flags.0?<a href='/type/GeoPoint'>GeoPoint</a> peer_type:flags.1?<a href='/type/InlineQueryPeerType'>InlineQueryPeerType</a> offset:<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
@ -114,7 +114,7 @@ Graphical clients should display the bot <code>@username</code> in the header of
|
|||
<h3><a class="anchor" href="#inline-feedback" id="inline-feedback" name="inline-feedback"><i class="anchor-icon"></i></a>Inline feedback</h3>
|
||||
<pre><code><a href='/constructor/inputBotInlineMessageID'>inputBotInlineMessageID</a>#890c3d89 dc_id:<a href='/type/int'>int</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a>;
|
||||
|
||||
<a href='/constructor/updateBotInlineSend'>updateBotInlineSend</a>#e48f964 flags:<a href='/type/%23'>#</a> user_id:<a href='/type/int'>int</a> query:<a href='/type/string'>string</a> geo:flags.0?<a href='/type/GeoPoint'>GeoPoint</a> id:<a href='/type/string'>string</a> msg_id:flags.1?<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> = <a href='/type/Update'>Update</a>;</code></pre>
|
||||
<a href='/constructor/updateBotInlineSend'>updateBotInlineSend</a>#12f12a07 flags:<a href='/type/%23'>#</a> user_id:<a href='/type/long'>long</a> query:<a href='/type/string'>string</a> geo:flags.0?<a href='/type/GeoPoint'>GeoPoint</a> id:<a href='/type/string'>string</a> msg_id:flags.1?<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> = <a href='/type/Update'>Update</a>;</code></pre>
|
||||
<p>If <a href="/bots/inline#collecting-feedback">feedback collection</a> is enabled, the bot may receive an <a href="/constructor/updateBotInlineSend">updateBotInlineSend</a> when the user <a href="#sending-the-inline-query-result">chooses and sends</a> an inline result. </p>
|
||||
<p>Even if the <a href="/bots/inline#collecting-feedback">probability setting is set to 100%</a>, not all inline results may be reported due to caching (see the <code>cache_time</code> parameter in <a href="/api/bots/buttons#answering-a-callback-query">Answering a callback query</a>).<br>
|
||||
<a href="/bots/inline#collecting-feedback">Feedback collection</a> can also create load issues for popular bots, so adjust the probability setting to a lower value in such cases.</p>
|
||||
|
@ -128,7 +128,7 @@ Graphical clients should display the bot <code>@username</code> in the header of
|
|||
<li><code>geo</code> - For bots requiring <a href="/bots/inline#location-based-results">location-based inline results</a>, the user's location</li>
|
||||
</ul>
|
||||
<h3><a class="anchor" href="#editing-sent-inline-messages" id="editing-sent-inline-messages" name="editing-sent-inline-messages"><i class="anchor-icon"></i></a>Editing sent inline messages</h3>
|
||||
<pre><code><a href='/constructor/updateInlineBotCallbackQuery'>updateInlineBotCallbackQuery</a>#f9d27a5a flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> msg_id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
|
||||
<pre><code><a href='/constructor/updateInlineBotCallbackQuery'>updateInlineBotCallbackQuery</a>#691e9052 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> msg_id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
<a href='/constructor/inputBotInlineMessageID'>inputBotInlineMessageID</a>#890c3d89 dc_id:<a href='/type/int'>int</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a>;
|
||||
|
||||
|
|
|
@ -173,7 +173,7 @@ While <a href="/method/help.getConfig">help.getConfig</a> returns MTProto-specif
|
|||
"dialog_filters_tooltip": false
|
||||
}</code></pre>
|
||||
<h2><a class="anchor" href="#app-specific-configuration" id="app-specific-configuration" name="app-specific-configuration"><i class="anchor-icon"></i></a>App-specific configuration</h2>
|
||||
<pre><code><a href='/constructor/help.appUpdate'>help.appUpdate</a>#1da7158f flags:<a href='/type/%23'>#</a> can_not_skip:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> version:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> entities:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> document:flags.1?<a href='/type/Document'>Document</a> url:flags.2?<a href='/type/string'>string</a> = <a href='/type/help.AppUpdate'>help.AppUpdate</a>;
|
||||
<pre><code><a href='/constructor/help.appUpdate'>help.appUpdate</a>#ccbbce30 flags:<a href='/type/%23'>#</a> can_not_skip:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> version:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> entities:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> document:flags.1?<a href='/type/Document'>Document</a> url:flags.2?<a href='/type/string'>string</a> sticker:flags.3?<a href='/type/Document'>Document</a> = <a href='/type/help.AppUpdate'>help.AppUpdate</a>;
|
||||
<a href='/constructor/help.noAppUpdate'>help.noAppUpdate</a>#c45a6536 = <a href='/type/help.AppUpdate'>help.AppUpdate</a>;
|
||||
|
||||
<a href='/constructor/updates'>updates</a>#74ae4240 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
|
||||
|
@ -215,7 +215,7 @@ While <a href="/method/help.getConfig">help.getConfig</a> returns MTProto-specif
|
|||
If an update to the Terms Of Service is available, clients are supposed to show a consent popup; if accepted, clients should call <a href="/method/help.acceptTermsOfService">help.acceptTermsOfService</a>, providing the <a href="/constructor/help.termsOfService">termsOfService <code>id</code> JSON object</a>; in case of denial, clients are to delete the account using <a href="/method/account.deleteAccount">account.deleteAccount</a>, providing <code>Decline ToS update</code> as deletion <code>reason</code>. </p>
|
||||
<p>Example implementation: <a href="https://github.com/DrKLO/Telegram/blob/dbf81a34affcd1c24d78e1403347ea8b3a186154/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java#L3510">android (signup)</a>, <a href="https://github.com/DrKLO/Telegram/blob/ed9e38da5b3b6ca80a7cb719a000d310d07497b0/TMessagesProj/src/main/java/org/telegram/ui/Components/TermsOfServiceView.java">android (after login)</a></p>
|
||||
<h2><a class="anchor" href="#telegram-support-info" id="telegram-support-info" name="telegram-support-info"><i class="anchor-icon"></i></a>Telegram support info</h2>
|
||||
<pre><code><a href='/constructor/user'>user</a>#938458c1 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;
|
||||
<pre><code><a href='/constructor/user'>user</a>#3ff6ecb0 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> fake:flags.26?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;
|
||||
|
||||
<a href='/constructor/help.support'>help.support</a>#17c6b5f6 phone_number:<a href='/type/string'>string</a> user:<a href='/type/User'>User</a> = <a href='/type/help.Support'>help.Support</a>;
|
||||
<a href='/constructor/help.supportName'>help.supportName</a>#8c05f1c9 name:<a href='/type/string'>string</a> = <a href='/type/help.SupportName'>help.SupportName</a>;
|
||||
|
|
|
@ -61,8 +61,8 @@ If we do not yet have a user with this number, we examine its IP-address. We can
|
|||
|
||||
<a href='/constructor/encryptedFile'>encryptedFile</a>#4a70994c id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/EncryptedFile'>EncryptedFile</a>;
|
||||
|
||||
<a href='/constructor/userProfilePhoto'>userProfilePhoto</a>#69d3ab26 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> photo_small:<a href='/type/FileLocation'>FileLocation</a> photo_big:<a href='/type/FileLocation'>FileLocation</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>;
|
||||
<a href='/constructor/chatPhoto'>chatPhoto</a>#d20b9f3c flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_small:<a href='/type/FileLocation'>FileLocation</a> photo_big:<a href='/type/FileLocation'>FileLocation</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/ChatPhoto'>ChatPhoto</a>;</code></pre>
|
||||
<a href='/constructor/userProfilePhoto'>userProfilePhoto</a>#82d1f706 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>;
|
||||
<a href='/constructor/chatPhoto'>chatPhoto</a>#1c6e1c11 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/ChatPhoto'>ChatPhoto</a>;</code></pre>
|
||||
<p>To download the file, an encrypted connection to DC <strong>dc_id</strong> must be established and used to execute the <a href="/method/upload.getFile">upload.getFile</a> query.
|
||||
If an attempt is made to download the file over a wrong connection, the FILE_MIGRATE_X error will be returned.</p>
|
||||
<p>Please note that encryption keys are not copied between DCs; therefore, the process of establishing an encrypted connection is started from the very beginning for each new DC. An issued auth_key can be associated with the current authorized user by using an <a href="#authorization-transfer">authorization transfer</a>.</p>
|
||||
|
@ -70,10 +70,10 @@ If an attempt is made to download the file over a wrong connection, the FILE_MIG
|
|||
<p>During the process of working with the API, user information is accumulated in the DC with which the user is associated. This is the reason a user cannot be associated with a different DC by means of the client. However, in the future, during prolonged communication from an unusual location, we may decide that the user’s data must be moved to a different DC. After some time, the data will be copied and the association will be updated. Once this happens, when executing any query transmitted to the old DC, the API will return the USER_MIGRATE_X error. The client will then have to establish a connection with the new DC and repeat the query.</p>
|
||||
<h3><a class="anchor" href="#authorization-transfer" id="authorization-transfer" name="authorization-transfer"><i class="anchor-icon"></i></a>Authorization Transfer</h3>
|
||||
<p>The following methods can be used to eliminate the need for users to enter the code from a text message every time:</p>
|
||||
<pre><code><a href='/constructor/auth.exportedAuthorization'>auth.exportedAuthorization</a>#df969c2d id:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.ExportedAuthorization'>auth.ExportedAuthorization</a>;
|
||||
<pre><code><a href='/constructor/auth.exportedAuthorization'>auth.exportedAuthorization</a>#b434e2b8 id:<a href='/type/long'>long</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.ExportedAuthorization'>auth.ExportedAuthorization</a>;
|
||||
<a href='/constructor/auth.authorization'>auth.authorization</a>#cd050916 flags:<a href='/type/%23'>#</a> tmp_sessions:flags.0?<a href='/type/int'>int</a> user:<a href='/type/User'>User</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>;
|
||||
---functions---
|
||||
<a href='/method/auth.importAuthorization'>auth.importAuthorization</a>#e3ef9613 id:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>;
|
||||
<a href='/method/auth.importAuthorization'>auth.importAuthorization</a>#a57a7dad id:<a href='/type/long'>long</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>;
|
||||
<a href='/method/auth.exportAuthorization'>auth.exportAuthorization</a>#e5bfffcd dc_id:<a href='/type/int'>int</a> = <a href='/type/auth.ExportedAuthorization'>auth.ExportedAuthorization</a>;</code></pre>
|
||||
<p><a href="/method/auth.exportAuthorization">auth.exportAuthorization</a> must be executed in the current DC (the DC with which a connection has already been established), passing in <strong>dc_id</strong> as the value for the new DC. The method should return the user identifier and a long string of random data. An import operation can be performed at the new DC by sending it what was received. Queries requiring authorization can then be successfully executed in the new DC.</p></div>
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
<pre><code><a href='/constructor/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>;
|
||||
<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>;
|
||||
|
||||
<a href='/constructor/channelFull'>channelFull</a>#f0e6672a flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/int'>int</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/int'>int</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> = <a href='/type/ChatFull'>ChatFull</a>;
|
||||
<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>;
|
||||
|
||||
<a href='/constructor/messages.chats'>messages.chats</a>#64ff9fd5 chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> = <a href='/type/messages.Chats'>messages.Chats</a>;
|
||||
|
||||
|
|
|
@ -42,11 +42,15 @@
|
|||
<div id="dev_page_content"><!-- scroll_nav -->
|
||||
|
||||
<blockquote>
|
||||
<p>This article on MTProto's End-to-End encryption is meant for <strong>advanced users</strong>.<br>If you want to learn more about <a href="https://telegram.org/faq#secret-chats">Secret Chats</a> from a less intimidating source, kindly see our <a href="https://telegram.org/faq#secret-chats">general FAQ</a>.</p>
|
||||
<p>Note that as of version 4.6, major Telegram clients are using <strong>MTProto 2.0</strong>.<br>MTProto v.1.0 is deprecated and is currently being phased out.</p>
|
||||
<p>This article on MTProto's End-to-End encryption is meant for <strong>advanced users</strong>.
|
||||
If you want to learn more about <a href="https://telegram.org/faq#secret-chats">Secret Chats</a> from a less intimidating source, kindly see our <a href="https://telegram.org/faq#secret-chats">general FAQ</a>.</p>
|
||||
</blockquote>
|
||||
<blockquote>
|
||||
<p>Note that as of version 4.6, major Telegram clients are using <strong>MTProto 2.0</strong>.
|
||||
MTProto v.1.0 is deprecated and is currently being phased out.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h5><a class="anchor" name="related-articles" href="#related-articles"><i class="anchor-icon"></i></a>Related articles</h5>
|
||||
<h5><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h5>
|
||||
<p><div class="dev_page_nav_wrap"></p>
|
||||
<ul>
|
||||
<li><a href="/mtproto/security_guidelines">Security guidelines for developers</a></li>
|
||||
|
@ -58,11 +62,11 @@
|
|||
<hr>
|
||||
<p>Secret Chats are one-on-one chats wherein messages are encrypted with a key held only by the chat’s participants. Note that the <a href="/schema/end-to-end">schema</a> for these end-to-end encrypted Secret Chats is different from what is used for <a href="/mtproto">cloud chats</a>:</p>
|
||||
<div>
|
||||
<a href="/file/811140633/4/hHw6Zy2DPyQ.109500/cabc10049a7190694f" target="_blank"><img src="/file/811140633/4/hHw6Zy2DPyQ.109500/cabc10049a7190694f" title="End-to-end encryption in MTProto 2.0 (Secret Chats)" class="dev_page_image" style="max-width: 600px" /></a>
|
||||
<a href="/file/811140633/4/hHw6Zy2DPyQ.109500/cabc10049a7190694f" target="_blank"><img src="/file/811140633/4/hHw6Zy2DPyQ.109500/cabc10049a7190694f" title="End-to-end encryption in MTProto 2.0 (Secret Chats)" class="dev_page_image" style="max-width: 600px"></a>
|
||||
</div>
|
||||
|
||||
<h4><a class="anchor" name="a-note-on-mtproto-2-0" href="#a-note-on-mtproto-2-0"><i class="anchor-icon"></i></a>A note on MTProto 2.0</h4>
|
||||
<p>This article describes the end-to-end encryption layer in the MTProto protocol version <strong>2.0</strong>.<br>The principal differences from version 1.0 (<a href="/api/end-to-end_v1">described here</a> for reference) are as follows:</p>
|
||||
<h4><a class="anchor" href="#a-note-on-mtproto-20" id="a-note-on-mtproto-20" name="a-note-on-mtproto-20"><i class="anchor-icon"></i></a>A note on MTProto 2.0</h4>
|
||||
<p>This article describes the end-to-end encryption layer in the MTProto protocol version <strong>2.0</strong>.
|
||||
The principal differences from version 1.0 (<a href="/api/end-to-end_v1">described here</a> for reference) are as follows:</p>
|
||||
<ul>
|
||||
<li>SHA-256 is used instead of SHA-1;</li>
|
||||
<li>Padding bytes are involved in the computation of msg_key;</li>
|
||||
|
@ -70,18 +74,19 @@
|
|||
<li>12..1024 padding bytes are used instead of 0..15 padding bytes in v.1.0.</li>
|
||||
</ul>
|
||||
<p>See also: <a href="https://core.telegram.org/mtproto">MTProto 2.0: Cloud Chats, server-client encryption</a></p>
|
||||
<h3><a class="anchor" name="key-generation" href="#key-generation"><i class="anchor-icon"></i></a>Key Generation</h3>
|
||||
<h3><a class="anchor" href="#key-generation" id="key-generation" name="key-generation"><i class="anchor-icon"></i></a>Key Generation</h3>
|
||||
<p>Keys are generated using the <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Diffie-Hellman protocol</a>.</p>
|
||||
<p>Let us consider the following scenario: User <strong>A</strong> would like to initiate end-to-end encrypted communication with User <strong>B</strong>.</p>
|
||||
<h4><a class="anchor" name="sending-a-request" href="#sending-a-request"><i class="anchor-icon"></i></a>Sending a Request</h4>
|
||||
<h4><a class="anchor" href="#sending-a-request" id="sending-a-request" name="sending-a-request"><i class="anchor-icon"></i></a>Sending a Request</h4>
|
||||
<p>User <strong>A</strong> executes <a href="/method/messages.getDhConfig">messages.getDhConfig</a> to obtain the Diffie-Hellman parameters: a prime <strong>p</strong>, and a high order element <strong>g</strong>.</p>
|
||||
<p>Executing this method before each new key generation procedure is of vital importance. It makes sense to cache the values of the parameters together with the version in order to avoid having to receive all of the values every time. If the version stored on the client is still up-to-date, the server will return the constructor <a href="/constructor/messages.dhConfigNotModified">messages.dhConfigNotModified</a>.</p>
|
||||
<p>Client is expected to check whether <strong>p</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that 2<sup>2047 < p < 2</sup>2048), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> — namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as to avoid repeating lengthy computations in future. This cache might be shared with one used for <a href="/mtproto/auth_key">Authorization Key generation</a>.</p>
|
||||
<p>If the client needs additional entropy for the random number generator, it can pass the <strong>random_length</strong> parameter (random_length> 0) so the server generates its own random sequence <strong>random</strong> of the appropriate length.<br><strong>Important</strong>: using the server’s random sequence in its raw form may be unsafe, it must be combined with a client sequence.</p>
|
||||
<p>Client is expected to check whether <strong>p</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that 2^2047 < p < 2^2048), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> -- namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as to avoid repeating lengthy computations in future. This cache might be shared with one used for <a href="/mtproto/auth_key">Authorization Key generation</a>.</p>
|
||||
<p>If the client needs additional entropy for the random number generator, it can pass the <strong>random_length</strong> parameter (random_length> 0) so the server generates its own random sequence <strong>random</strong> of the appropriate length.
|
||||
<strong>Important</strong>: using the server’s random sequence in its raw form may be unsafe, it must be combined with a client sequence.</p>
|
||||
<p>Client <strong>A</strong> computes a 2048-bit number <strong>a</strong> (using sufficient entropy or the server’s <strong>random</strong>; see above) and executes <a href="/method/messages.requestEncryption">messages.requestEncryption</a> after passing in <code>g_a := pow(g, a) mod dh_prime</code>.</p>
|
||||
<p>User <strong>B</strong> receives the update <a href="/constructor/updateEncryption">updateEncryption</a> for all associated authorization keys (all authorized devices) with the chat constructor <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>. The user must be shown basic information about User <strong>A</strong> and must be prompted to accept or reject the request.</p>
|
||||
<p>Both clients are to check that <strong>g</strong>, <strong>g_a</strong> and <strong>g_b</strong> are greater than one and smaller than <strong>p-1</strong>. We recommend checking that <strong>g_a</strong> and <strong>g_b</strong> are between <strong>2^{2048-64}</strong> and <strong>p - 2^{2048-64}</strong> as well.</p>
|
||||
<h4><a class="anchor" name="accepting-a-request" href="#accepting-a-request"><i class="anchor-icon"></i></a>Accepting a Request</h4>
|
||||
<h4><a class="anchor" href="#accepting-a-request" id="accepting-a-request" name="accepting-a-request"><i class="anchor-icon"></i></a>Accepting a Request</h4>
|
||||
<p>After User <strong>B</strong> confirms the creation of a secret chat with <strong>A</strong> in the client interface, Client <strong>B</strong> also receives up-to-date configuration parameters for the Diffie-Hellman method. Thereafter, it generates a random 2048-bit number, <strong>b</strong>, using rules similar to those for <strong>a</strong>. </p>
|
||||
<p>Having received <strong>g_a</strong> from the update with <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>, it can immediately generate the final shared key: <code>key = (pow(g_a, b) mod dh_prime)</code>. If key length < 256 bytes, add several leading zero bytes as padding — so that the key is exactly 256 bytes long. Its fingerprint, <strong>key_fingerprint</strong>, is equal to the 64 last bits of SHA1 (key). </p>
|
||||
<p><strong>Note 1:</strong> in this particular case SHA1 is used here even for MTProto 2.0 secret chats. </p>
|
||||
|
@ -90,14 +95,14 @@
|
|||
<p>For all of Client <strong>B’s</strong> authorized devices, except the current one, <a href="/constructor/updateEncryption">updateEncryption</a> updates are sent with the constructor <a href="/constructor/encryptedChatDiscarded">encryptedChatDiscarded</a>. Thereafter, the only device that will be able to access the secret chat is Device <strong>B</strong>, which made the call to <a href="/method/messages.acceptEncryption">messages.acceptEncryption</a>.</p>
|
||||
<p>User <strong>A</strong> will be sent an <a href="/constructor/updateEncryption">updateEncryption</a> update with the constructor <a href="/constructor/encryptedChat">encryptedChat</a>, for the authorization key that initiated the chat.</p>
|
||||
<p>With <strong>g_b</strong> from the update, Client <strong>A</strong> can also compute the shared key <code>key = (pow(g_b, a) mod dh_prime)</code>. If key length < 256 bytes, add several leading zero bytes as padding — so that the key is exactly 256 bytes long. If the fingerprint for the received key is identical to the one that was passed to <a href="/constructor/encryptedChat">encryptedChat</a>, incoming messages can be sent and processed. Otherwise, <a href="/method/messages.discardEncryption">messages.discardEncryption</a> must be executed and the user notified.</p>
|
||||
<h4><a class="anchor" name="perfect-forward-secrecy" href="#perfect-forward-secrecy"><i class="anchor-icon"></i></a>Perfect Forward Secrecy</h4>
|
||||
<h4><a class="anchor" href="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a>Perfect Forward Secrecy</h4>
|
||||
<p>In order to keep past communications safe, official Telegram clients will initiate re-keying once a key has been used to decrypt and encrypt more than 100 messages, or has been in use for more than one week, provided the key has been used to encrypt at least one message. Old keys are then securely discarded and cannot be reconstructed, even with access to the new keys currently in use.</p>
|
||||
<blockquote>
|
||||
<p>The re-keying protocol is further described in this article: <a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a>.</p>
|
||||
</blockquote>
|
||||
<p>Please note that your client must support Forward Secrecy in Secret Chats to be compatible with official Telegram clients. </p>
|
||||
<h3><a class="anchor" name="sending-and-receiving-messages-in-a-secret-chat" href="#sending-and-receiving-messages-in-a-secret-chat"><i class="anchor-icon"></i></a>Sending and Receiving Messages in a Secret Chat</h3>
|
||||
<h4><a class="anchor" name="serialization-and-encryption-of-outgoing-messages" href="#serialization-and-encryption-of-outgoing-messages"><i class="anchor-icon"></i></a>Serialization and Encryption of Outgoing Messages</h4>
|
||||
<h3><a class="anchor" href="#sending-and-receiving-messages-in-a-secret-chat" id="sending-and-receiving-messages-in-a-secret-chat" name="sending-and-receiving-messages-in-a-secret-chat"><i class="anchor-icon"></i></a>Sending and Receiving Messages in a Secret Chat</h3>
|
||||
<h4><a class="anchor" href="#serialization-and-encryption-of-outgoing-messages" id="serialization-and-encryption-of-outgoing-messages" name="serialization-and-encryption-of-outgoing-messages"><i class="anchor-icon"></i></a>Serialization and Encryption of Outgoing Messages</h4>
|
||||
<p>A TL object of type <a href="/type/DecryptedMessage">DecryptedMessage</a> is created and contains the message in plain text. For backward compatibility, the object must be wrapped in the constructor <a href="/constructor/decryptedMessageLayer">decryptedMessageLayer</a> with an indication of the supported layer (starting with 46).</p>
|
||||
<blockquote>
|
||||
<p>The TL-Schema for the contents of end-to-end encrypted messages is available <a href="/schema/end-to-end">here »</a></p>
|
||||
|
@ -118,18 +123,20 @@
|
|||
<p><em>For the obsolete MTProto 1.0, msg_key, aes_key, and aes_iv were computed differently (see <a href="/api/end-to-end_v1#serialization-and-encryption-of-outgoing-messages">this document</a> for reference).</em></p>
|
||||
<p>Data is encrypted with a 256-bit key, <strong>aes_key</strong>, and a 256-bit initialization vector, <strong>aes-iv</strong>, using AES-256 encryption with infinite garble extension (IGE). Encryption key fingerprint <strong>key_fingerprint</strong> and the message key <strong>msg_key</strong> are added at the top of the resulting byte array.</p>
|
||||
<p>Encrypted data is embedded into a <a href="/method/messages.sendEncrypted">messages.sendEncrypted</a> API call and passed to Telegram server for delivery to the other party of the Secret Chat.</p>
|
||||
<h4><a class="anchor" name="upgrading-to-mtproto-2-0-from-mtproto-1-0" href="#upgrading-to-mtproto-2-0-from-mtproto-1-0"><i class="anchor-icon"></i></a>Upgrading to MTProto 2.0 from MTProto 1.0</h4>
|
||||
<h4><a class="anchor" href="#upgrading-to-mtproto-20-from-mtproto-10" id="upgrading-to-mtproto-20-from-mtproto-10" name="upgrading-to-mtproto-20-from-mtproto-10"><i class="anchor-icon"></i></a>Upgrading to MTProto 2.0 from MTProto 1.0</h4>
|
||||
<p>As soon as both parties in a secret chat are using at least Layer 73, they should only use MTProto 2.0 for all outgoing messages. Some of the first received messages may use MTProto 1.0, if a sufficiently high starting layer has not been negotiated during the creation of the secret chat. After the first message encrypted with MTProto 2.0 (or the first message with Layer 73 or higher) is received, all messages with higher <a href="#sequence-numbers">sequence numbers</a> must be encrypted with MTProto 2.0 as well.</p>
|
||||
<p>As long as the current layer is lower than 73, each party should try to decrypt received messages with MTProto 1.0, and if this is not successfull (msg_key does not match), try MTProto 2.0. Once the first MTProto 2.0-encrypted message arrives (or the layer is upgraded to 73), there is no need to try MTProto 1.0 decryption for any of the further messages (unless the client is still waiting for some gaps to be closed).</p>
|
||||
<h4><a class="anchor" name="decrypting-an-incoming-message" href="#decrypting-an-incoming-message"><i class="anchor-icon"></i></a>Decrypting an Incoming Message</h4>
|
||||
<p>The steps above are performed in reverse order.<br>When an encrypted message is received, you <strong>must</strong> check that msg_key is <strong>in fact</strong> equal to the 128 middle bits of the SHA256 hash of the decrypted message, prepended by 32 bytes taken from the shared <strong>key</strong>.<br>If the message layer is greater than the one supported by the client, the user must be notified that the client version is out of date and prompted to update.</p>
|
||||
<h4><a class="anchor" name="sequence-numbers" href="#sequence-numbers"><i class="anchor-icon"></i></a>Sequence numbers</h4>
|
||||
<h4><a class="anchor" href="#decrypting-an-incoming-message" id="decrypting-an-incoming-message" name="decrypting-an-incoming-message"><i class="anchor-icon"></i></a>Decrypting an Incoming Message</h4>
|
||||
<p>The steps above are performed in reverse order.
|
||||
When an encrypted message is received, you <strong>must</strong> check that msg_key is <strong>in fact</strong> equal to the 128 middle bits of the SHA256 hash of the decrypted message, prepended by 32 bytes taken from the shared <strong>key</strong>.
|
||||
If the message layer is greater than the one supported by the client, the user must be notified that the client version is out of date and prompted to update.</p>
|
||||
<h4><a class="anchor" href="#sequence-numbers" id="sequence-numbers" name="sequence-numbers"><i class="anchor-icon"></i></a>Sequence numbers</h4>
|
||||
<p>It is necessary to interpret all messages in their original order to protect against possible manipulations. Secret chats support a special mechanism for handling seq_no counters independently from the server.</p>
|
||||
<blockquote>
|
||||
<p>Proper handling of these counters is further described in this article: <a href="/api/end-to-end/seq_no">Sequence numbers in Secret Chats</a>.</p>
|
||||
</blockquote>
|
||||
<p>Please note that your client must support sequence numbers in Secret Chats to be compatible with official Telegram clients. </p>
|
||||
<h4><a class="anchor" name="sending-encrypted-files" href="#sending-encrypted-files"><i class="anchor-icon"></i></a>Sending Encrypted Files</h4>
|
||||
<h4><a class="anchor" href="#sending-encrypted-files" id="sending-encrypted-files" name="sending-encrypted-files"><i class="anchor-icon"></i></a>Sending Encrypted Files</h4>
|
||||
<p>All files sent to secret chats are encrypted with one-time keys that are in no way related to the chat’s shared key. Before an encrypted file is sent, it is assumed that the encrypted file’s address will be attached to the outside of an encrypted message using the <strong>file</strong> parameter of the <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a> method and that the key for direct decryption will be sent in the body of the message (the <strong>key</strong> parameter in the constructors <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaPhoto</a>, <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaVideo</a> and <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaFile</a>.</p>
|
||||
<p>Prior to a file being sent to a secret chat, 2 random 256-bit numbers are computed which will serve as the AES key and initialization vector used to encrypt the file. AES-256 encryption with infinite garble extension (IGE) is used in like manner.</p>
|
||||
<p>The key fingerprint is computed as follows:</p>
|
||||
|
@ -137,28 +144,28 @@
|
|||
<li>digest = md5(key + iv)</li>
|
||||
<li>fingerprint = substr(digest, 0, 4) XOR substr(digest, 4, 4)</li>
|
||||
</ul>
|
||||
<p>The encrypted contents of a file are stored on the server in much the same way as those of a <a href="/api/files">file in cloud chats</a>: piece by piece using calls to <a href="/method/upload.saveFilePart">upload.saveFilePart</a>.<br>A subsequent call to <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a> will assign an identifier to the stored file and send the address together with the message. The recipient will receive an update with <a href="/constructor/encryptedMessage">encryptedMessage</a>, and the <strong>file</strong> parameter will contain file information.</p>
|
||||
<p>The encrypted contents of a file are stored on the server in much the same way as those of a <a href="/api/files">file in cloud chats</a>: piece by piece using calls to <a href="/method/upload.saveFilePart">upload.saveFilePart</a>.
|
||||
A subsequent call to <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a> will assign an identifier to the stored file and send the address together with the message. The recipient will receive an update with <a href="/constructor/encryptedMessage">encryptedMessage</a>, and the <strong>file</strong> parameter will contain file information.</p>
|
||||
<p>Incoming and outgoing encrypted files can be forwarded to other secret chats using the constructor <a href="/constructor/inputEncryptedFile">inputEncryptedFile</a> to avoid saving the same content on the server twice.</p>
|
||||
<h4><a class="anchor" name="working-with-an-update-box" href="#working-with-an-update-box"><i class="anchor-icon"></i></a>Working with an Update Box</h4>
|
||||
<h4><a class="anchor" href="#working-with-an-update-box" id="working-with-an-update-box" name="working-with-an-update-box"><i class="anchor-icon"></i></a>Working with an Update Box</h4>
|
||||
<p>Secret chats are associated with specific devices (or rather with <a href="/mtproto/description#creating-an-authorization-key">authorization keys</a>), not users. A conventional message box, which uses <strong>pts</strong> to describe the client’s status, is not suitable, because it is designed for long-term message storage and message access from different devices.</p>
|
||||
<p>An additional temporary message queue is introduced as a solution to this problem. When an update regarding a message from a secret chat is sent, a new value of <strong>qts</strong> is sent, which helps reconstruct the difference if there has been a long break in the connection or in case of loss of an update.</p>
|
||||
<p>As the number of events increases, the value of <strong>qts</strong> increases by 1 with each new event. The initial value may not (and will not) be equal to 0.</p>
|
||||
<p>The fact that events from the temporary queue have been received and stored by the client is acknowledged explicitly by a call to the <a href="/method/messages.receivedQueue">messages.receivedQueue</a> method or implicitly by a call to <a href="/method/updates.getDifference">updates.getDifference</a> (the value of <strong>qts</strong> passed, not the final state). All messages acknowledged as delivered by the client, as well as any messages older than 7 days, may (and will) be deleted from the server.</p>
|
||||
<p>Upon de-authorization, the event queue of the corresponding device will be forcibly cleared, and the value of <strong>qts</strong> will become irrelevant.</p>
|
||||
<h2><a class="anchor" name="updating-to-new-layers" href="#updating-to-new-layers"><i class="anchor-icon"></i></a>Updating to new layers</h2>
|
||||
<h2><a class="anchor" href="#updating-to-new-layers" id="updating-to-new-layers" name="updating-to-new-layers"><i class="anchor-icon"></i></a>Updating to new layers</h2>
|
||||
<p>Your client should always store the maximal layer that is known to be supported by the client on the other side of a secret chat. When the secret chat is first created, this value should be initialized to 46. This remote layer value must always be updated immediately after receiving <em>any</em> packet containing information of an upper layer, i.e.:</p>
|
||||
<ul>
|
||||
<li>any secret chat message containing <em>layer_no</em> in its <code>decryptedMessageLayer</code> with <em>layer</em>>=46, or</li>
|
||||
<li>a <a href="/constructor/decryptedMessageActionNotifyLayer">decryptedMessageActionNotifyLayer</a> service message, wrapped as if it were the <a href="/constructor/decryptedMessageService">decryptedMessageService</a> constructor of the obsolete layer 8 (constructor <code>decryptedMessageService#aa48327d</code>).</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="notifying-the-remote-client-about-your-local-layer" href="#notifying-the-remote-client-about-your-local-layer"><i class="anchor-icon"></i></a>Notifying the remote client about your local layer</h4>
|
||||
<h4><a class="anchor" href="#notifying-the-remote-client-about-your-local-layer" id="notifying-the-remote-client-about-your-local-layer" name="notifying-the-remote-client-about-your-local-layer"><i class="anchor-icon"></i></a>Notifying the remote client about your local layer</h4>
|
||||
<p>In order to notify the remote client of your local layer, your client must send a message of the <code>decryptedMessageActionNotifyLayer</code> type. This notification must be wrapped in a constructor of an appropriate layer.</p>
|
||||
<p>There are two cases when your client must notify the remote client about its local layer:</p>
|
||||
<ol>
|
||||
<li>As soon as a new secret chat has been created, immediately after the secret key has been successfully exchanged.</li>
|
||||
<li>Immediately after the local client has been updated to support a new secret chat layer. In this case notifications must be sent to <strong>all</strong> currently existing secret chats. Note that this is only necessary when updating to new layers that contain changes in the secret chats implementation (e.g. you don’t need to do this when your client is updated from Layer 46 to Layer 47).</li>
|
||||
</ol>
|
||||
</div>
|
||||
</ol></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -41,27 +41,28 @@
|
|||
|
||||
<div id="dev_page_content"><p>There will be errors when working with the API, and they must be correctly handled on the client.</p>
|
||||
<p>An error is characterized by several parameters:</p>
|
||||
<h4><a class="anchor" name="error-code" href="#error-code"><i class="anchor-icon"></i></a>Error Code</h4>
|
||||
<h4><a class="anchor" href="#error-code" id="error-code" name="error-code"><i class="anchor-icon"></i></a>Error Code</h4>
|
||||
<p>Numerical value similar to HTTP status. Contains information on the type of error that occurred: for example, a data input error, privacy error, or server error. This is a required parameter.</p>
|
||||
<h4><a class="anchor" name="error-type" href="#error-type"><i class="anchor-icon"></i></a>Error Type</h4>
|
||||
<h4><a class="anchor" href="#error-type" id="error-type" name="error-type"><i class="anchor-icon"></i></a>Error Type</h4>
|
||||
<p>A string literal in the form of <code>/[A-Z_0-9]+/</code>, which summarizes the problem. For example, <code>AUTH_KEY_UNREGISTERED</code>. This is an optional parameter.</p>
|
||||
<hr>
|
||||
<h4><a class="anchor" name="error-constructors" href="#error-constructors"><i class="anchor-icon"></i></a>Error Constructors</h4>
|
||||
<h4><a class="anchor" href="#error-constructors" id="error-constructors" name="error-constructors"><i class="anchor-icon"></i></a>Error Constructors</h4>
|
||||
<p>There should be a way to handle errors that are returned in <a href="/mtproto/service_messages#rpc-error">rpc_error</a> constructors.</p>
|
||||
<p>Below is a list of error codes and their meanings:</p>
|
||||
<h3><a class="anchor" name="303-see-other" href="#303-see-other"><i class="anchor-icon"></i></a>303 SEE_OTHER</h3>
|
||||
<h3><a class="anchor" href="#303-see-other" id="303-see-other" name="303-see-other"><i class="anchor-icon"></i></a>303 SEE_OTHER</h3>
|
||||
<p>The request must be repeated, but directed to a different data center.</p>
|
||||
<h4><a class="anchor" name="examples-of-errors" href="#examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4>
|
||||
<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4>
|
||||
<ul>
|
||||
<li>FILE_MIGRATE_X: the file to be accessed is currently stored in a different data center.</li>
|
||||
<li>PHONE_MIGRATE_X: the phone number a user is trying to use for authorization is associated with a different data center.</li>
|
||||
<li>NETWORK_MIGRATE_X: the source IP address is associated with a different data center (for registration)</li>
|
||||
<li>USER_MIGRATE_X: the user whose identity is being used to execute queries is associated with a different data center (for registration)</li>
|
||||
</ul>
|
||||
<p>In all these cases, the error description’s string literal contains the number of the data center (instead of the X) to which the repeated query must be sent.<br><a href="/api/datacenter">More information about redirects between data centers »</a></p>
|
||||
<h3><a class="anchor" name="400-bad-request" href="#400-bad-request"><i class="anchor-icon"></i></a>400 BAD_REQUEST</h3>
|
||||
<p>In all these cases, the error description’s string literal contains the number of the data center (instead of the X) to which the repeated query must be sent.
|
||||
<a href="/api/datacenter">More information about redirects between data centers »</a></p>
|
||||
<h3><a class="anchor" href="#400-bad-request" id="400-bad-request" name="400-bad-request"><i class="anchor-icon"></i></a>400 BAD_REQUEST</h3>
|
||||
<p>The query contains errors. In the event that a request was created using a form and contains user generated data, the user should be notified that the data must be corrected before the query is repeated.</p>
|
||||
<h4><a class="anchor" name="examples-of-errors" href="#examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4>
|
||||
<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4>
|
||||
<ul>
|
||||
<li>FIRSTNAME_INVALID: The first name is invalid</li>
|
||||
<li>LASTNAME_INVALID: The last name is invalid</li>
|
||||
|
@ -83,11 +84,11 @@
|
|||
<li>FIELD_NAME_INVALID: The field with the name FIELD_NAME is invalid</li>
|
||||
<li>FIELD_NAME_EMPTY: The field with the name FIELD_NAME is missing</li>
|
||||
<li>MSG_WAIT_FAILED: A request that must be completed before processing the current request returned an error</li>
|
||||
<li>MSG_WAIT_TIMEOUT: A request that must be completed before processing the current request didn't finish processing yet</li>
|
||||
<li>MSG_WAIT_TIMEOUT: A request that must be completed before processing the current request didn't finish processing yet</li>
|
||||
</ul>
|
||||
<h3><a class="anchor" name="401-unauthorized" href="#401-unauthorized"><i class="anchor-icon"></i></a>401 UNAUTHORIZED</h3>
|
||||
<h3><a class="anchor" href="#401-unauthorized" id="401-unauthorized" name="401-unauthorized"><i class="anchor-icon"></i></a>401 UNAUTHORIZED</h3>
|
||||
<p>There was an unauthorized attempt to use functionality available only to authorized users.</p>
|
||||
<h4><a class="anchor" name="examples-of-errors" href="#examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4>
|
||||
<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4>
|
||||
<ul>
|
||||
<li>AUTH_KEY_UNREGISTERED: The key is not registered in the system</li>
|
||||
<li>AUTH_KEY_INVALID: The key is invalid</li>
|
||||
|
@ -96,24 +97,23 @@
|
|||
<li>SESSION_EXPIRED: The authorization has expired</li>
|
||||
<li>AUTH_KEY_PERM_EMPTY: The method is unavailble for temporary authorization key, not bound to permanent</li>
|
||||
</ul>
|
||||
<h3><a class="anchor" name="403-forbidden" href="#403-forbidden"><i class="anchor-icon"></i></a>403 FORBIDDEN</h3>
|
||||
<h3><a class="anchor" href="#403-forbidden" id="403-forbidden" name="403-forbidden"><i class="anchor-icon"></i></a>403 FORBIDDEN</h3>
|
||||
<p>Privacy violation. For example, an attempt to write a message to someone who has blacklisted the current user.</p>
|
||||
<h3><a class="anchor" name="404-not-found" href="#404-not-found"><i class="anchor-icon"></i></a>404 NOT_FOUND</h3>
|
||||
<h3><a class="anchor" href="#404-not-found" id="404-not-found" name="404-not-found"><i class="anchor-icon"></i></a>404 NOT_FOUND</h3>
|
||||
<p>An attempt to invoke a non-existent object, such as a method.</p>
|
||||
<h3><a class="anchor" name="406-not-acceptable" href="#406-not-acceptable"><i class="anchor-icon"></i></a>406 NOT_ACCEPTABLE</h3>
|
||||
<h3><a class="anchor" href="#406-not-acceptable" id="406-not-acceptable" name="406-not-acceptable"><i class="anchor-icon"></i></a>406 NOT_ACCEPTABLE</h3>
|
||||
<p>Similar to <a href="#400-bad-request">400 BAD_REQUEST</a>, but the app should not display any error messages to user in UI as a result of this response. The error message will be delivered via <a href="/constructor/updateServiceNotification">updateServiceNotification</a> instead.</p>
|
||||
<h3><a class="anchor" name="420-flood" href="#420-flood"><i class="anchor-icon"></i></a>420 FLOOD</h3>
|
||||
<h3><a class="anchor" href="#420-flood" id="420-flood" name="420-flood"><i class="anchor-icon"></i></a>420 FLOOD</h3>
|
||||
<p>The maximum allowed number of attempts to invoke the given method with the given input parameters has been exceeded. For example, in an attempt to request a large number of text messages (SMS) for the same phone number.</p>
|
||||
<h4><a class="anchor" name="error-example" href="#error-example"><i class="anchor-icon"></i></a>Error Example:</h4>
|
||||
<h4><a class="anchor" href="#error-example" id="error-example" name="error-example"><i class="anchor-icon"></i></a>Error Example:</h4>
|
||||
<ul>
|
||||
<li>FLOOD_WAIT_X: A wait of X seconds is required (where X is a number)</li>
|
||||
</ul>
|
||||
<h3><a class="anchor" name="500-internal" href="#500-internal"><i class="anchor-icon"></i></a>500 INTERNAL</h3>
|
||||
<h3><a class="anchor" href="#500-internal" id="500-internal" name="500-internal"><i class="anchor-icon"></i></a>500 INTERNAL</h3>
|
||||
<p>An internal server error occurred while a request was being processed; for example, there was a disruption while accessing a database or file storage.</p>
|
||||
<p>If a client receives a 500 error, or you believe this error should not have occurred, please collect as much information as possible about the query and error and send it to the developers.</p>
|
||||
<h3><a class="anchor" name="other-error-codes" href="#other-error-codes"><i class="anchor-icon"></i></a>Other Error Codes</h3>
|
||||
<p>If a server returns an error with a code other than the ones listed above, it may be considered the same as a 500 error and treated as an <a href="#500-internal">internal server error</a>.</p>
|
||||
</div>
|
||||
<h3><a class="anchor" href="#other-error-codes" id="other-error-codes" name="other-error-codes"><i class="anchor-icon"></i></a>Other Error Codes</h3>
|
||||
<p>If a server returns an error with a code other than the ones listed above, it may be considered the same as a 500 error and treated as an <a href="#500-internal">internal server error</a>.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -140,7 +140,7 @@ The SHA256 hash of the file is computed, and it is passed along with the file's
|
|||
<a href='/method/photos.updateProfilePhoto'>photos.updateProfilePhoto</a>#72d4742c id:<a href='/type/InputPhoto'>InputPhoto</a> = <a href='/type/photos.Photo'>photos.Photo</a>;
|
||||
<a href='/method/photos.uploadProfilePhoto'>photos.uploadProfilePhoto</a>#89f30f69 flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/photos.Photo'>photos.Photo</a>;
|
||||
|
||||
<a href='/method/messages.editChatPhoto'>messages.editChatPhoto</a>#ca4c79d8 chat_id:<a href='/type/int'>int</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/method/messages.editChatPhoto'>messages.editChatPhoto</a>#35ddd674 chat_id:<a href='/type/long'>long</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/Updates'>Updates</a>;
|
||||
|
||||
<a href='/method/channels.editPhoto'>channels.editPhoto</a>#f12e57c9 channel:<a href='/type/InputChannel'>InputChannel</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/Updates'>Updates</a>;</code></pre>
|
||||
<p>User profile pictures can be uploaded using the <a href="/method/photos.updateProfilePhoto">photos.uploadProfilePhoto</a> method: the actual profile picture has to be <a href="#uploading-files">uploaded as for normal files</a>.<br>
|
||||
|
@ -177,23 +177,23 @@ The data for the input parameter of the <a href="/type/InputFileLocation">InputF
|
|||
<a href='/constructor/inputTakeoutFileLocation'>inputTakeoutFileLocation</a>#29be5899 = <a href='/type/InputFileLocation'>InputFileLocation</a>;
|
||||
<a href='/constructor/inputPhotoFileLocation'>inputPhotoFileLocation</a>#40181ffe id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> thumb_size:<a href='/type/string'>string</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
|
||||
<a href='/constructor/inputPhotoLegacyFileLocation'>inputPhotoLegacyFileLocation</a>#d83466f3 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> volume_id:<a href='/type/long'>long</a> local_id:<a href='/type/int'>int</a> secret:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
|
||||
<a href='/constructor/inputPeerPhotoFileLocation'>inputPeerPhotoFileLocation</a>#27d69997 flags:<a href='/type/%23'>#</a> big:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> volume_id:<a href='/type/long'>long</a> local_id:<a href='/type/int'>int</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
|
||||
<a href='/constructor/inputStickerSetThumb'>inputStickerSetThumb</a>#dbaeae9 stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> volume_id:<a href='/type/long'>long</a> local_id:<a href='/type/int'>int</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
|
||||
<a href='/constructor/inputPeerPhotoFileLocation'>inputPeerPhotoFileLocation</a>#37257e99 flags:<a href='/type/%23'>#</a> big:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> photo_id:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
|
||||
<a href='/constructor/inputStickerSetThumb'>inputStickerSetThumb</a>#9d84f3db stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> thumb_version:<a href='/type/int'>int</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
|
||||
|
||||
<a href='/constructor/inputStickerSetEmpty'>inputStickerSetEmpty</a>#ffb62b95 = <a href='/type/InputStickerSet'>InputStickerSet</a>;
|
||||
<a href='/constructor/inputStickerSetID'>inputStickerSetID</a>#9de7a269 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>;
|
||||
<a href='/constructor/inputStickerSetShortName'>inputStickerSetShortName</a>#861cc8a0 short_name:<a href='/type/string'>string</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>;
|
||||
|
||||
<a href='/constructor/inputPeerSelf'>inputPeerSelf</a>#7da07ec9 = <a href='/type/InputPeer'>InputPeer</a>;
|
||||
<a href='/constructor/inputPeerChat'>inputPeerChat</a>#179be863 chat_id:<a href='/type/int'>int</a> = <a href='/type/InputPeer'>InputPeer</a>;
|
||||
<a href='/constructor/inputPeerUser'>inputPeerUser</a>#7b8e7de6 user_id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>;
|
||||
<a href='/constructor/inputPeerChannel'>inputPeerChannel</a>#20adaef8 channel_id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>;
|
||||
<a href='/constructor/inputPeerChat'>inputPeerChat</a>#35a95cb9 chat_id:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>;
|
||||
<a href='/constructor/inputPeerUser'>inputPeerUser</a>#dde8a54c user_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>;
|
||||
<a href='/constructor/inputPeerChannel'>inputPeerChannel</a>#27bcbbfc channel_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>;
|
||||
|
||||
<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>;
|
||||
<a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>;
|
||||
|
||||
<a href='/constructor/photoSize'>photoSize</a>#77bfb61b type:<a href='/type/string'>string</a> location:<a href='/type/FileLocation'>FileLocation</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoCachedSize'>photoCachedSize</a>#e9a734fa type:<a href='/type/string'>string</a> location:<a href='/type/FileLocation'>FileLocation</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;</code></pre>
|
||||
<a href='/constructor/photoSize'>photoSize</a>#75c78e60 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoCachedSize'>photoCachedSize</a>#21e1ad6 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;</code></pre>
|
||||
<ul>
|
||||
<li>
|
||||
<p>For photos, <a href="/constructor/inputPhotoFileLocation">inputPhotoFileLocation</a> is used:</p>
|
||||
|
@ -271,13 +271,13 @@ The file download operation may also return one of the following <a href="/api/e
|
|||
<h4><a class="anchor" href="#handling-audio-video-and-vector-previews" id="handling-audio-video-and-vector-previews" name="handling-audio-video-and-vector-previews"><i class="anchor-icon"></i></a>Handling audio, video and vector previews</h4>
|
||||
<p>Scheme:</p>
|
||||
<pre><code><a href='/constructor/photoSizeEmpty'>photoSizeEmpty</a>#e17e23c type:<a href='/type/string'>string</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoSize'>photoSize</a>#77bfb61b type:<a href='/type/string'>string</a> location:<a href='/type/FileLocation'>FileLocation</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoCachedSize'>photoCachedSize</a>#e9a734fa type:<a href='/type/string'>string</a> location:<a href='/type/FileLocation'>FileLocation</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoSize'>photoSize</a>#75c78e60 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoCachedSize'>photoCachedSize</a>#21e1ad6 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoStrippedSize'>photoStrippedSize</a>#e0b0bc2e type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoSizeProgressive'>photoSizeProgressive</a>#5aa86a51 type:<a href='/type/string'>string</a> location:<a href='/type/FileLocation'>FileLocation</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoSizeProgressive'>photoSizeProgressive</a>#fa3efb95 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
<a href='/constructor/photoPathSize'>photoPathSize</a>#d8214d41 type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;
|
||||
|
||||
<a href='/constructor/videoSize'>videoSize</a>#e831c556 flags:<a href='/type/%23'>#</a> type:<a href='/type/string'>string</a> location:<a href='/type/FileLocation'>FileLocation</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> video_start_ts:flags.0?<a href='/type/double'>double</a> = <a href='/type/VideoSize'>VideoSize</a>;
|
||||
<a href='/constructor/videoSize'>videoSize</a>#de33b094 flags:<a href='/type/%23'>#</a> type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> video_start_ts:flags.0?<a href='/type/double'>double</a> = <a href='/type/VideoSize'>VideoSize</a>;
|
||||
|
||||
<a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>;
|
||||
<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>;
|
||||
|
@ -402,7 +402,7 @@ path += "z"</code></pre>
|
|||
<path d="{$path}"/>
|
||||
</svg></code></pre>
|
||||
<h4><a class="anchor" href="#video-types" id="video-types" name="video-types"><i class="anchor-icon"></i></a>Video types</h4>
|
||||
<pre><code><a href='/constructor/videoSize'>videoSize</a>#e831c556 flags:<a href='/type/%23'>#</a> type:<a href='/type/string'>string</a> location:<a href='/type/FileLocation'>FileLocation</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> video_start_ts:flags.0?<a href='/type/double'>double</a> = <a href='/type/VideoSize'>VideoSize</a>;</code></pre>
|
||||
<pre><code><a href='/constructor/videoSize'>videoSize</a>#de33b094 flags:<a href='/type/%23'>#</a> type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> video_start_ts:flags.0?<a href='/type/double'>double</a> = <a href='/type/VideoSize'>VideoSize</a>;</code></pre>
|
||||
<p>A <a href="/constructor/videoSize">videoSize</a> constructor is typically used for [animated profile pictures]() and video previews.</p>
|
||||
<table class="table">
|
||||
<thead>
|
||||
|
|
|
@ -41,41 +41,41 @@
|
|||
|
||||
<div id="dev_page_content"><!-- scroll_nav -->
|
||||
|
||||
<h3><a class="anchor" name="layers" href="#layers"><i class="anchor-icon"></i></a>Layers</h3>
|
||||
<h3><a class="anchor" href="#layers" id="layers" name="layers"><i class="anchor-icon"></i></a>Layers</h3>
|
||||
<p>Versioning in the API is supported by so-called TL layers.</p>
|
||||
<p>The need to add a new object constructor or to add/remove a field in a constructor creates a backwards compatibility problem for previous versions of API clients. After all, simply changing a constructor in a schema also changes its number. To address this problem, each schema update is separated into a layer.</p>
|
||||
<p>A layer is a collection of updated methods or constructors in a TL schema. Each layer is numbered with sequentially increasing numbers starting with 2. The first layer is the base layer — the TL schema without any changes.</p>
|
||||
<p>A layer is a collection of updated methods or constructors in a TL schema. Each layer is numbered with sequentially increasing numbers starting with 2. The first layer is the base layer -- the TL schema without any changes.</p>
|
||||
<p>There is a helper method to let the API know that a client supports the Layer <code>layer</code>:</p>
|
||||
<pre><code>invokeWithLayer#da9b0d0d {X:Type} layer:int query:!X = X;</code></pre>
|
||||
<p>The helper method <strong><a href="/method/invokeWithLayer">invokeWithLayer</a></strong> can be used only together with <a href="/method/initConnection">initConnection</a>: the present layer will be saved with all other parameters of the client and any future requests will be using this saved value. <a href="#saving-client-info">See more below</a>.</p>
|
||||
<h4><a class="anchor" name="list-of-available-layers" href="#list-of-available-layers"><i class="anchor-icon"></i></a><a href="/api/layers">List of Available Layers</a></h4>
|
||||
<h3><a class="anchor" name="saving-client-info" href="#saving-client-info"><i class="anchor-icon"></i></a>Saving Client Info</h3>
|
||||
<h4><a class="anchor" href="#list-of-available-layers" id="list-of-available-layers" name="list-of-available-layers"><i class="anchor-icon"></i></a><a href="/api/layers">List of Available Layers</a></h4>
|
||||
<h3><a class="anchor" href="#saving-client-info" id="saving-client-info" name="saving-client-info"><i class="anchor-icon"></i></a>Saving Client Info</h3>
|
||||
<p>It is possible to save information about the current client on the server in conjunction with an authorization key. This may help eliminate client-side problems with certain releases on certain devices or with certain localizations, as well as eliminate the need for sending layer information in each request.</p>
|
||||
<p>The helper method <strong><a href="/method/initConnection">initConnection</a></strong> accepts client parameters. This method must be called when first calling the API after the application has restarted or in case the value of one of the parameters could have changed.</p>
|
||||
<p><strong>initConnection</strong> must also be called after each <a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</a>.</p>
|
||||
<p>When calling this method, the current layer used by the client is also saved (the layer in which <a href="/method/initConnection">initConnection</a> was wrapped is used). After a successful call to <a href="/method/initConnection">initConnection</a> it is no longer necessary to wrap each API call in <strong>invokeWithLayerN</strong>.</p>
|
||||
<h3><a class="anchor" name="disabling-updates" href="#disabling-updates"><i class="anchor-icon"></i></a>Disabling updates</h3>
|
||||
<h3><a class="anchor" href="#disabling-updates" id="disabling-updates" name="disabling-updates"><i class="anchor-icon"></i></a>Disabling updates</h3>
|
||||
<pre><code>invokeWithoutUpdates#bf9459b7 {X:Type} query:!X = X;</code></pre>
|
||||
<p><a href="/method/invokeWithoutUpdates">invokeWithoutUpdates</a> can be used to invoke a request without subscribing the used connection for <a href="/api/updates">updates</a> (this is enabled by default for <a href="/api/files">file queries</a>).</p>
|
||||
<h3><a class="anchor" name="sequential-requests" href="#sequential-requests"><i class="anchor-icon"></i></a>Sequential Requests</h3>
|
||||
<h3><a class="anchor" href="#sequential-requests" id="sequential-requests" name="sequential-requests"><i class="anchor-icon"></i></a>Sequential Requests</h3>
|
||||
<p>By default, the server processes parallel requests in arbitrary order. Two helper methods exist for cases when the client needs certain requests to be processed in a certain order and intends to send a new request before the previous one is completed:</p>
|
||||
<div class="richcode">
|
||||
<p><a href="/method/invokeAfterMsg">invokeAfterMsg</a>#cb9f372d {X:Type} msg_id:long query:!X = X;<br><a href="/method/invokeAfterMsgs">invokeAfterMsgs</a>#3dc4b4f0 {X:Type} msg_ids:Vector<long> query:!X = X;</p>
|
||||
<p><a href="/method/invokeAfterMsg">invokeAfterMsg</a>#cb9f372d {X:Type} msg_id:long query:!X = X;<br>
|
||||
<a href="/method/invokeAfterMsgs">invokeAfterMsgs</a>#3dc4b4f0 {X:Type} msg_ids:Vector<long> query:!X = X; </long></p>
|
||||
</div>
|
||||
<p>They may be used, for example, when a client attempts to send messages that accumulated while waiting for the Internet connection to be restored for a long time. In this case, the 32-bit number <code>0xcb9f372d</code> must be added before the method number in each request, followed by a 64-bit message identifier, msg_id, which contains the previous request in the queue. </p>
|
||||
<p>The second method is similar, except it takes several messages that must be successfully processed before the current one.</p>
|
||||
<p>If the waiting period exceeds 0.5 seconds (this value may change in the future) and no result has appeared, the method will return the <a href="/api/errors#400-bad-request">400 MSG_WAIT_TIMEOUT</a> error.</p>
|
||||
<h4><a class="anchor" name="helper-method-sequence" href="#helper-method-sequence"><i class="anchor-icon"></i></a>Helper Method Sequence</h4>
|
||||
<h4><a class="anchor" href="#helper-method-sequence" id="helper-method-sequence" name="helper-method-sequence"><i class="anchor-icon"></i></a>Helper Method Sequence</h4>
|
||||
<p><strong>Important:</strong> if the helper methods <strong>invokeAfterMsg</strong> / <strong>invokeAfterMsgs</strong> are used together with <strong>invokeWithLayerN</strong> or other helper methods, <strong>invokeAfterMsg</strong> / <strong>invokeAfterMsgs</strong> must always be the outermost wrapper.</p>
|
||||
<h3><a class="anchor" name="data-compression" href="#data-compression"><i class="anchor-icon"></i></a>Data Compression</h3>
|
||||
<h3><a class="anchor" href="#data-compression" id="data-compression" name="data-compression"><i class="anchor-icon"></i></a>Data Compression</h3>
|
||||
<p>We recommend using gzip compression when calling methods to reduce the amount of network traffic.</p>
|
||||
<p>The schema and constructor information are given in the <a href="/mtproto/service_messages#packed-object">protocol documentation</a>.</p>
|
||||
<h4><a class="anchor" name="data-compression-when-making-a-request" href="#data-compression-when-making-a-request"><i class="anchor-icon"></i></a>Data Compression when Making a Request</h4>
|
||||
<h4><a class="anchor" href="#data-compression-when-making-a-request" id="data-compression-when-making-a-request" name="data-compression-when-making-a-request"><i class="anchor-icon"></i></a>Data Compression when Making a Request</h4>
|
||||
<p>Before transmitting a query, the string containing the entire body of the serialized high-level query (starting with the method number) must be compressed using gzip. If the resulting string is smaller than the original, it makes sense to transmit the <a href="/mtproto/service_messages#pakovannyy-obekt">gzip_packed</a> constructor.</p>
|
||||
<p>There is no point in doing the above when transmitting binary multimedia data (photos, videos) or small messages (up to 255 bytes).</p>
|
||||
<h4><a class="anchor" name="uncompressing-data" href="#uncompressing-data"><i class="anchor-icon"></i></a>Uncompressing Data</h4>
|
||||
<p>By default, the server compresses the response to any request as well as <a href="/api/updates">updates</a>, in accordance with the rules stated above. If the <a href="/mtproto/service_messages#packed-object">gzip_packed</a> constructor is received as a response in rpc_result, then the string that follows must be extracted and uncompressed. Processing then continues on the resulting new string.</p>
|
||||
</div>
|
||||
<h4><a class="anchor" href="#uncompressing-data" id="uncompressing-data" name="uncompressing-data"><i class="anchor-icon"></i></a>Uncompressing Data</h4>
|
||||
<p>By default, the server compresses the response to any request as well as <a href="/api/updates">updates</a>, in accordance with the rules stated above. If the <a href="/mtproto/service_messages#packed-object">gzip_packed</a> constructor is received as a response in rpc_result, then the string that follows must be extracted and uncompressed. Processing then continues on the resulting new string.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -44,6 +44,988 @@ Layer…">
|
|||
<div id="dev_page_content"><!-- scroll_nav -->
|
||||
|
||||
<p>Below you will find information on scheme changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p>
|
||||
<h3><a class="anchor" href="#layer-133" id="layer-133" name="layer-133"><i class="anchor-icon"></i></a><a href="/schema?layer=133">Layer 133</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/messages.getMessageReadParticipants">messages.getMessageReadParticipants</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/auth.importAuthorization">auth.importAuthorization</a></li>
|
||||
<li>Changed type of <strong>other_uids</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/method/account.registerDevice">account.registerDevice</a></li>
|
||||
<li>Changed type of <strong>other_uids</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/method/account.unregisterDevice">account.unregisterDevice</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/account.getWallPapers">account.getWallPapers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/contacts.getContactIDs">contacts.getContactIDs</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/contacts.getContacts">contacts.getContacts</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getDialogs">messages.getDialogs</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getHistory">messages.getHistory</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.search">messages.search</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/method/messages.getChats">messages.getChats</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getFullChat">messages.getFullChat</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.editChatTitle">messages.editChatTitle</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.editChatPhoto">messages.editChatPhoto</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.addChatUser">messages.addChatUser</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.deleteChatUser">messages.deleteChatUser</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getStickers">messages.getStickers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getAllStickers">messages.getAllStickers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/channels.getParticipants">channels.getParticipants</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.editChatAdmin">messages.editChatAdmin</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.migrateChat">messages.migrateChat</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getSavedGifs">messages.getSavedGifs</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/contacts.getTopPeers">contacts.getTopPeers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getFeaturedStickers">messages.getFeaturedStickers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getRecentStickers">messages.getRecentStickers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getMaskStickers">messages.getMaskStickers</a></li>
|
||||
<li>Changed type of <strong>max_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getCommonChats">messages.getCommonChats</a></li>
|
||||
<li>Changed type of <strong>except_ids</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/method/messages.getAllChats">messages.getAllChats</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getFavedStickers">messages.getFavedStickers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getRecentLocations">messages.getRecentLocations</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.searchStickerSets">messages.searchStickerSets</a></li>
|
||||
<li>Changed type of <strong>bot_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/account.getAuthorizationForm">account.getAuthorizationForm</a></li>
|
||||
<li>Changed type of <strong>bot_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/account.acceptAuthorization">account.acceptAuthorization</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getScheduledHistory">messages.getScheduledHistory</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/account.getThemes">account.getThemes</a></li>
|
||||
<li>Changed type of <strong>except_ids</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getOldFeaturedStickers">messages.getOldFeaturedStickers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.getReplies">messages.getReplies</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/method/messages.deleteChat">messages.deleteChat</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/inputBotInlineMessageID64">inputBotInlineMessageID64</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputPeerChat">inputPeerChat</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/peerUser">peerUser</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/peerChat">peerChat</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/userEmpty">userEmpty</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatEmpty">chatEmpty</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chat">chat</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatForbidden">chatForbidden</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatFull">chatFull</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>inviter_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatParticipant">chatParticipant</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatParticipantsForbidden">chatParticipantsForbidden</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatParticipants">chatParticipants</a></li>
|
||||
<li>Changed type of <strong>via_bot_id</strong> from <strong>flags.11?int</strong> to <strong>flags.11?long</strong> in <a href="/constructor/message">message</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageMediaContact">messageMediaContact</a></li>
|
||||
<li>Changed type of <strong>users</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/messageActionChatCreate">messageActionChatCreate</a></li>
|
||||
<li>Changed type of <strong>users</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/messageActionChatAddUser">messageActionChatAddUser</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageActionChatDeleteUser">messageActionChatDeleteUser</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/auth.exportedAuthorization">auth.exportedAuthorization</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/contact">contact</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/importedContact">importedContact</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/contactStatus">contactStatus</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateUserTyping">updateUserTyping</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChatUserTyping">updateChatUserTyping</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateUserStatus">updateUserStatus</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateUserName">updateUserName</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateUserPhoto">updateUserPhoto</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>via_bot_id</strong> from <strong>flags.11?int</strong> to <strong>flags.11?long</strong> in <a href="/constructor/updateShortMessage">updateShortMessage</a></li>
|
||||
<li>Changed type of <strong>from_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>via_bot_id</strong> from <strong>flags.11?int</strong> to <strong>flags.11?long</strong> in <a href="/constructor/updateShortChatMessage">updateShortChatMessage</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>participant_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/encryptedChatWaiting">encryptedChatWaiting</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>participant_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>participant_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/encryptedChat">encryptedChat</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>inviter_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChatParticipantAdd">updateChatParticipantAdd</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChatParticipantDelete">updateChatParticipantDelete</a></li>
|
||||
<li>Changed type of <strong>users</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/privacyValueAllowUsers">privacyValueAllowUsers</a></li>
|
||||
<li>Changed type of <strong>users</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/privacyValueDisallowUsers">privacyValueDisallowUsers</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateUserPhone">updateUserPhone</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messages.stickers">messages.stickers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messages.allStickers">messages.allStickers</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatInviteExported">chatInviteExported</a></li>
|
||||
<li>Changed type of <strong>inviter_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageActionChatJoinedByLink">messageActionChatJoinedByLink</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/user">user</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/botInfo">botInfo</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputPeerUser">inputPeerUser</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputUser">inputUser</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputChannel">inputChannel</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/peerChannel">peerChannel</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputPeerChannel">inputPeerChannel</a></li>
|
||||
<li>Removed <strong>version</strong> parameter, changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channel">channel</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channelForbidden">channelForbidden</a></li>
|
||||
<li>Changed type of <strong>id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>migrated_from_chat_id</strong> from <strong>flags.4?int</strong> to <strong>flags.4?long</strong>, <strong>linked_chat_id</strong> from <strong>flags.14?int</strong> to <strong>flags.14?long</strong> in <a href="/constructor/channelFull">channelFull</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannelTooLong">updateChannelTooLong</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannel">updateChannel</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateReadChannelInbox">updateReadChannelInbox</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateDeleteChannelMessages">updateDeleteChannelMessages</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannelMessageViews">updateChannelMessageViews</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channelParticipant">channelParticipant</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>inviter_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channelParticipantSelf">channelParticipantSelf</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channelParticipantCreator">channelParticipantCreator</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatParticipantCreator">chatParticipantCreator</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>inviter_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatParticipantAdmin">chatParticipantAdmin</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChatParticipantAdmin">updateChatParticipantAdmin</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageActionChatMigrateTo">messageActionChatMigrateTo</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageActionChannelMigrateFrom">messageActionChannelMigrateFrom</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messages.savedGifs">messages.savedGifs</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateBotInlineQuery">updateBotInlineQuery</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateBotInlineSend">updateBotInlineSend</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateBotCallbackQuery">updateBotCallbackQuery</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageEntityMentionName">messageEntityMentionName</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateReadChannelOutbox">updateReadChannelOutbox</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messages.recentStickers">messages.recentStickers</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/highScore">highScore</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannelWebPage">updateChannelWebPage</a></li>
|
||||
<li>Changed type of <strong>bot_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>provider_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/payments.paymentForm">payments.paymentForm</a></li>
|
||||
<li>Changed type of <strong>bot_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>provider_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/payments.paymentReceipt">payments.paymentReceipt</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateBotShippingQuery">updateBotShippingQuery</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateBotPrecheckoutQuery">updateBotPrecheckoutQuery</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>participant_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/phoneCallWaiting">phoneCallWaiting</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>participant_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/phoneCallRequested">phoneCallRequested</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>participant_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/phoneCallAccepted">phoneCallAccepted</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>participant_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/phoneCall">phoneCall</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>inviter_id</strong> from <strong>flags.1?int</strong> to <strong>flags.1?long</strong>, <strong>promoted_by</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channelParticipantAdmin">channelParticipantAdmin</a></li>
|
||||
<li>Changed type of <strong>kicked_by</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channelParticipantBanned">channelParticipantBanned</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channelAdminLogEvent">channelAdminLogEvent</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messages.favedStickers">messages.favedStickers</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannelReadMessagesContents">updateChannelReadMessagesContents</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannelAvailableMessages">updateChannelAvailableMessages</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/recentMeUrlUser">recentMeUrlUser</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/recentMeUrlChat">recentMeUrlChat</a></li>
|
||||
<li>Changed type of <strong>bot_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/webAuthorization">webAuthorization</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a></li>
|
||||
<li>Changed type of <strong>recent_voters</strong> from <strong>flags.3?Vector<int></strong> to <strong>flags.3?Vector<long></strong> in <a href="/constructor/pollResults">pollResults</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/account.wallPapers">account.wallPapers</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputUserFromMessage">inputUserFromMessage</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputChannelFromMessage">inputChannelFromMessage</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputPeerUserFromMessage">inputPeerUserFromMessage</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/inputPeerChannelFromMessage">inputPeerChannelFromMessage</a></li>
|
||||
<li>Changed type of <strong>prev_value</strong> from <strong>int</strong> to <strong>long</strong>, <strong>new_value</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/channelAdminLogEventActionChangeLinkedChat">channelAdminLogEventActionChangeLinkedChat</a></li>
|
||||
<li>Changed type of <strong>chats</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/inputPrivacyValueAllowChatParticipants">inputPrivacyValueAllowChatParticipants</a></li>
|
||||
<li>Changed type of <strong>chats</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/inputPrivacyValueDisallowChatParticipants">inputPrivacyValueDisallowChatParticipants</a></li>
|
||||
<li>Changed type of <strong>chats</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/privacyValueAllowChatParticipants">privacyValueAllowChatParticipants</a></li>
|
||||
<li>Changed type of <strong>chats</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/privacyValueDisallowChatParticipants">privacyValueDisallowChatParticipants</a></li>
|
||||
<li>Changed type of <strong>hash</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/account.themes">account.themes</a></li>
|
||||
<li>Added <strong>outbox_accent_color</strong> parameter in <a href="/constructor/inputThemeSettings">inputThemeSettings</a></li>
|
||||
<li>Added <strong>outbox_accent_color</strong> parameter in <a href="/constructor/themeSettings">themeSettings</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateMessagePollVote">updateMessagePollVote</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageUserVote">messageUserVote</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageUserVoteInputOption">messageUserVoteInputOption</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/messageUserVoteMultiple">messageUserVoteMultiple</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/statsGroupTopPoster">statsGroupTopPoster</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/statsGroupTopAdmin">statsGroupTopAdmin</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/statsGroupTopInviter">statsGroupTopInviter</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannelMessageForwards">updateChannelMessageForwards</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>broadcast_id</strong> from <strong>flags.0?int</strong> to <strong>flags.0?long</strong> in <a href="/constructor/updateReadChannelDiscussionInbox">updateReadChannelDiscussionInbox</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateReadChannelDiscussionOutbox">updateReadChannelDiscussionOutbox</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>flags.0?int</strong> to <strong>flags.0?long</strong> in <a href="/constructor/messageReplies">messageReplies</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a></li>
|
||||
<li>Changed type of <strong>users</strong> from <strong>Vector<int></strong> to <strong>Vector<long></strong> in <a href="/constructor/messageActionInviteToGroupCall">messageActionInviteToGroupCall</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChat">updateChat</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateGroupCall">updateGroupCall</a></li>
|
||||
<li>Changed type of <strong>chat_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>actor_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChatParticipant">updateChatParticipant</a></li>
|
||||
<li>Changed type of <strong>channel_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>actor_id</strong> from <strong>int</strong> to <strong>long</strong>, <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateChannelParticipant">updateChannelParticipant</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateBotStopped">updateBotStopped</a></li>
|
||||
<li>Changed type of <strong>user_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatInviteImporter">chatInviteImporter</a></li>
|
||||
<li>Changed type of <strong>admin_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/chatAdminWithInvites">chatAdminWithInvites</a></li>
|
||||
<li>Changed type of <strong>bot_id</strong> from <strong>int</strong> to <strong>long</strong> in <a href="/constructor/updateBotCommands">updateBotCommands</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/inputPeerChat">inputPeerChat</a>#35a95cb9 chat_id:<a href="/type/long">long</a> = <a href="/type/InputPeer">InputPeer</a>;<br>
|
||||
<a href="/constructor/peerUser">peerUser</a>#59511722 user_id:<a href="/type/long">long</a> = <a href="/type/Peer">Peer</a>;
|
||||
<a href="/constructor/peerChat">peerChat</a>#36c6019a chat_id:<a href="/type/long">long</a> = <a href="/type/Peer">Peer</a>;<br>
|
||||
<a href="/constructor/userEmpty">userEmpty</a>#d3bc4b7a id:<a href="/type/long">long</a> = <a href="/type/User">User</a>;<br>
|
||||
<a href="/constructor/chatEmpty">chatEmpty</a>#29562865 id:<a href="/type/long">long</a> = <a href="/type/Chat">Chat</a>;
|
||||
<a href="/constructor/chat">chat</a>#41cbf256 flags:<a href="/type/%23">#</a> creator:flags.0?<a href="/constructor/true">true</a> kicked:flags.1?<a href="/constructor/true">true</a> left:flags.2?<a href="/constructor/true">true</a> deactivated:flags.5?<a href="/constructor/true">true</a> call_active:flags.23?<a href="/constructor/true">true</a> call_not_empty:flags.24?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> title:<a href="/type/string">string</a> photo:<a href="/type/ChatPhoto">ChatPhoto</a> participants_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> version:<a href="/type/int">int</a> migrated_to:flags.6?<a href="/type/InputChannel">InputChannel</a> admin_rights:flags.14?<a href="/type/ChatAdminRights">ChatAdminRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights">ChatBannedRights</a> = <a href="/type/Chat">Chat</a>;
|
||||
<a href="/constructor/chatForbidden">chatForbidden</a>#6592a1a7 id:<a href="/type/long">long</a> title:<a href="/type/string">string</a> = <a href="/type/Chat">Chat</a>;
|
||||
<a href="/constructor/chatFull">chatFull</a>#4dbdc099 flags:<a href="/type/%23">#</a> can_set_username:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.8?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> about:<a href="/type/string">string</a> participants:<a href="/type/ChatParticipants">ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.13?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> pinned_msg_id:flags.6?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> call:flags.12?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.14?<a href="/type/int">int</a> groupcall_default_join_as:flags.15?<a href="/type/Peer">Peer</a> theme_emoticon:flags.16?<a href="/type/string">string</a> = <a href="/type/ChatFull">ChatFull</a>;
|
||||
<a href="/constructor/chatParticipant">chatParticipant</a>#c02d4007 user_id:<a href="/type/long">long</a> inviter_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> = <a href="/type/ChatParticipant">ChatParticipant</a>;
|
||||
<a href="/constructor/chatParticipantsForbidden">chatParticipantsForbidden</a>#8763d3e1 flags:<a href="/type/%23">#</a> chat_id:<a href="/type/long">long</a> self_participant:flags.0?<a href="/type/ChatParticipant">ChatParticipant</a> = <a href="/type/ChatParticipants">ChatParticipants</a>;
|
||||
<a href="/constructor/chatParticipants">chatParticipants</a>#3cbc93f8 chat_id:<a href="/type/long">long</a> participants:<a href="/type/Vector%20t">Vector</a><<a href="/type/ChatParticipant">ChatParticipant</a>> version:<a href="/type/int">int</a> = <a href="/type/ChatParticipants">ChatParticipants</a>;<br>
|
||||
<a href="/constructor/message">message</a>#85d6cbe2 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> from_scheduled:flags.18?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> edit_hide:flags.21?<a href="/constructor/true">true</a> pinned:flags.24?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> peer_id:<a href="/type/Peer">Peer</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long">long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> message:<a href="/type/string">string</a> media:flags.9?<a href="/type/MessageMedia">MessageMedia</a> reply_markup:flags.6?<a href="/type/ReplyMarkup">ReplyMarkup</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> views:flags.10?<a href="/type/int">int</a> forwards:flags.10?<a href="/type/int">int</a> replies:flags.23?<a href="/type/MessageReplies">MessageReplies</a> edit_date:flags.15?<a href="/type/int">int</a> post_author:flags.16?<a href="/type/string">string</a> grouped_id:flags.17?<a href="/type/long">long</a> restriction_reason:flags.22?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> ttl_period:flags.25?<a href="/type/int">int</a> = <a href="/type/Message">Message</a>;
|
||||
<a href="/constructor/messageMediaContact">messageMediaContact</a>#70322949 phone_number:<a href="/type/string">string</a> first_name:<a href="/type/string">string</a> last_name:<a href="/type/string">string</a> vcard:<a href="/type/string">string</a> user_id:<a href="/type/long">long</a> = <a href="/type/MessageMedia">MessageMedia</a>;
|
||||
<a href="/constructor/messageActionChatCreate">messageActionChatCreate</a>#bd47cbad title:<a href="/type/string">string</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/MessageAction">MessageAction</a>;
|
||||
<a href="/constructor/messageActionChatAddUser">messageActionChatAddUser</a>#15cefd00 users:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/MessageAction">MessageAction</a>;
|
||||
<a href="/constructor/messageActionChatDeleteUser">messageActionChatDeleteUser</a>#a43f30cc user_id:<a href="/type/long">long</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
||||
<a href="/constructor/auth.exportedAuthorization">auth.exportedAuthorization</a>#b434e2b8 id:<a href="/type/long">long</a> bytes:<a href="/type/bytes">bytes</a> = <a href="/type/auth.ExportedAuthorization">auth.ExportedAuthorization</a>;<br>
|
||||
<a href="/constructor/contact">contact</a>#145ade0b user_id:<a href="/type/long">long</a> mutual:<a href="/type/Bool">Bool</a> = <a href="/type/Contact">Contact</a>;<br>
|
||||
<a href="/constructor/importedContact">importedContact</a>#c13e3c50 user_id:<a href="/type/long">long</a> client_id:<a href="/type/long">long</a> = <a href="/type/ImportedContact">ImportedContact</a>;<br>
|
||||
<a href="/constructor/contactStatus">contactStatus</a>#16d9703b user_id:<a href="/type/long">long</a> status:<a href="/type/UserStatus">UserStatus</a> = <a href="/type/ContactStatus">ContactStatus</a>;<br>
|
||||
<a href="/constructor/updateUserTyping">updateUserTyping</a>#c01e857f user_id:<a href="/type/long">long</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChatUserTyping">updateChatUserTyping</a>#83487af0 chat_id:<a href="/type/long">long</a> from_id:<a href="/type/Peer">Peer</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateUserStatus">updateUserStatus</a>#e5bdf8de user_id:<a href="/type/long">long</a> status:<a href="/type/UserStatus">UserStatus</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateUserName">updateUserName</a>#c3f202e0 user_id:<a href="/type/long">long</a> first_name:<a href="/type/string">string</a> last_name:<a href="/type/string">string</a> username:<a href="/type/string">string</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateUserPhoto">updateUserPhoto</a>#f227868c user_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> photo:<a href="/type/UserProfilePhoto">UserProfilePhoto</a> previous:<a href="/type/Bool">Bool</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateShortMessage">updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> user_id:<a href="/type/long">long</a> message:<a href="/type/string">string</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long">long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> ttl_period:flags.25?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/constructor/updateShortChatMessage">updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:<a href="/type/long">long</a> chat_id:<a href="/type/long">long</a> message:<a href="/type/string">string</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long">long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> ttl_period:flags.25?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/constructor/encryptedChatWaiting">encryptedChatWaiting</a>#66b25953 id:<a href="/type/int">int</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/long">long</a> participant_id:<a href="/type/long">long</a> = <a href="/type/EncryptedChat">EncryptedChat</a>;
|
||||
<a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>#48f1d94c flags:<a href="/type/%23">#</a> folder_id:flags.0?<a href="/type/int">int</a> id:<a href="/type/int">int</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/long">long</a> participant_id:<a href="/type/long">long</a> g_a:<a href="/type/bytes">bytes</a> = <a href="/type/EncryptedChat">EncryptedChat</a>;
|
||||
<a href="/constructor/encryptedChat">encryptedChat</a>#61f0d4c7 id:<a href="/type/int">int</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/long">long</a> participant_id:<a href="/type/long">long</a> g_a_or_b:<a href="/type/bytes">bytes</a> key_fingerprint:<a href="/type/long">long</a> = <a href="/type/EncryptedChat">EncryptedChat</a>;<br>
|
||||
<a href="/constructor/updateChatParticipantAdd">updateChatParticipantAdd</a>#3dda5451 chat_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> inviter_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> version:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChatParticipantDelete">updateChatParticipantDelete</a>#e32f3d77 chat_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> version:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/privacyValueAllowUsers">privacyValueAllowUsers</a>#b8905fb2 users:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/PrivacyRule">PrivacyRule</a>;
|
||||
<a href="/constructor/privacyValueDisallowUsers">privacyValueDisallowUsers</a>#e4621141 users:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/PrivacyRule">PrivacyRule</a>;<br>
|
||||
<a href="/constructor/updateUserPhone">updateUserPhone</a>#05492a13 user_id:<a href="/type/long">long</a> phone:<a href="/type/string">string</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/messages.stickers">messages.stickers</a>#30a6ec7e hash:<a href="/type/long">long</a> stickers:<a href="/type/Vector%20t">Vector</a><<a href="/type/Document">Document</a>> = <a href="/type/messages.Stickers">messages.Stickers</a>;
|
||||
<a href="/constructor/messages.allStickers">messages.allStickers</a>#cdbbcebb hash:<a href="/type/long">long</a> sets:<a href="/type/Vector%20t">Vector</a><<a href="/type/StickerSet">StickerSet</a>> = <a href="/type/messages.AllStickers">messages.AllStickers</a>;<br>
|
||||
<a href="/constructor/chatInviteExported">chatInviteExported</a>#b18105e8 flags:<a href="/type/%23">#</a> revoked:flags.0?<a href="/constructor/true">true</a> permanent:flags.5?<a href="/constructor/true">true</a> link:<a href="/type/string">string</a> admin_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> start_date:flags.4?<a href="/type/int">int</a> expire_date:flags.1?<a href="/type/int">int</a> usage_limit:flags.2?<a href="/type/int">int</a> usage:flags.3?<a href="/type/int">int</a> = <a href="/type/ExportedChatInvite">ExportedChatInvite</a>;<br>
|
||||
<a href="/constructor/messageActionChatJoinedByLink">messageActionChatJoinedByLink</a>#031224c3 inviter_id:<a href="/type/long">long</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
||||
<a href="/constructor/user">user</a>#3ff6ecb0 flags:<a href="/type/%23">#</a> self:flags.10?<a href="/constructor/true">true</a> contact:flags.11?<a href="/constructor/true">true</a> mutual_contact:flags.12?<a href="/constructor/true">true</a> deleted:flags.13?<a href="/constructor/true">true</a> bot:flags.14?<a href="/constructor/true">true</a> bot_chat_history:flags.15?<a href="/constructor/true">true</a> bot_nochats:flags.16?<a href="/constructor/true">true</a> verified:flags.17?<a href="/constructor/true">true</a> restricted:flags.18?<a href="/constructor/true">true</a> min:flags.20?<a href="/constructor/true">true</a> bot_inline_geo:flags.21?<a href="/constructor/true">true</a> support:flags.23?<a href="/constructor/true">true</a> scam:flags.24?<a href="/constructor/true">true</a> apply_min_photo:flags.25?<a href="/constructor/true">true</a> fake:flags.26?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:flags.0?<a href="/type/long">long</a> first_name:flags.1?<a href="/type/string">string</a> last_name:flags.2?<a href="/type/string">string</a> username:flags.3?<a href="/type/string">string</a> phone:flags.4?<a href="/type/string">string</a> photo:flags.5?<a href="/type/UserProfilePhoto">UserProfilePhoto</a> status:flags.6?<a href="/type/UserStatus">UserStatus</a> bot_info_version:flags.14?<a href="/type/int">int</a> restriction_reason:flags.18?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href="/type/string">string</a> lang_code:flags.22?<a href="/type/string">string</a> = <a href="/type/User">User</a>;<br>
|
||||
<a href="/constructor/botInfo">botInfo</a>#1b74b335 user_id:<a href="/type/long">long</a> description:<a href="/type/string">string</a> commands:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotCommand">BotCommand</a>> = <a href="/type/BotInfo">BotInfo</a>;<br>
|
||||
<a href="/constructor/inputPeerUser">inputPeerUser</a>#dde8a54c user_id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> = <a href="/type/InputPeer">InputPeer</a>;
|
||||
<a href="/constructor/inputUser">inputUser</a>#f21158c6 user_id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> = <a href="/type/InputUser">InputUser</a>;
|
||||
<a href="/constructor/inputChannel">inputChannel</a>#f35aec28 channel_id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> = <a href="/type/InputChannel">InputChannel</a>;<br>
|
||||
<a href="/constructor/peerChannel">peerChannel</a>#a2a5371e channel_id:<a href="/type/long">long</a> = <a href="/type/Peer">Peer</a>;<br>
|
||||
<a href="/constructor/inputPeerChannel">inputPeerChannel</a>#27bcbbfc channel_id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> = <a href="/type/InputPeer">InputPeer</a>;<br>
|
||||
<a href="/constructor/channel">channel</a>#8261ac61 flags:<a href="/type/%23">#</a> creator:flags.0?<a href="/constructor/true">true</a> left:flags.2?<a href="/constructor/true">true</a> broadcast:flags.5?<a href="/constructor/true">true</a> verified:flags.7?<a href="/constructor/true">true</a> megagroup:flags.8?<a href="/constructor/true">true</a> restricted:flags.9?<a href="/constructor/true">true</a> signatures:flags.11?<a href="/constructor/true">true</a> min:flags.12?<a href="/constructor/true">true</a> scam:flags.19?<a href="/constructor/true">true</a> has_link:flags.20?<a href="/constructor/true">true</a> has_geo:flags.21?<a href="/constructor/true">true</a> slowmode_enabled:flags.22?<a href="/constructor/true">true</a> call_active:flags.23?<a href="/constructor/true">true</a> call_not_empty:flags.24?<a href="/constructor/true">true</a> fake:flags.25?<a href="/constructor/true">true</a> gigagroup:flags.26?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:flags.13?<a href="/type/long">long</a> title:<a href="/type/string">string</a> username:flags.6?<a href="/type/string">string</a> photo:<a href="/type/ChatPhoto">ChatPhoto</a> date:<a href="/type/int">int</a> restriction_reason:flags.9?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> admin_rights:flags.14?<a href="/type/ChatAdminRights">ChatAdminRights</a> banned_rights:flags.15?<a href="/type/ChatBannedRights">ChatBannedRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights">ChatBannedRights</a> participants_count:flags.17?<a href="/type/int">int</a> = <a href="/type/Chat">Chat</a>;
|
||||
<a href="/constructor/channelForbidden">channelForbidden</a>#17d493d5 flags:<a href="/type/%23">#</a> broadcast:flags.5?<a href="/constructor/true">true</a> megagroup:flags.8?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> title:<a href="/type/string">string</a> until_date:flags.16?<a href="/type/int">int</a> = <a href="/type/Chat">Chat</a>;
|
||||
<a href="/constructor/channelFull">channelFull</a>#e9b27a17 flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> can_view_stats:flags.20?<a href="/constructor/true">true</a> blocked:flags.22?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.23?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> migrated_from_chat_id:flags.4?<a href="/type/long">long</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/long">long</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> call:flags.21?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.24?<a href="/type/int">int</a> pending_suggestions:flags.25?<a href="/type/Vector%20t">Vector</a><<a href="/type/string">string</a>> groupcall_default_join_as:flags.26?<a href="/type/Peer">Peer</a> theme_emoticon:flags.27?<a href="/type/string">string</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/updateChannelTooLong">updateChannelTooLong</a>#108d941f flags:<a href="/type/%23">#</a> channel_id:<a href="/type/long">long</a> pts:flags.0?<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChannel">updateChannel</a>#635b4c09 channel_id:<a href="/type/long">long</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateReadChannelInbox">updateReadChannelInbox</a>#922e6e10 flags:<a href="/type/%23">#</a> folder_id:flags.0?<a href="/type/int">int</a> channel_id:<a href="/type/long">long</a> max_id:<a href="/type/int">int</a> still_unread_count:<a href="/type/int">int</a> pts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateDeleteChannelMessages">updateDeleteChannelMessages</a>#c32d5b12 channel_id:<a href="/type/long">long</a> messages:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChannelMessageViews">updateChannelMessageViews</a>#f226ac08 channel_id:<a href="/type/long">long</a> id:<a href="/type/int">int</a> views:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/channelParticipant">channelParticipant</a>#c00c07c0 user_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;
|
||||
<a href="/constructor/channelParticipantSelf">channelParticipantSelf</a>#28a8bc67 user_id:<a href="/type/long">long</a> inviter_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;
|
||||
<a href="/constructor/channelParticipantCreator">channelParticipantCreator</a>#2fe601d3 flags:<a href="/type/%23">#</a> user_id:<a href="/type/long">long</a> admin_rights:<a href="/type/ChatAdminRights">ChatAdminRights</a> rank:flags.0?<a href="/type/string">string</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;
|
||||
<a href="/constructor/chatParticipantCreator">chatParticipantCreator</a>#e46bcee4 user_id:<a href="/type/long">long</a> = <a href="/type/ChatParticipant">ChatParticipant</a>;
|
||||
<a href="/constructor/chatParticipantAdmin">chatParticipantAdmin</a>#a0933f5b user_id:<a href="/type/long">long</a> inviter_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> = <a href="/type/ChatParticipant">ChatParticipant</a>;<br>
|
||||
<a href="/constructor/updateChatParticipantAdmin">updateChatParticipantAdmin</a>#d7ca61a2 chat_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> is_admin:<a href="/type/Bool">Bool</a> version:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/messageActionChatMigrateTo">messageActionChatMigrateTo</a>#e1037f92 channel_id:<a href="/type/long">long</a> = <a href="/type/MessageAction">MessageAction</a>;
|
||||
<a href="/constructor/messageActionChannelMigrateFrom">messageActionChannelMigrateFrom</a>#ea3948e9 title:<a href="/type/string">string</a> chat_id:<a href="/type/long">long</a> = <a href="/type/MessageAction">MessageAction</a>;
|
||||
<a href="/constructor/messages.savedGifs">messages.savedGifs</a>#84a02a0d hash:<a href="/type/long">long</a> gifs:<a href="/type/Vector%20t">Vector</a><<a href="/type/Document">Document</a>> = <a href="/type/messages.SavedGifs">messages.SavedGifs</a>;<br>
|
||||
<a href="/constructor/updateBotInlineQuery">updateBotInlineQuery</a>#496f379c flags:<a href="/type/%23">#</a> query_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> query:<a href="/type/string">string</a> geo:flags.0?<a href="/type/GeoPoint">GeoPoint</a> peer_type:flags.1?<a href="/type/InlineQueryPeerType">InlineQueryPeerType</a> offset:<a href="/type/string">string</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateBotInlineSend">updateBotInlineSend</a>#12f12a07 flags:<a href="/type/%23">#</a> user_id:<a href="/type/long">long</a> query:<a href="/type/string">string</a> geo:flags.0?<a href="/type/GeoPoint">GeoPoint</a> id:<a href="/type/string">string</a> msg_id:flags.1?<a href="/type/InputBotInlineMessageID">InputBotInlineMessageID</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateBotCallbackQuery">updateBotCallbackQuery</a>#b9cfc48d flags:<a href="/type/%23">#</a> query_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> peer:<a href="/type/Peer">Peer</a> msg_id:<a href="/type/int">int</a> chat_instance:<a href="/type/long">long</a> data:flags.0?<a href="/type/bytes">bytes</a> game_short_name:flags.1?<a href="/type/string">string</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a>#691e9052 flags:<a href="/type/%23">#</a> query_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> msg_id:<a href="/type/InputBotInlineMessageID">InputBotInlineMessageID</a> chat_instance:<a href="/type/long">long</a> data:flags.0?<a href="/type/bytes">bytes</a> game_short_name:flags.1?<a href="/type/string">string</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/messageEntityMentionName">messageEntityMentionName</a>#dc7b1140 offset:<a href="/type/int">int</a> length:<a href="/type/int">int</a> user_id:<a href="/type/long">long</a> = <a href="/type/MessageEntity">MessageEntity</a>;<br>
|
||||
<a href="/constructor/updateReadChannelOutbox">updateReadChannelOutbox</a>#b75f99a9 channel_id:<a href="/type/long">long</a> max_id:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>#84c02310 hash:<a href="/type/long">long</a> count:<a href="/type/int">int</a> sets:<a href="/type/Vector%20t">Vector</a><<a href="/type/StickerSetCovered">StickerSetCovered</a>> unread:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;
|
||||
<a href="/constructor/messages.recentStickers">messages.recentStickers</a>#88d37c56 hash:<a href="/type/long">long</a> packs:<a href="/type/Vector%20t">Vector</a><<a href="/type/StickerPack">StickerPack</a>> stickers:<a href="/type/Vector%20t">Vector</a><<a href="/type/Document">Document</a>> dates:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> = <a href="/type/messages.RecentStickers">messages.RecentStickers</a>;<br>
|
||||
<a href="/constructor/highScore">highScore</a>#73a379eb pos:<a href="/type/int">int</a> user_id:<a href="/type/long">long</a> score:<a href="/type/int">int</a> = <a href="/type/HighScore">HighScore</a>;<br>
|
||||
<a href="/constructor/updateChannelWebPage">updateChannelWebPage</a>#2f2ba99f channel_id:<a href="/type/long">long</a> webpage:<a href="/type/WebPage">WebPage</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/payments.paymentForm">payments.paymentForm</a>#1694761b flags:<a href="/type/%23">#</a> can_save_credentials:flags.2?<a href="/constructor/true">true</a> password_missing:flags.3?<a href="/constructor/true">true</a> form_id:<a href="/type/long">long</a> bot_id:<a href="/type/long">long</a> invoice:<a href="/type/Invoice">Invoice</a> provider_id:<a href="/type/long">long</a> url:<a href="/type/string">string</a> native_provider:flags.4?<a href="/type/string">string</a> native_params:flags.4?<a href="/type/DataJSON">DataJSON</a> saved_info:flags.0?<a href="/type/PaymentRequestedInfo">PaymentRequestedInfo</a> saved_credentials:flags.1?<a href="/type/PaymentSavedCredentials">PaymentSavedCredentials</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/payments.PaymentForm">payments.PaymentForm</a>;
|
||||
<a href="/constructor/payments.paymentReceipt">payments.paymentReceipt</a>#70c4fe03 flags:<a href="/type/%23">#</a> date:<a href="/type/int">int</a> bot_id:<a href="/type/long">long</a> provider_id:<a href="/type/long">long</a> title:<a href="/type/string">string</a> description:<a href="/type/string">string</a> photo:flags.2?<a href="/type/WebDocument">WebDocument</a> invoice:<a href="/type/Invoice">Invoice</a> info:flags.0?<a href="/type/PaymentRequestedInfo">PaymentRequestedInfo</a> shipping:flags.1?<a href="/type/ShippingOption">ShippingOption</a> tip_amount:flags.3?<a href="/type/long">long</a> currency:<a href="/type/string">string</a> total_amount:<a href="/type/long">long</a> credentials_title:<a href="/type/string">string</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/payments.PaymentReceipt">payments.PaymentReceipt</a>;<br>
|
||||
<a href="/constructor/updateBotShippingQuery">updateBotShippingQuery</a>#b5aefd7d query_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> payload:<a href="/type/bytes">bytes</a> shipping_address:<a href="/type/PostAddress">PostAddress</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateBotPrecheckoutQuery">updateBotPrecheckoutQuery</a>#8caa9a96 flags:<a href="/type/%23">#</a> query_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> payload:<a href="/type/bytes">bytes</a> info:flags.0?<a href="/type/PaymentRequestedInfo">PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href="/type/string">string</a> currency:<a href="/type/string">string</a> total_amount:<a href="/type/long">long</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/phoneCallWaiting">phoneCallWaiting</a>#c5226f17 flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/long">long</a> participant_id:<a href="/type/long">long</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> receive_date:flags.0?<a href="/type/int">int</a> = <a href="/type/PhoneCall">PhoneCall</a>;
|
||||
<a href="/constructor/phoneCallRequested">phoneCallRequested</a>#14b0ed0c flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/long">long</a> participant_id:<a href="/type/long">long</a> g_a_hash:<a href="/type/bytes">bytes</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> = <a href="/type/PhoneCall">PhoneCall</a>;
|
||||
<a href="/constructor/phoneCallAccepted">phoneCallAccepted</a>#3660c311 flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/long">long</a> participant_id:<a href="/type/long">long</a> g_b:<a href="/type/bytes">bytes</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> = <a href="/type/PhoneCall">PhoneCall</a>;
|
||||
<a href="/constructor/phoneCall">phoneCall</a>#967f7c67 flags:<a href="/type/%23">#</a> p2p_allowed:flags.5?<a href="/constructor/true">true</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/long">long</a> participant_id:<a href="/type/long">long</a> g_a_or_b:<a href="/type/bytes">bytes</a> key_fingerprint:<a href="/type/long">long</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> connections:<a href="/type/Vector%20t">Vector</a><<a href="/type/PhoneConnection">PhoneConnection</a>> start_date:<a href="/type/int">int</a> = <a href="/type/PhoneCall">PhoneCall</a>;<br>
|
||||
<a href="/constructor/channelParticipantAdmin">channelParticipantAdmin</a>#34c3bb53 flags:<a href="/type/%23">#</a> can_edit:flags.0?<a href="/constructor/true">true</a> self:flags.1?<a href="/constructor/true">true</a> user_id:<a href="/type/long">long</a> inviter_id:flags.1?<a href="/type/long">long</a> promoted_by:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_rights:<a href="/type/ChatAdminRights">ChatAdminRights</a> rank:flags.2?<a href="/type/string">string</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;
|
||||
<a href="/constructor/channelParticipantBanned">channelParticipantBanned</a>#6df8014e flags:<a href="/type/%23">#</a> left:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/Peer">Peer</a> kicked_by:<a href="/type/long">long</a> date:<a href="/type/int">int</a> banned_rights:<a href="/type/ChatBannedRights">ChatBannedRights</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;
|
||||
<a href="/constructor/channelAdminLogEvent">channelAdminLogEvent</a>#1fad68cd id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> user_id:<a href="/type/long">long</a> action:<a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a> = <a href="/type/ChannelAdminLogEvent">ChannelAdminLogEvent</a>;<br>
|
||||
<a href="/constructor/messages.favedStickers">messages.favedStickers</a>#2cb51097 hash:<a href="/type/long">long</a> packs:<a href="/type/Vector%20t">Vector</a><<a href="/type/StickerPack">StickerPack</a>> stickers:<a href="/type/Vector%20t">Vector</a><<a href="/type/Document">Document</a>> = <a href="/type/messages.FavedStickers">messages.FavedStickers</a>;<br>
|
||||
<a href="/constructor/updateChannelReadMessagesContents">updateChannelReadMessagesContents</a>#44bdd535 channel_id:<a href="/type/long">long</a> messages:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChannelAvailableMessages">updateChannelAvailableMessages</a>#b23fc698 channel_id:<a href="/type/long">long</a> available_min_id:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/recentMeUrlUser">recentMeUrlUser</a>#b92c09e2 url:<a href="/type/string">string</a> user_id:<a href="/type/long">long</a> = <a href="/type/RecentMeUrl">RecentMeUrl</a>;
|
||||
<a href="/constructor/recentMeUrlChat">recentMeUrlChat</a>#b2da71d2 url:<a href="/type/string">string</a> chat_id:<a href="/type/long">long</a> = <a href="/type/RecentMeUrl">RecentMeUrl</a>;<br>
|
||||
<a href="/constructor/webAuthorization">webAuthorization</a>#a6f8f452 hash:<a href="/type/long">long</a> bot_id:<a href="/type/long">long</a> domain:<a href="/type/string">string</a> browser:<a href="/type/string">string</a> platform:<a href="/type/string">string</a> date_created:<a href="/type/int">int</a> date_active:<a href="/type/int">int</a> ip:<a href="/type/string">string</a> region:<a href="/type/string">string</a> = <a href="/type/WebAuthorization">WebAuthorization</a>;<br>
|
||||
<a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a>#8af09dd2 hash:<a href="/type/long">long</a> sets:<a href="/type/Vector%20t">Vector</a><<a href="/type/StickerSetCovered">StickerSetCovered</a>> = <a href="/type/messages.FoundStickerSets">messages.FoundStickerSets</a>;<br>
|
||||
<a href="/constructor/pollResults">pollResults</a>#dcb82ea3 flags:<a href="/type/%23">#</a> min:flags.0?<a href="/constructor/true">true</a> results:flags.1?<a href="/type/Vector%20t">Vector</a><<a href="/type/PollAnswerVoters">PollAnswerVoters</a>> total_voters:flags.2?<a href="/type/int">int</a> recent_voters:flags.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> solution:flags.4?<a href="/type/string">string</a> solution_entities:flags.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> = <a href="/type/PollResults">PollResults</a>;<br>
|
||||
<a href="/constructor/account.wallPapers">account.wallPapers</a>#cdc3858c hash:<a href="/type/long">long</a> wallpapers:<a href="/type/Vector%20t">Vector</a><<a href="/type/WallPaper">WallPaper</a>> = <a href="/type/account.WallPapers">account.WallPapers</a>;<br>
|
||||
<a href="/constructor/inputUserFromMessage">inputUserFromMessage</a>#1da448e2 peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> user_id:<a href="/type/long">long</a> = <a href="/type/InputUser">InputUser</a>;
|
||||
<a href="/constructor/inputChannelFromMessage">inputChannelFromMessage</a>#5b934f9d peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> channel_id:<a href="/type/long">long</a> = <a href="/type/InputChannel">InputChannel</a>;
|
||||
<a href="/constructor/inputPeerUserFromMessage">inputPeerUserFromMessage</a>#a87b0a1c peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> user_id:<a href="/type/long">long</a> = <a href="/type/InputPeer">InputPeer</a>;
|
||||
<a href="/constructor/inputPeerChannelFromMessage">inputPeerChannelFromMessage</a>#bd2a0840 peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> channel_id:<a href="/type/long">long</a> = <a href="/type/InputPeer">InputPeer</a>;<br>
|
||||
<a href="/constructor/channelAdminLogEventActionChangeLinkedChat">channelAdminLogEventActionChangeLinkedChat</a>#050c7ac8 prev_value:<a href="/type/long">long</a> new_value:<a href="/type/long">long</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;<br>
|
||||
<a href="/constructor/inputPrivacyValueAllowChatParticipants">inputPrivacyValueAllowChatParticipants</a>#840649cf chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
|
||||
<a href="/constructor/inputPrivacyValueDisallowChatParticipants">inputPrivacyValueDisallowChatParticipants</a>#e94f0f86 chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;<br>
|
||||
<a href="/constructor/privacyValueAllowChatParticipants">privacyValueAllowChatParticipants</a>#6b134e8e chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/PrivacyRule">PrivacyRule</a>;
|
||||
<a href="/constructor/privacyValueDisallowChatParticipants">privacyValueDisallowChatParticipants</a>#41c87565 chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/PrivacyRule">PrivacyRule</a>;<br>
|
||||
<a href="/constructor/account.themes">account.themes</a>#9a3d8c6d hash:<a href="/type/long">long</a> themes:<a href="/type/Vector%20t">Vector</a><<a href="/type/Theme">Theme</a>> = <a href="/type/account.Themes">account.Themes</a>;<br>
|
||||
<a href="/constructor/inputThemeSettings">inputThemeSettings</a>#8fde504f flags:<a href="/type/%23">#</a> message_colors_animated:flags.2?<a href="/constructor/true">true</a> base_theme:<a href="/type/BaseTheme">BaseTheme</a> accent_color:<a href="/type/int">int</a> outbox_accent_color:flags.3?<a href="/type/int">int</a> message_colors:flags.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> wallpaper:flags.1?<a href="/type/InputWallPaper">InputWallPaper</a> wallpaper_settings:flags.1?<a href="/type/WallPaperSettings">WallPaperSettings</a> = <a href="/type/InputThemeSettings">InputThemeSettings</a>;<br>
|
||||
<a href="/constructor/themeSettings">themeSettings</a>#fa58b6d4 flags:<a href="/type/%23">#</a> message_colors_animated:flags.2?<a href="/constructor/true">true</a> base_theme:<a href="/type/BaseTheme">BaseTheme</a> accent_color:<a href="/type/int">int</a> outbox_accent_color:flags.3?<a href="/type/int">int</a> message_colors:flags.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> wallpaper:flags.1?<a href="/type/WallPaper">WallPaper</a> = <a href="/type/ThemeSettings">ThemeSettings</a>;<br>
|
||||
<a href="/constructor/updateMessagePollVote">updateMessagePollVote</a>#106395c9 poll_id:<a href="/type/long">long</a> user_id:<a href="/type/long">long</a> options:<a href="/type/Vector%20t">Vector</a><<a href="/type/bytes">bytes</a>> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/messageUserVote">messageUserVote</a>#34d247b4 user_id:<a href="/type/long">long</a> option:<a href="/type/bytes">bytes</a> date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;
|
||||
<a href="/constructor/messageUserVoteInputOption">messageUserVoteInputOption</a>#3ca5b0ec user_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;
|
||||
<a href="/constructor/messageUserVoteMultiple">messageUserVoteMultiple</a>#8a65e557 user_id:<a href="/type/long">long</a> options:<a href="/type/Vector%20t">Vector</a><<a href="/type/bytes">bytes</a>> date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;<br>
|
||||
<a href="/constructor/statsGroupTopPoster">statsGroupTopPoster</a>#9d04af9b user_id:<a href="/type/long">long</a> messages:<a href="/type/int">int</a> avg_chars:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopPoster">StatsGroupTopPoster</a>;
|
||||
<a href="/constructor/statsGroupTopAdmin">statsGroupTopAdmin</a>#d7584c87 user_id:<a href="/type/long">long</a> deleted:<a href="/type/int">int</a> kicked:<a href="/type/int">int</a> banned:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopAdmin">StatsGroupTopAdmin</a>;
|
||||
<a href="/constructor/statsGroupTopInviter">statsGroupTopInviter</a>#535f779d user_id:<a href="/type/long">long</a> invitations:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopInviter">StatsGroupTopInviter</a>;<br>
|
||||
<a href="/constructor/updateChannelMessageForwards">updateChannelMessageForwards</a>#d29a27f4 channel_id:<a href="/type/long">long</a> id:<a href="/type/int">int</a> forwards:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateReadChannelDiscussionInbox">updateReadChannelDiscussionInbox</a>#d6b19546 flags:<a href="/type/%23">#</a> channel_id:<a href="/type/long">long</a> top_msg_id:<a href="/type/int">int</a> read_max_id:<a href="/type/int">int</a> broadcast_id:flags.0?<a href="/type/long">long</a> broadcast_post:flags.0?<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateReadChannelDiscussionOutbox">updateReadChannelDiscussionOutbox</a>#695c9e7c channel_id:<a href="/type/long">long</a> top_msg_id:<a href="/type/int">int</a> read_max_id:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/messageReplies">messageReplies</a>#83d60fc2 flags:<a href="/type/%23">#</a> comments:flags.0?<a href="/constructor/true">true</a> replies:<a href="/type/int">int</a> replies_pts:<a href="/type/int">int</a> recent_repliers:flags.1?<a href="/type/Vector%20t">Vector</a><<a href="/type/Peer">Peer</a>> channel_id:flags.0?<a href="/type/long">long</a> max_id:flags.2?<a href="/type/int">int</a> read_max_id:flags.3?<a href="/type/int">int</a> = <a href="/type/MessageReplies">MessageReplies</a>;<br>
|
||||
<a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a>#8c88c923 flags:<a href="/type/%23">#</a> channel_id:<a href="/type/long">long</a> top_msg_id:flags.0?<a href="/type/int">int</a> from_id:<a href="/type/Peer">Peer</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a>#5bb98608 flags:<a href="/type/%23">#</a> pinned:flags.0?<a href="/constructor/true">true</a> channel_id:<a href="/type/long">long</a> messages:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/messageActionInviteToGroupCall">messageActionInviteToGroupCall</a>#502f92f7 call:<a href="/type/InputGroupCall">InputGroupCall</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
||||
<a href="/constructor/updateChat">updateChat</a>#f89a6a4e chat_id:<a href="/type/long">long</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateGroupCall">updateGroupCall</a>#14b24500 chat_id:<a href="/type/long">long</a> call:<a href="/type/GroupCall">GroupCall</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChatParticipant">updateChatParticipant</a>#d087663a flags:<a href="/type/%23">#</a> chat_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/ChatParticipant">ChatParticipant</a> new_participant:flags.1?<a href="/type/ChatParticipant">ChatParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChannelParticipant">updateChannelParticipant</a>#985d3abb flags:<a href="/type/%23">#</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>;
|
||||
<a href="/constructor/updateBotStopped">updateBotStopped</a>#c4870a49 user_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> stopped:<a href="/type/Bool">Bool</a> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/chatInviteImporter">chatInviteImporter</a>#0b5cd5f4 user_id:<a href="/type/long">long</a> date:<a href="/type/int">int</a> = <a href="/type/ChatInviteImporter">ChatInviteImporter</a>;
|
||||
<a href="/constructor/chatAdminWithInvites">chatAdminWithInvites</a>#f2ecef23 admin_id:<a href="/type/long">long</a> invites_count:<a href="/type/int">int</a> revoked_invites_count:<a href="/type/int">int</a> = <a href="/type/ChatAdminWithInvites">ChatAdminWithInvites</a>;<br>
|
||||
<a href="/constructor/updateBotCommands">updateBotCommands</a>#4d712f2e peer:<a href="/type/Peer">Peer</a> bot_id:<a href="/type/long">long</a> commands:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotCommand">BotCommand</a>> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/inputBotInlineMessageID64">inputBotInlineMessageID64</a>#b6d915d7 dc_id:<a href="/type/int">int</a> owner_id:<a href="/type/long">long</a> id:<a href="/type/int">int</a> access_hash:<a href="/type/long">long</a> = <a href="/type/InputBotInlineMessageID">InputBotInlineMessageID</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/auth.importAuthorization">auth.importAuthorization</a>#a57a7dad id:<a href="/type/long">long</a> bytes:<a href="/type/bytes">bytes</a> = <a href="/type/auth.Authorization">auth.Authorization</a>;
|
||||
<a href="/method/account.registerDevice">account.registerDevice</a>#ec86017a flags:<a href="/type/%23">#</a> no_muted:flags.0?<a href="/constructor/true">true</a> token_type:<a href="/type/int">int</a> token:<a href="/type/string">string</a> app_sandbox:<a href="/type/Bool">Bool</a> secret:<a href="/type/bytes">bytes</a> other_uids:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/account.unregisterDevice">account.unregisterDevice</a>#6a0d3206 token_type:<a href="/type/int">int</a> token:<a href="/type/string">string</a> other_uids:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/account.getWallPapers">account.getWallPapers</a>#07967d36 hash:<a href="/type/long">long</a> = <a href="/type/account.WallPapers">account.WallPapers</a>;<br>
|
||||
<a href="/method/contacts.getContactIDs">contacts.getContactIDs</a>#7adc669d hash:<a href="/type/long">long</a> = <a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>>;
|
||||
<a href="/method/contacts.getContacts">contacts.getContacts</a>#5dd69e12 hash:<a href="/type/long">long</a> = <a href="/type/contacts.Contacts">contacts.Contacts</a>;<br>
|
||||
<a href="/method/messages.getDialogs">messages.getDialogs</a>#a0f4cb4f flags:<a href="/type/%23">#</a> exclude_pinned:flags.0?<a href="/constructor/true">true</a> folder_id:flags.1?<a href="/type/int">int</a> offset_date:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> offset_peer:<a href="/type/InputPeer">InputPeer</a> limit:<a href="/type/int">int</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.Dialogs">messages.Dialogs</a>;
|
||||
<a href="/method/messages.getHistory">messages.getHistory</a>#4423e6c5 peer:<a href="/type/InputPeer">InputPeer</a> offset_id:<a href="/type/int">int</a> offset_date:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.Messages">messages.Messages</a>;
|
||||
<a href="/method/messages.search">messages.search</a>#a0fda762 flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> q:<a href="/type/string">string</a> from_id:flags.0?<a href="/type/InputPeer">InputPeer</a> top_msg_id:flags.1?<a href="/type/int">int</a> filter:<a href="/type/MessagesFilter">MessagesFilter</a> min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.Messages">messages.Messages</a>;
|
||||
<a href="/method/messages.getChats">messages.getChats</a>#49e9528f id:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/messages.Chats">messages.Chats</a>;
|
||||
<a href="/method/messages.getFullChat">messages.getFullChat</a>#aeb00b34 chat_id:<a href="/type/long">long</a> = <a href="/type/messages.ChatFull">messages.ChatFull</a>;
|
||||
<a href="/method/messages.editChatTitle">messages.editChatTitle</a>#73783ffd chat_id:<a href="/type/long">long</a> title:<a href="/type/string">string</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/messages.editChatPhoto">messages.editChatPhoto</a>#35ddd674 chat_id:<a href="/type/long">long</a> photo:<a href="/type/InputChatPhoto">InputChatPhoto</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/messages.addChatUser">messages.addChatUser</a>#f24753e3 chat_id:<a href="/type/long">long</a> user_id:<a href="/type/InputUser">InputUser</a> fwd_limit:<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/messages.deleteChatUser">messages.deleteChatUser</a>#a2185cab flags:<a href="/type/%23">#</a> revoke_history:flags.0?<a href="/constructor/true">true</a> chat_id:<a href="/type/long">long</a> user_id:<a href="/type/InputUser">InputUser</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/messages.getStickers">messages.getStickers</a>#d5a5d3a1 emoticon:<a href="/type/string">string</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.Stickers">messages.Stickers</a>;
|
||||
<a href="/method/messages.getAllStickers">messages.getAllStickers</a>#b8a0a1a8 hash:<a href="/type/long">long</a> = <a href="/type/messages.AllStickers">messages.AllStickers</a>;<br>
|
||||
<a href="/method/channels.getParticipants">channels.getParticipants</a>#77ced9d0 channel:<a href="/type/InputChannel">InputChannel</a> filter:<a href="/type/ChannelParticipantsFilter">ChannelParticipantsFilter</a> offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> hash:<a href="/type/long">long</a> = <a href="/type/channels.ChannelParticipants">channels.ChannelParticipants</a>;<br>
|
||||
<a href="/method/messages.editChatAdmin">messages.editChatAdmin</a>#a85bd1c2 chat_id:<a href="/type/long">long</a> user_id:<a href="/type/InputUser">InputUser</a> is_admin:<a href="/type/Bool">Bool</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/messages.migrateChat">messages.migrateChat</a>#a2875319 chat_id:<a href="/type/long">long</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/messages.getSavedGifs">messages.getSavedGifs</a>#5cf09635 hash:<a href="/type/long">long</a> = <a href="/type/messages.SavedGifs">messages.SavedGifs</a>;<br>
|
||||
<a href="/method/contacts.getTopPeers">contacts.getTopPeers</a>#973478b6 flags:<a href="/type/%23">#</a> correspondents:flags.0?<a href="/constructor/true">true</a> bots_pm:flags.1?<a href="/constructor/true">true</a> bots_inline:flags.2?<a href="/constructor/true">true</a> phone_calls:flags.3?<a href="/constructor/true">true</a> forward_users:flags.4?<a href="/constructor/true">true</a> forward_chats:flags.5?<a href="/constructor/true">true</a> groups:flags.10?<a href="/constructor/true">true</a> channels:flags.15?<a href="/constructor/true">true</a> offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> hash:<a href="/type/long">long</a> = <a href="/type/contacts.TopPeers">contacts.TopPeers</a>;<br>
|
||||
<a href="/method/messages.getFeaturedStickers">messages.getFeaturedStickers</a>#64780b14 hash:<a href="/type/long">long</a> = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;
|
||||
<a href="/method/messages.getRecentStickers">messages.getRecentStickers</a>#9da9403b flags:<a href="/type/%23">#</a> attached:flags.0?<a href="/constructor/true">true</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.RecentStickers">messages.RecentStickers</a>;
|
||||
<a href="/method/messages.getMaskStickers">messages.getMaskStickers</a>#640f82b8 hash:<a href="/type/long">long</a> = <a href="/type/messages.AllStickers">messages.AllStickers</a>;
|
||||
<a href="/method/messages.getCommonChats">messages.getCommonChats</a>#e40ca104 user_id:<a href="/type/InputUser">InputUser</a> max_id:<a href="/type/long">long</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.Chats">messages.Chats</a>;
|
||||
<a href="/method/messages.getAllChats">messages.getAllChats</a>#875f74be except_ids:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/messages.Chats">messages.Chats</a>;
|
||||
<a href="/method/messages.getFavedStickers">messages.getFavedStickers</a>#04f1aaa9 hash:<a href="/type/long">long</a> = <a href="/type/messages.FavedStickers">messages.FavedStickers</a>;
|
||||
<a href="/method/messages.getRecentLocations">messages.getRecentLocations</a>#702a40e0 peer:<a href="/type/InputPeer">InputPeer</a> limit:<a href="/type/int">int</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.Messages">messages.Messages</a>;
|
||||
<a href="/method/messages.searchStickerSets">messages.searchStickerSets</a>#35705b8a flags:<a href="/type/%23">#</a> exclude_featured:flags.0?<a href="/constructor/true">true</a> q:<a href="/type/string">string</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.FoundStickerSets">messages.FoundStickerSets</a>;<br>
|
||||
<a href="/method/account.getAuthorizationForm">account.getAuthorizationForm</a>#a929597a bot_id:<a href="/type/long">long</a> scope:<a href="/type/string">string</a> public_key:<a href="/type/string">string</a> = <a href="/type/account.AuthorizationForm">account.AuthorizationForm</a>;
|
||||
<a href="/method/account.acceptAuthorization">account.acceptAuthorization</a>#f3ed4c73 bot_id:<a href="/type/long">long</a> scope:<a href="/type/string">string</a> public_key:<a href="/type/string">string</a> value_hashes:<a href="/type/Vector%20t">Vector</a><<a href="/type/SecureValueHash">SecureValueHash</a>> credentials:<a href="/type/SecureCredentialsEncrypted">SecureCredentialsEncrypted</a> = <a href="/type/Bool">Bool</a>;<br>
|
||||
<a href="/method/messages.getScheduledHistory">messages.getScheduledHistory</a>#f516760b peer:<a href="/type/InputPeer">InputPeer</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.Messages">messages.Messages</a>;<br>
|
||||
<a href="/method/account.getThemes">account.getThemes</a>#7206e458 format:<a href="/type/string">string</a> hash:<a href="/type/long">long</a> = <a href="/type/account.Themes">account.Themes</a>;
|
||||
<a href="/method/auth.exportLoginToken">auth.exportLoginToken</a>#b7e085fe api_id:<a href="/type/int">int</a> api_hash:<a href="/type/string">string</a> except_ids:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;<br>
|
||||
<a href="/method/messages.getOldFeaturedStickers">messages.getOldFeaturedStickers</a>#7ed094a1 offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;
|
||||
<a href="/method/messages.getReplies">messages.getReplies</a>#22ddd30c peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> offset_date:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/long">long</a> = <a href="/type/messages.Messages">messages.Messages</a>;
|
||||
<a href="/method/messages.deleteChat">messages.deleteChat</a>#5bd0ee50 chat_id:<a href="/type/long">long</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/messages.getMessageReadParticipants">messages.getMessageReadParticipants</a>#2c6f97b7 peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> = <a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-132" id="layer-132" name="layer-132"><i class="anchor-icon"></i></a><a href="/schema?layer=132">Layer 132</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/account.getChatThemes">account.getChatThemes</a> - </li>
|
||||
<li>Added <a href="/method/messages.setChatTheme">messages.setChatTheme</a></li>
|
||||
<li>Added <a href="/method/channels.viewSponsoredMessage">channels.viewSponsoredMessage</a></li>
|
||||
<li>Added <a href="/method/channels.getSponsoredMessages">channels.getSponsoredMessages</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>video</strong>, <strong>video_portrait</strong> parameters in <a href="/method/phone.toggleGroupCallRecord">phone.toggleGroupCallRecord</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/chatTheme">chatTheme</a></li>
|
||||
<li>Added <a href="/constructor/account.chatThemesNotModified">account.chatThemesNotModified</a> - </li>
|
||||
<li>Added <a href="/constructor/account.chatThemes">account.chatThemes</a> - </li>
|
||||
<li>Added <a href="/constructor/messageActionSetChatTheme">messageActionSetChatTheme</a> - </li>
|
||||
<li>Added <a href="/constructor/sendMessageChooseStickerAction">sendMessageChooseStickerAction</a> - </li>
|
||||
<li>Added <a href="/constructor/sponsoredMessage">sponsoredMessage</a></li>
|
||||
<li>Added <a href="/constructor/messages.sponsoredMessages">messages.sponsoredMessages</a></li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionChangeTheme">channelAdminLogEventActionChangeTheme</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>theme_emoticon</strong> parameter in <a href="/constructor/chatFull">chatFull</a></li>
|
||||
<li>Added <strong>theme_emoticon</strong> parameter in <a href="/constructor/userFull">userFull</a></li>
|
||||
<li>Added <strong>theme_emoticon</strong> parameter in <a href="/constructor/channelFull">channelFull</a></li>
|
||||
<li>Added <strong>for_chat</strong> parameter, changed type of <strong>installs_count</strong> from <strong>int</strong> to <strong>flags.4?int</strong> in <a href="/constructor/theme">theme</a></li>
|
||||
<li>Added <strong>message_colors_animated</strong>, <strong>message_colors</strong> parameters, removed <strong>message_top_color</strong>, <strong>message_bottom_color</strong> parameters in <a href="/constructor/inputThemeSettings">inputThemeSettings</a></li>
|
||||
<li>Added <strong>message_colors_animated</strong>, <strong>message_colors</strong> parameters, removed <strong>message_top_color</strong>, <strong>message_bottom_color</strong> parameters in <a href="/constructor/themeSettings">themeSettings</a></li>
|
||||
<li>Added <strong>unread_count</strong> parameter in <a href="/constructor/messages.discussionMessage">messages.discussionMessage</a></li>
|
||||
<li>Added <strong>flags</strong>, <strong>video_channel</strong>, <strong>video_quality</strong> parameters in <a href="/constructor/inputGroupCallStream">inputGroupCallStream</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/chatFull">chatFull</a>#49a0a5d9 flags:<a href="/type/%23">#</a> can_set_username:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.8?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants:<a href="/type/ChatParticipants">ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.13?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> pinned_msg_id:flags.6?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> call:flags.12?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.14?<a href="/type/int">int</a> groupcall_default_join_as:flags.15?<a href="/type/Peer">Peer</a> theme_emoticon:flags.16?<a href="/type/string">string</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/userFull">userFull</a>#d697ff05 flags:<a href="/type/%23">#</a> blocked:flags.0?<a href="/constructor/true">true</a> phone_calls_available:flags.4?<a href="/constructor/true">true</a> phone_calls_private:flags.5?<a href="/constructor/true">true</a> can_pin_message:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.12?<a href="/constructor/true">true</a> video_calls_available:flags.13?<a href="/constructor/true">true</a> user:<a href="/type/User">User</a> about:flags.1?<a href="/type/string">string</a> settings:<a href="/type/PeerSettings">PeerSettings</a> profile_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> bot_info:flags.3?<a href="/type/BotInfo">BotInfo</a> pinned_msg_id:flags.6?<a href="/type/int">int</a> common_chats_count:<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> ttl_period:flags.14?<a href="/type/int">int</a> theme_emoticon:flags.15?<a href="/type/string">string</a> = <a href="/type/UserFull">UserFull</a>;<br>
|
||||
<a href="/constructor/channelFull">channelFull</a>#2f532f3c flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> can_view_stats:flags.20?<a href="/constructor/true">true</a> blocked:flags.22?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.23?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> call:flags.21?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.24?<a href="/type/int">int</a> pending_suggestions:flags.25?<a href="/type/Vector%20t">Vector</a><<a href="/type/string">string</a>> groupcall_default_join_as:flags.26?<a href="/type/Peer">Peer</a> theme_emoticon:flags.27?<a href="/type/string">string</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/theme">theme</a>#e802b8dc flags:<a href="/type/%23">#</a> creator:flags.0?<a href="/constructor/true">true</a> default:flags.1?<a href="/constructor/true">true</a> for_chat:flags.5?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> slug:<a href="/type/string">string</a> title:<a href="/type/string">string</a> document:flags.2?<a href="/type/Document">Document</a> settings:flags.3?<a href="/type/ThemeSettings">ThemeSettings</a> installs_count:flags.4?<a href="/type/int">int</a> = <a href="/type/Theme">Theme</a>;<br>
|
||||
<a href="/constructor/inputThemeSettings">inputThemeSettings</a>#ff38f912 flags:<a href="/type/%23">#</a> message_colors_animated:flags.2?<a href="/constructor/true">true</a> base_theme:<a href="/type/BaseTheme">BaseTheme</a> accent_color:<a href="/type/int">int</a> message_colors:flags.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> wallpaper:flags.1?<a href="/type/InputWallPaper">InputWallPaper</a> wallpaper_settings:flags.1?<a href="/type/WallPaperSettings">WallPaperSettings</a> = <a href="/type/InputThemeSettings">InputThemeSettings</a>;<br>
|
||||
<a href="/constructor/themeSettings">themeSettings</a>#8db4e76c flags:<a href="/type/%23">#</a> message_colors_animated:flags.2?<a href="/constructor/true">true</a> base_theme:<a href="/type/BaseTheme">BaseTheme</a> accent_color:<a href="/type/int">int</a> message_colors:flags.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> wallpaper:flags.1?<a href="/type/WallPaper">WallPaper</a> = <a href="/type/ThemeSettings">ThemeSettings</a>;<br>
|
||||
<a href="/constructor/messages.discussionMessage">messages.discussionMessage</a>#a6341782 flags:<a href="/type/%23">#</a> messages:<a href="/type/Vector%20t">Vector</a><<a href="/type/Message">Message</a>> max_id:flags.0?<a href="/type/int">int</a> read_inbox_max_id:flags.1?<a href="/type/int">int</a> read_outbox_max_id:flags.2?<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/messages.DiscussionMessage">messages.DiscussionMessage</a>;<br>
|
||||
<a href="/constructor/inputGroupCallStream">inputGroupCallStream</a>#0598a92a flags:<a href="/type/%23">#</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> time_ms:<a href="/type/long">long</a> scale:<a href="/type/int">int</a> video_channel:flags.0?<a href="/type/int">int</a> video_quality:flags.0?<a href="/type/int">int</a> = <a href="/type/InputFileLocation">InputFileLocation</a>;<br>
|
||||
<a href="/constructor/chatTheme">chatTheme</a>#ed0b5c33 emoticon:<a href="/type/string">string</a> theme:<a href="/type/Theme">Theme</a> dark_theme:<a href="/type/Theme">Theme</a> = <a href="/type/ChatTheme">ChatTheme</a>;<br>
|
||||
<a href="/constructor/account.chatThemesNotModified">account.chatThemesNotModified</a>#e011e1c4 = <a href="/type/account.ChatThemes">account.ChatThemes</a>;
|
||||
<a href="/constructor/account.chatThemes">account.chatThemes</a>#fe4cbebd hash:<a href="/type/int">int</a> themes:<a href="/type/Vector%20t">Vector</a><<a href="/type/ChatTheme">ChatTheme</a>> = <a href="/type/account.ChatThemes">account.ChatThemes</a>;<br>
|
||||
<a href="/constructor/messageActionSetChatTheme">messageActionSetChatTheme</a>#aa786345 emoticon:<a href="/type/string">string</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
||||
<a href="/constructor/sendMessageChooseStickerAction">sendMessageChooseStickerAction</a>#b05ac6b1 = <a href="/type/SendMessageAction">SendMessageAction</a>;
|
||||
<a href="/constructor/sponsoredMessage">sponsoredMessage</a>#2a3c381f flags:<a href="/type/%23">#</a> random_id:<a href="/type/bytes">bytes</a> from_id:<a href="/type/Peer">Peer</a> start_param:flags.0?<a href="/type/string">string</a> message:<a href="/type/string">string</a> entities:flags.1?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> = <a href="/type/SponsoredMessage">SponsoredMessage</a>;<br>
|
||||
<a href="/constructor/messages.sponsoredMessages">messages.sponsoredMessages</a>#65a4c7d5 messages:<a href="/type/Vector%20t">Vector</a><<a href="/type/SponsoredMessage">SponsoredMessage</a>> chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/messages.SponsoredMessages">messages.SponsoredMessages</a>;<br>
|
||||
<a href="/constructor/channelAdminLogEventActionChangeTheme">channelAdminLogEventActionChangeTheme</a>#fe69018d prev_value:<a href="/type/string">string</a> new_value:<a href="/type/string">string</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/phone.toggleGroupCallRecord">phone.toggleGroupCallRecord</a>#f128c708 flags:<a href="/type/%23">#</a> start:flags.0?<a href="/constructor/true">true</a> video:flags.2?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> title:flags.1?<a href="/type/string">string</a> video_portrait:flags.2?<a href="/type/Bool">Bool</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/method/account.getChatThemes">account.getChatThemes</a>#d6d71d7b hash:<a href="/type/int">int</a> = <a href="/type/account.ChatThemes">account.ChatThemes</a>;<br>
|
||||
<a href="/method/messages.setChatTheme">messages.setChatTheme</a>#e63be13f peer:<a href="/type/InputPeer">InputPeer</a> emoticon:<a href="/type/string">string</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/method/channels.viewSponsoredMessage">channels.viewSponsoredMessage</a>#beaedb94 channel:<a href="/type/InputChannel">InputChannel</a> random_id:<a href="/type/bytes">bytes</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/channels.getSponsoredMessages">channels.getSponsoredMessages</a>#ec210fbf channel:<a href="/type/InputChannel">InputChannel</a> = <a href="/type/messages.SponsoredMessages">messages.SponsoredMessages</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-131" id="layer-131" name="layer-131"><i class="anchor-icon"></i></a><a href="/schema?layer=131">Layer 131</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/account.resetPassword">account.resetPassword</a></li>
|
||||
<li>Added <a href="/method/account.declinePasswordReset">account.declinePasswordReset</a> - </li>
|
||||
<li>Added <a href="/method/auth.checkRecoveryPassword">auth.checkRecoveryPassword</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>flags</strong>, <strong>new_settings</strong> parameters in <a href="/method/auth.recoverPassword">auth.recoverPassword</a></li>
|
||||
<li>Added <strong>limit</strong> parameter in <a href="/method/phone.getGroupCall">phone.getGroupCall</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/account.resetPasswordFailedWait">account.resetPasswordFailedWait</a></li>
|
||||
<li>Added <a href="/constructor/account.resetPasswordRequestedWait">account.resetPasswordRequestedWait</a></li>
|
||||
<li>Added <a href="/constructor/account.resetPasswordOk">account.resetPasswordOk</a></li>
|
||||
<li>Added <a href="/constructor/updateBotCommands">updateBotCommands</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>pending_reset_date</strong> parameter in <a href="/constructor/account.password">account.password</a></li>
|
||||
<li>Added <strong>record_video_active</strong>, <strong>unmuted_video_count</strong>, <strong>unmuted_video_limit</strong> parameters in <a href="/constructor/groupCall">groupCall</a></li>
|
||||
<li>Added <strong>audio_source</strong> parameter in <a href="/constructor/groupCallParticipantVideo">groupCallParticipantVideo</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/account.password">account.password</a>#185b184f flags:<a href="/type/%23">#</a> has_recovery:flags.0?<a href="/constructor/true">true</a> has_secure_values:flags.1?<a href="/constructor/true">true</a> has_password:flags.2?<a href="/constructor/true">true</a> current_algo:flags.2?<a href="/type/PasswordKdfAlgo">PasswordKdfAlgo</a> srp_B:flags.2?<a href="/type/bytes">bytes</a> srp_id:flags.2?<a href="/type/long">long</a> hint:flags.3?<a href="/type/string">string</a> email_unconfirmed_pattern:flags.4?<a href="/type/string">string</a> new_algo:<a href="/type/PasswordKdfAlgo">PasswordKdfAlgo</a> new_secure_algo:<a href="/type/SecurePasswordKdfAlgo">SecurePasswordKdfAlgo</a> secure_random:<a href="/type/bytes">bytes</a> pending_reset_date:flags.5?<a href="/type/int">int</a> = <a href="/type/account.Password">account.Password</a>;<br>
|
||||
<a href="/constructor/groupCall">groupCall</a>#d597650c flags:<a href="/type/%23">#</a> join_muted:flags.1?<a href="/constructor/true">true</a> can_change_join_muted:flags.2?<a href="/constructor/true">true</a> join_date_asc:flags.6?<a href="/constructor/true">true</a> schedule_start_subscribed:flags.8?<a href="/constructor/true">true</a> can_start_video:flags.9?<a href="/constructor/true">true</a> record_video_active:flags.11?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> participants_count:<a href="/type/int">int</a> title:flags.3?<a href="/type/string">string</a> stream_dc_id:flags.4?<a href="/type/int">int</a> record_start_date:flags.5?<a href="/type/int">int</a> schedule_date:flags.7?<a href="/type/int">int</a> unmuted_video_count:flags.10?<a href="/type/int">int</a> unmuted_video_limit:<a href="/type/int">int</a> version:<a href="/type/int">int</a> = <a href="/type/GroupCall">GroupCall</a>;
|
||||
<a href="/constructor/groupCallParticipantVideo">groupCallParticipantVideo</a>#67753ac8 flags:<a href="/type/%23">#</a> paused:flags.0?<a href="/constructor/true">true</a> endpoint:<a href="/type/string">string</a> source_groups:<a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipantVideoSourceGroup">GroupCallParticipantVideoSourceGroup</a>> audio_source:flags.1?<a href="/type/int">int</a> = <a href="/type/GroupCallParticipantVideo">GroupCallParticipantVideo</a>;<br>
|
||||
<a href="/constructor/account.resetPasswordFailedWait">account.resetPasswordFailedWait</a>#e3779861 retry_date:<a href="/type/int">int</a> = <a href="/type/account.ResetPasswordResult">account.ResetPasswordResult</a>;
|
||||
<a href="/constructor/account.resetPasswordRequestedWait">account.resetPasswordRequestedWait</a>#e9effc7d until_date:<a href="/type/int">int</a> = <a href="/type/account.ResetPasswordResult">account.ResetPasswordResult</a>;
|
||||
<a href="/constructor/account.resetPasswordOk">account.resetPasswordOk</a>#e926d63e = <a href="/type/account.ResetPasswordResult">account.ResetPasswordResult</a>;<br>
|
||||
<a href="/constructor/updateBotCommands">updateBotCommands</a>#cf7e0873 peer:<a href="/type/Peer">Peer</a> bot_id:<a href="/type/int">int</a> commands:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotCommand">BotCommand</a>> = <a href="/type/Update">Update</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/auth.recoverPassword">auth.recoverPassword</a>#37096c70 flags:<a href="/type/%23">#</a> code:<a href="/type/string">string</a> new_settings:flags.0?<a href="/type/account.PasswordInputSettings">account.PasswordInputSettings</a> = <a href="/type/auth.Authorization">auth.Authorization</a>;<br>
|
||||
<a href="/method/phone.getGroupCall">phone.getGroupCall</a>#041845db call:<a href="/type/InputGroupCall">InputGroupCall</a> limit:<a href="/type/int">int</a> = <a href="/type/phone.GroupCall">phone.GroupCall</a>;<br>
|
||||
<a href="/method/account.resetPassword">account.resetPassword</a>#9308ce1b = <a href="/type/account.ResetPasswordResult">account.ResetPasswordResult</a>;
|
||||
<a href="/method/account.declinePasswordReset">account.declinePasswordReset</a>#4c9409f6 = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/auth.checkRecoveryPassword">auth.checkRecoveryPassword</a>#0d36bf79 code:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-130" id="layer-130" name="layer-130"><i class="anchor-icon"></i></a><a href="/schema?layer=130">Layer 130</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>placeholder</strong> parameter in <a href="/constructor/replyKeyboardForceReply">replyKeyboardForceReply</a></li>
|
||||
<li>Added <strong>placeholder</strong> parameter in <a href="/constructor/replyKeyboardMarkup">replyKeyboardMarkup</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/replyKeyboardForceReply">replyKeyboardForceReply</a>#86b40b08 flags:<a href="/type/%23">#</a> single_use:flags.1?<a href="/constructor/true">true</a> selective:flags.2?<a href="/constructor/true">true</a> placeholder:flags.3?<a href="/type/string">string</a> = <a href="/type/ReplyMarkup">ReplyMarkup</a>;
|
||||
<a href="/constructor/replyKeyboardMarkup">replyKeyboardMarkup</a>#85dd99d1 flags:<a href="/type/%23">#</a> resize:flags.0?<a href="/constructor/true">true</a> single_use:flags.1?<a href="/constructor/true">true</a> selective:flags.2?<a href="/constructor/true">true</a> rows:<a href="/type/Vector%20t">Vector</a><<a href="/type/KeyboardButtonRow">KeyboardButtonRow</a>> placeholder:flags.3?<a href="/type/string">string</a> = <a href="/type/ReplyMarkup">ReplyMarkup</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-129" id="layer-129" name="layer-129"><i class="anchor-icon"></i></a><a href="/schema?layer=129">Layer 129</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/phone.joinGroupCallPresentation">phone.joinGroupCallPresentation</a></li>
|
||||
<li>Added <a href="/method/phone.leaveGroupCallPresentation">phone.leaveGroupCallPresentation</a></li>
|
||||
<li>Added <a href="/method/stickers.checkShortName">stickers.checkShortName</a> - </li>
|
||||
<li>Added <a href="/method/stickers.suggestShortName">stickers.suggestShortName</a> - </li>
|
||||
<li>Added <a href="/method/bots.resetBotCommands">bots.resetBotCommands</a> - </li>
|
||||
<li>Added <a href="/method/bots.getBotCommands">bots.getBotCommands</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>software</strong> parameter in <a href="/method/stickers.createStickerSet">stickers.createStickerSet</a></li>
|
||||
<li>Added <strong>scope</strong>, <strong>lang_code</strong> parameters in <a href="/method/bots.setBotCommands">bots.setBotCommands</a></li>
|
||||
<li>Changed type of <a href="/method/phone.checkGroupCall">phone.checkGroupCall</a> from <strong>Bool</strong> to <strong>Vector<int></strong></li>
|
||||
<li>Added <strong>sources</strong> parameter, removed <strong>source</strong> parameter in <a href="/method/phone.checkGroupCall">phone.checkGroupCall</a></li>
|
||||
<li>Added <strong>video_stopped</strong>, <strong>video_paused</strong>, <strong>presentation_paused</strong> parameters, removed <strong>video_muted</strong> parameter in <a href="/method/phone.editGroupCallParticipant">phone.editGroupCallParticipant</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/groupCallParticipantVideoSourceGroup">groupCallParticipantVideoSourceGroup</a></li>
|
||||
<li>Added <a href="/constructor/groupCallParticipantVideo">groupCallParticipantVideo</a></li>
|
||||
<li>Added <a href="/constructor/updateGroupCallConnection">updateGroupCallConnection</a></li>
|
||||
<li>Added <a href="/constructor/stickers.suggestedShortName">stickers.suggestedShortName</a></li>
|
||||
<li>Added <a href="/constructor/botCommandScopeDefault">botCommandScopeDefault</a></li>
|
||||
<li>Added <a href="/constructor/botCommandScopeUsers">botCommandScopeUsers</a> - </li>
|
||||
<li>Added <a href="/constructor/botCommandScopeChats">botCommandScopeChats</a> - </li>
|
||||
<li>Added <a href="/constructor/botCommandScopeChatAdmins">botCommandScopeChatAdmins</a> - </li>
|
||||
<li>Added <a href="/constructor/botCommandScopePeer">botCommandScopePeer</a> - </li>
|
||||
<li>Added <a href="/constructor/botCommandScopePeerAdmins">botCommandScopePeerAdmins</a> - </li>
|
||||
<li>Added <a href="/constructor/botCommandScopePeerUser">botCommandScopePeerUser</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>sticker</strong> parameter in <a href="/constructor/help.appUpdate">help.appUpdate</a></li>
|
||||
<li>Added <strong>third_background_color</strong>, <strong>fourth_background_color</strong> parameters in <a href="/constructor/wallPaperSettings">wallPaperSettings</a></li>
|
||||
<li>Added <strong>id</strong> parameter in <a href="/constructor/inputWallPaperNoFile">inputWallPaperNoFile</a></li>
|
||||
<li>Added <strong>id</strong> parameter in <a href="/constructor/wallPaperNoFile">wallPaperNoFile</a></li>
|
||||
<li>Added <strong>qts</strong> parameter in <a href="/constructor/updateMessagePollVote">updateMessagePollVote</a></li>
|
||||
<li>Added <strong>can_start_video</strong> parameter, removed <strong>params</strong> parameter in <a href="/constructor/groupCall">groupCall</a></li>
|
||||
<li>Added <strong>video_joined</strong>, <strong>video</strong>, <strong>presentation</strong> parameters, removed <strong>params</strong> parameter in <a href="/constructor/groupCallParticipant">groupCallParticipant</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/help.appUpdate">help.appUpdate</a>#ccbbce30 flags:<a href="/type/%23">#</a> can_not_skip:flags.0?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> version:<a href="/type/string">string</a> text:<a href="/type/string">string</a> entities:<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> document:flags.1?<a href="/type/Document">Document</a> url:flags.2?<a href="/type/string">string</a> sticker:flags.3?<a href="/type/Document">Document</a> = <a href="/type/help.AppUpdate">help.AppUpdate</a>;<br>
|
||||
<a href="/constructor/wallPaperSettings">wallPaperSettings</a>#1dc1bca4 flags:<a href="/type/%23">#</a> blur:flags.1?<a href="/constructor/true">true</a> motion:flags.2?<a href="/constructor/true">true</a> background_color:flags.0?<a href="/type/int">int</a> second_background_color:flags.4?<a href="/type/int">int</a> third_background_color:flags.5?<a href="/type/int">int</a> fourth_background_color:flags.6?<a href="/type/int">int</a> intensity:flags.3?<a href="/type/int">int</a> rotation:flags.4?<a href="/type/int">int</a> = <a href="/type/WallPaperSettings">WallPaperSettings</a>;<br>
|
||||
<a href="/constructor/inputWallPaperNoFile">inputWallPaperNoFile</a>#967a462e id:<a href="/type/long">long</a> = <a href="/type/InputWallPaper">InputWallPaper</a>;<br>
|
||||
<a href="/constructor/wallPaperNoFile">wallPaperNoFile</a>#e0804116 id:<a href="/type/long">long</a> flags:<a href="/type/%23">#</a> default:flags.1?<a href="/constructor/true">true</a> dark:flags.4?<a href="/constructor/true">true</a> settings:flags.2?<a href="/type/WallPaperSettings">WallPaperSettings</a> = <a href="/type/WallPaper">WallPaper</a>;<br>
|
||||
<a href="/constructor/updateMessagePollVote">updateMessagePollVote</a>#37f69f0b poll_id:<a href="/type/long">long</a> user_id:<a href="/type/int">int</a> options:<a href="/type/Vector%20t">Vector</a><<a href="/type/bytes">bytes</a>> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/groupCall">groupCall</a>#653dbaad flags:<a href="/type/%23">#</a> join_muted:flags.1?<a href="/constructor/true">true</a> can_change_join_muted:flags.2?<a href="/constructor/true">true</a> join_date_asc:flags.6?<a href="/constructor/true">true</a> schedule_start_subscribed:flags.8?<a href="/constructor/true">true</a> can_start_video:flags.9?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> participants_count:<a href="/type/int">int</a> title:flags.3?<a href="/type/string">string</a> stream_dc_id:flags.4?<a href="/type/int">int</a> record_start_date:flags.5?<a href="/type/int">int</a> schedule_date:flags.7?<a href="/type/int">int</a> version:<a href="/type/int">int</a> = <a href="/type/GroupCall">GroupCall</a>;
|
||||
<a href="/constructor/groupCallParticipant">groupCallParticipant</a>#eba636fe flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> left:flags.1?<a href="/constructor/true">true</a> can_self_unmute:flags.2?<a href="/constructor/true">true</a> just_joined:flags.4?<a href="/constructor/true">true</a> versioned:flags.5?<a href="/constructor/true">true</a> min:flags.8?<a href="/constructor/true">true</a> muted_by_you:flags.9?<a href="/constructor/true">true</a> volume_by_admin:flags.10?<a href="/constructor/true">true</a> self:flags.12?<a href="/constructor/true">true</a> video_joined:flags.15?<a href="/constructor/true">true</a> peer:<a href="/type/Peer">Peer</a> date:<a href="/type/int">int</a> active_date:flags.3?<a href="/type/int">int</a> source:<a href="/type/int">int</a> volume:flags.7?<a href="/type/int">int</a> about:flags.11?<a href="/type/string">string</a> raise_hand_rating:flags.13?<a href="/type/long">long</a> video:flags.6?<a href="/type/GroupCallParticipantVideo">GroupCallParticipantVideo</a> presentation:flags.14?<a href="/type/GroupCallParticipantVideo">GroupCallParticipantVideo</a> = <a href="/type/GroupCallParticipant">GroupCallParticipant</a>;
|
||||
<a href="/constructor/groupCallParticipantVideoSourceGroup">groupCallParticipantVideoSourceGroup</a>#dcb118b7 semantics:<a href="/type/string">string</a> sources:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> = <a href="/type/GroupCallParticipantVideoSourceGroup">GroupCallParticipantVideoSourceGroup</a>;
|
||||
<a href="/constructor/groupCallParticipantVideo">groupCallParticipantVideo</a>#78e41663 flags:<a href="/type/%23">#</a> paused:flags.0?<a href="/constructor/true">true</a> endpoint:<a href="/type/string">string</a> source_groups:<a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipantVideoSourceGroup">GroupCallParticipantVideoSourceGroup</a>> = <a href="/type/GroupCallParticipantVideo">GroupCallParticipantVideo</a>;<br>
|
||||
<a href="/constructor/updateGroupCallConnection">updateGroupCallConnection</a>#0b783982 flags:<a href="/type/%23">#</a> presentation:flags.0?<a href="/constructor/true">true</a> params:<a href="/type/DataJSON">DataJSON</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/stickers.suggestedShortName">stickers.suggestedShortName</a>#85fea03f short_name:<a href="/type/string">string</a> = <a href="/type/stickers.SuggestedShortName">stickers.SuggestedShortName</a>;<br>
|
||||
<a href="/constructor/botCommandScopeDefault">botCommandScopeDefault</a>#2f6cb2ab = <a href="/type/BotCommandScope">BotCommandScope</a>;
|
||||
<a href="/constructor/botCommandScopeUsers">botCommandScopeUsers</a>#3c4f04d8 = <a href="/type/BotCommandScope">BotCommandScope</a>;
|
||||
<a href="/constructor/botCommandScopeChats">botCommandScopeChats</a>#6fe1a881 = <a href="/type/BotCommandScope">BotCommandScope</a>;
|
||||
<a href="/constructor/botCommandScopeChatAdmins">botCommandScopeChatAdmins</a>#b9aa606a = <a href="/type/BotCommandScope">BotCommandScope</a>;
|
||||
<a href="/constructor/botCommandScopePeer">botCommandScopePeer</a>#db9d897d peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/BotCommandScope">BotCommandScope</a>;
|
||||
<a href="/constructor/botCommandScopePeerAdmins">botCommandScopePeerAdmins</a>#3fd863d1 peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/BotCommandScope">BotCommandScope</a>;
|
||||
<a href="/constructor/botCommandScopePeerUser">botCommandScopePeerUser</a>#0a1321f3 peer:<a href="/type/InputPeer">InputPeer</a> user_id:<a href="/type/InputUser">InputUser</a> = <a href="/type/BotCommandScope">BotCommandScope</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/stickers.createStickerSet">stickers.createStickerSet</a>#9021ab67 flags:<a href="/type/%23">#</a> masks:flags.0?<a href="/constructor/true">true</a> animated:flags.1?<a href="/constructor/true">true</a> user_id:<a href="/type/InputUser">InputUser</a> title:<a href="/type/string">string</a> short_name:<a href="/type/string">string</a> thumb:flags.2?<a href="/type/InputDocument">InputDocument</a> stickers:<a href="/type/Vector%20t">Vector</a><<a href="/type/InputStickerSetItem">InputStickerSetItem</a>> software:flags.3?<a href="/type/string">string</a> = <a href="/type/messages.StickerSet">messages.StickerSet</a>;<br>
|
||||
<a href="/method/bots.setBotCommands">bots.setBotCommands</a>#0517165a scope:<a href="/type/BotCommandScope">BotCommandScope</a> lang_code:<a href="/type/string">string</a> commands:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotCommand">BotCommand</a>> = <a href="/type/Bool">Bool</a>;<br>
|
||||
<a href="/method/phone.checkGroupCall">phone.checkGroupCall</a>#b59cf977 call:<a href="/type/InputGroupCall">InputGroupCall</a> sources:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> = <a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>>;
|
||||
<a href="/method/phone.editGroupCallParticipant">phone.editGroupCallParticipant</a>#a5273abf flags:<a href="/type/%23">#</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> participant:<a href="/type/InputPeer">InputPeer</a> muted:flags.0?<a href="/type/Bool">Bool</a> volume:flags.1?<a href="/type/int">int</a> raise_hand:flags.2?<a href="/type/Bool">Bool</a> video_stopped:flags.3?<a href="/type/Bool">Bool</a> video_paused:flags.4?<a href="/type/Bool">Bool</a> presentation_paused:flags.5?<a href="/type/Bool">Bool</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.joinGroupCallPresentation">phone.joinGroupCallPresentation</a>#cbea6bc4 call:<a href="/type/InputGroupCall">InputGroupCall</a> params:<a href="/type/DataJSON">DataJSON</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.leaveGroupCallPresentation">phone.leaveGroupCallPresentation</a>#1c50d144 call:<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/method/stickers.checkShortName">stickers.checkShortName</a>#284b3639 short_name:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/stickers.suggestShortName">stickers.suggestShortName</a>#4dafc503 title:<a href="/type/string">string</a> = <a href="/type/stickers.SuggestedShortName">stickers.SuggestedShortName</a>;<br>
|
||||
<a href="/method/bots.resetBotCommands">bots.resetBotCommands</a>#3d8de0f9 scope:<a href="/type/BotCommandScope">BotCommandScope</a> lang_code:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/bots.getBotCommands">bots.getBotCommands</a>#e34c0dd6 scope:<a href="/type/BotCommandScope">BotCommandScope</a> lang_code:<a href="/type/string">string</a> = <a href="/type/Vector%20t">Vector</a><<a href="/type/BotCommand">BotCommand</a>>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-128" id="layer-128" name="layer-128"><i class="anchor-icon"></i></a><a href="/schema?layer=128">Layer 128</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>video_muted</strong> parameter, changed type of <strong>muted</strong> from <strong>flags.0?true</strong> to <strong>flags.0?Bool</strong> in <a href="/method/phone.editGroupCallParticipant">phone.editGroupCallParticipant</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Removed <strong>photo_small</strong>, <strong>photo_big</strong> parameters in <a href="/constructor/userProfilePhoto">userProfilePhoto</a></li>
|
||||
<li>Added <strong>photo_id</strong> parameter, removed <strong>photo_small</strong>, <strong>photo_big</strong> parameters in <a href="/constructor/chatPhoto">chatPhoto</a></li>
|
||||
<li>Removed <strong>location</strong> parameter in <a href="/constructor/photoSize">photoSize</a></li>
|
||||
<li>Removed <strong>location</strong> parameter in <a href="/constructor/photoCachedSize">photoCachedSize</a></li>
|
||||
<li>Added <strong>photo_id</strong> parameter, removed <strong>volume_id</strong>, <strong>local_id</strong> parameters in <a href="/constructor/inputPeerPhotoFileLocation">inputPeerPhotoFileLocation</a></li>
|
||||
<li>Added <strong>thumb_version</strong> parameter, removed <strong>volume_id</strong>, <strong>local_id</strong> parameters in <a href="/constructor/inputStickerSetThumb">inputStickerSetThumb</a></li>
|
||||
<li>Removed <strong>location</strong> parameter in <a href="/constructor/videoSize">videoSize</a></li>
|
||||
<li>Removed <strong>location</strong> parameter in <a href="/constructor/photoSizeProgressive">photoSizeProgressive</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
|
||||
<ul>
|
||||
<li>Removed fileLocationToBeDeprecated</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/userProfilePhoto">userProfilePhoto</a>#82d1f706 flags:<a href="/type/%23">#</a> has_video:flags.0?<a href="/constructor/true">true</a> photo_id:<a href="/type/long">long</a> stripped_thumb:flags.1?<a href="/type/bytes">bytes</a> dc_id:<a href="/type/int">int</a> = <a href="/type/UserProfilePhoto">UserProfilePhoto</a>;<br>
|
||||
<a href="/constructor/chatPhoto">chatPhoto</a>#1c6e1c11 flags:<a href="/type/%23">#</a> has_video:flags.0?<a href="/constructor/true">true</a> photo_id:<a href="/type/long">long</a> stripped_thumb:flags.1?<a href="/type/bytes">bytes</a> dc_id:<a href="/type/int">int</a> = <a href="/type/ChatPhoto">ChatPhoto</a>;<br>
|
||||
<a href="/constructor/photoSize">photoSize</a>#75c78e60 type:<a href="/type/string">string</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> size:<a href="/type/int">int</a> = <a href="/type/PhotoSize">PhotoSize</a>;
|
||||
<a href="/constructor/photoCachedSize">photoCachedSize</a>#021e1ad6 type:<a href="/type/string">string</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> bytes:<a href="/type/bytes">bytes</a> = <a href="/type/PhotoSize">PhotoSize</a>;<br>
|
||||
<a href="/constructor/inputPeerPhotoFileLocation">inputPeerPhotoFileLocation</a>#37257e99 flags:<a href="/type/%23">#</a> big:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> photo_id:<a href="/type/long">long</a> = <a href="/type/InputFileLocation">InputFileLocation</a>;
|
||||
<a href="/constructor/inputStickerSetThumb">inputStickerSetThumb</a>#9d84f3db stickerset:<a href="/type/InputStickerSet">InputStickerSet</a> thumb_version:<a href="/type/int">int</a> = <a href="/type/InputFileLocation">InputFileLocation</a>;<br>
|
||||
<a href="/constructor/videoSize">videoSize</a>#de33b094 flags:<a href="/type/%23">#</a> type:<a href="/type/string">string</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> size:<a href="/type/int">int</a> video_start_ts:flags.0?<a href="/type/double">double</a> = <a href="/type/VideoSize">VideoSize</a>;<br>
|
||||
<a href="/constructor/photoSizeProgressive">photoSizeProgressive</a>#fa3efb95 type:<a href="/type/string">string</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> sizes:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> = <a href="/type/PhotoSize">PhotoSize</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/phone.editGroupCallParticipant">phone.editGroupCallParticipant</a>#aec610e4 flags:<a href="/type/%23">#</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> participant:<a href="/type/InputPeer">InputPeer</a> muted:flags.0?<a href="/type/Bool">Bool</a> volume:flags.1?<a href="/type/int">int</a> raise_hand:flags.2?<a href="/type/Bool">Bool</a> video_muted:flags.3?<a href="/type/Bool">Bool</a> = <a href="/type/Updates">Updates</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-127" id="layer-127" name="layer-127"><i class="anchor-icon"></i></a><a href="/schema?layer=127">Layer 127</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/phone.toggleGroupCallStartSubscription">phone.toggleGroupCallStartSubscription</a></li>
|
||||
<li>Added <a href="/method/phone.startScheduledGroupCall">phone.startScheduledGroupCall</a></li>
|
||||
<li>Added <a href="/method/phone.saveDefaultGroupCallJoinAs">phone.saveDefaultGroupCallJoinAs</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>flags</strong>, <strong>peer</strong>, <strong>theme_params</strong> parameters in <a href="/method/payments.getPaymentForm">payments.getPaymentForm</a></li>
|
||||
<li>Added <strong>peer</strong> parameter in <a href="/method/payments.getPaymentReceipt">payments.getPaymentReceipt</a></li>
|
||||
<li>Added <strong>peer</strong> parameter in <a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a></li>
|
||||
<li>Added <strong>form_id</strong>, <strong>peer</strong>, <strong>tip_amount</strong> parameters in <a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a></li>
|
||||
<li>Added <strong>flags</strong>, <strong>title</strong>, <strong>schedule_date</strong> parameters in <a href="/method/phone.createGroupCall">phone.createGroupCall</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/inputBotInlineMessageMediaInvoice">inputBotInlineMessageMediaInvoice</a></li>
|
||||
<li>Added <a href="/constructor/botInlineMessageMediaInvoice">botInlineMessageMediaInvoice</a></li>
|
||||
<li>Added <a href="/constructor/messageActionGroupCallScheduled">messageActionGroupCallScheduled</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>stripped_thumb</strong> parameter in <a href="/constructor/userProfilePhoto">userProfilePhoto</a></li>
|
||||
<li>Added <strong>stripped_thumb</strong> parameter in <a href="/constructor/chatPhoto">chatPhoto</a></li>
|
||||
<li>Added <strong>thumb_version</strong> parameter in <a href="/constructor/stickerSet">stickerSet</a></li>
|
||||
<li>Added <strong>max_tip_amount</strong>, <strong>suggested_tip_amounts</strong> parameters in <a href="/constructor/invoice">invoice</a></li>
|
||||
<li>Changed type of <strong>start_param</strong> from <strong>string</strong> to <strong>flags.1?string</strong> in <a href="/constructor/inputMediaInvoice">inputMediaInvoice</a></li>
|
||||
<li>Added <strong>form_id</strong> parameter in <a href="/constructor/payments.paymentForm">payments.paymentForm</a></li>
|
||||
<li>Added <strong>title</strong>, <strong>description</strong>, <strong>photo</strong>, <strong>tip_amount</strong> parameters in <a href="/constructor/payments.paymentReceipt">payments.paymentReceipt</a></li>
|
||||
<li>Added <strong>schedule_start_subscribed</strong>, <strong>schedule_date</strong> parameters in <a href="/constructor/groupCall">groupCall</a></li>
|
||||
<li>Added <strong>params</strong> parameter in <a href="/constructor/groupCallParticipant">groupCallParticipant</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/userProfilePhoto">userProfilePhoto</a>#cc656077 flags:<a href="/type/%23">#</a> has_video:flags.0?<a href="/constructor/true">true</a> photo_id:<a href="/type/long">long</a> photo_small:<a href="/type/FileLocation">FileLocation</a> photo_big:<a href="/type/FileLocation">FileLocation</a> stripped_thumb:flags.1?<a href="/type/bytes">bytes</a> dc_id:<a href="/type/int">int</a> = <a href="/type/UserProfilePhoto">UserProfilePhoto</a>;<br>
|
||||
<a href="/constructor/chatPhoto">chatPhoto</a>#4790ee05 flags:<a href="/type/%23">#</a> has_video:flags.0?<a href="/constructor/true">true</a> photo_small:<a href="/type/FileLocation">FileLocation</a> photo_big:<a href="/type/FileLocation">FileLocation</a> stripped_thumb:flags.1?<a href="/type/bytes">bytes</a> dc_id:<a href="/type/int">int</a> = <a href="/type/ChatPhoto">ChatPhoto</a>;<br>
|
||||
<a href="/constructor/stickerSet">stickerSet</a>#d7df217a flags:<a href="/type/%23">#</a> archived:flags.1?<a href="/constructor/true">true</a> official:flags.2?<a href="/constructor/true">true</a> masks:flags.3?<a href="/constructor/true">true</a> animated:flags.5?<a href="/constructor/true">true</a> installed_date:flags.0?<a href="/type/int">int</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> title:<a href="/type/string">string</a> short_name:<a href="/type/string">string</a> thumbs:flags.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/PhotoSize">PhotoSize</a>> thumb_dc_id:flags.4?<a href="/type/int">int</a> thumb_version:flags.4?<a href="/type/int">int</a> count:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/StickerSet">StickerSet</a>;<br>
|
||||
<a href="/constructor/invoice">invoice</a>#0cd886e0 flags:<a href="/type/%23">#</a> test:flags.0?<a href="/constructor/true">true</a> name_requested:flags.1?<a href="/constructor/true">true</a> phone_requested:flags.2?<a href="/constructor/true">true</a> email_requested:flags.3?<a href="/constructor/true">true</a> shipping_address_requested:flags.4?<a href="/constructor/true">true</a> flexible:flags.5?<a href="/constructor/true">true</a> phone_to_provider:flags.6?<a href="/constructor/true">true</a> email_to_provider:flags.7?<a href="/constructor/true">true</a> currency:<a href="/type/string">string</a> prices:<a href="/type/Vector%20t">Vector</a><<a href="/type/LabeledPrice">LabeledPrice</a>> max_tip_amount:flags.8?<a href="/type/long">long</a> suggested_tip_amounts:flags.8?<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> = <a href="/type/Invoice">Invoice</a>;
|
||||
<a href="/constructor/inputMediaInvoice">inputMediaInvoice</a>#d9799874 flags:<a href="/type/%23">#</a> title:<a href="/type/string">string</a> description:<a href="/type/string">string</a> photo:flags.0?<a href="/type/InputWebDocument">InputWebDocument</a> invoice:<a href="/type/Invoice">Invoice</a> payload:<a href="/type/bytes">bytes</a> provider:<a href="/type/string">string</a> provider_data:<a href="/type/DataJSON">DataJSON</a> start_param:flags.1?<a href="/type/string">string</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
|
||||
<a href="/constructor/payments.paymentForm">payments.paymentForm</a>#8d0b2415 flags:<a href="/type/%23">#</a> can_save_credentials:flags.2?<a href="/constructor/true">true</a> password_missing:flags.3?<a href="/constructor/true">true</a> form_id:<a href="/type/long">long</a> bot_id:<a href="/type/int">int</a> invoice:<a href="/type/Invoice">Invoice</a> provider_id:<a href="/type/int">int</a> url:<a href="/type/string">string</a> native_provider:flags.4?<a href="/type/string">string</a> native_params:flags.4?<a href="/type/DataJSON">DataJSON</a> saved_info:flags.0?<a href="/type/PaymentRequestedInfo">PaymentRequestedInfo</a> saved_credentials:flags.1?<a href="/type/PaymentSavedCredentials">PaymentSavedCredentials</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/payments.PaymentForm">payments.PaymentForm</a>;
|
||||
<a href="/constructor/payments.paymentReceipt">payments.paymentReceipt</a>#10b555d0 flags:<a href="/type/%23">#</a> date:<a href="/type/int">int</a> bot_id:<a href="/type/int">int</a> provider_id:<a href="/type/int">int</a> title:<a href="/type/string">string</a> description:<a href="/type/string">string</a> photo:flags.2?<a href="/type/WebDocument">WebDocument</a> invoice:<a href="/type/Invoice">Invoice</a> info:flags.0?<a href="/type/PaymentRequestedInfo">PaymentRequestedInfo</a> shipping:flags.1?<a href="/type/ShippingOption">ShippingOption</a> tip_amount:flags.3?<a href="/type/long">long</a> currency:<a href="/type/string">string</a> total_amount:<a href="/type/long">long</a> credentials_title:<a href="/type/string">string</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/payments.PaymentReceipt">payments.PaymentReceipt</a>;<br>
|
||||
<a href="/constructor/groupCall">groupCall</a>#c95c6654 flags:<a href="/type/%23">#</a> join_muted:flags.1?<a href="/constructor/true">true</a> can_change_join_muted:flags.2?<a href="/constructor/true">true</a> join_date_asc:flags.6?<a href="/constructor/true">true</a> schedule_start_subscribed:flags.8?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> participants_count:<a href="/type/int">int</a> params:flags.0?<a href="/type/DataJSON">DataJSON</a> title:flags.3?<a href="/type/string">string</a> stream_dc_id:flags.4?<a href="/type/int">int</a> record_start_date:flags.5?<a href="/type/int">int</a> schedule_date:flags.7?<a href="/type/int">int</a> version:<a href="/type/int">int</a> = <a href="/type/GroupCall">GroupCall</a>;
|
||||
<a href="/constructor/groupCallParticipant">groupCallParticipant</a>#b96b25ee flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> left:flags.1?<a href="/constructor/true">true</a> can_self_unmute:flags.2?<a href="/constructor/true">true</a> just_joined:flags.4?<a href="/constructor/true">true</a> versioned:flags.5?<a href="/constructor/true">true</a> min:flags.8?<a href="/constructor/true">true</a> muted_by_you:flags.9?<a href="/constructor/true">true</a> volume_by_admin:flags.10?<a href="/constructor/true">true</a> self:flags.12?<a href="/constructor/true">true</a> peer:<a href="/type/Peer">Peer</a> date:<a href="/type/int">int</a> active_date:flags.3?<a href="/type/int">int</a> source:<a href="/type/int">int</a> volume:flags.7?<a href="/type/int">int</a> about:flags.11?<a href="/type/string">string</a> raise_hand_rating:flags.13?<a href="/type/long">long</a> params:flags.6?<a href="/type/DataJSON">DataJSON</a> = <a href="/type/GroupCallParticipant">GroupCallParticipant</a>;<br>
|
||||
<a href="/constructor/inputBotInlineMessageMediaInvoice">inputBotInlineMessageMediaInvoice</a>#d7e78225 flags:<a href="/type/%23">#</a> title:<a href="/type/string">string</a> description:<a href="/type/string">string</a> photo:flags.0?<a href="/type/InputWebDocument">InputWebDocument</a> invoice:<a href="/type/Invoice">Invoice</a> payload:<a href="/type/bytes">bytes</a> provider:<a href="/type/string">string</a> provider_data:<a href="/type/DataJSON">DataJSON</a> reply_markup:flags.2?<a href="/type/ReplyMarkup">ReplyMarkup</a> = <a href="/type/InputBotInlineMessage">InputBotInlineMessage</a>;<br>
|
||||
<a href="/constructor/botInlineMessageMediaInvoice">botInlineMessageMediaInvoice</a>#354a9b09 flags:<a href="/type/%23">#</a> shipping_address_requested:flags.1?<a href="/constructor/true">true</a> test:flags.3?<a href="/constructor/true">true</a> title:<a href="/type/string">string</a> description:<a href="/type/string">string</a> photo:flags.0?<a href="/type/WebDocument">WebDocument</a> currency:<a href="/type/string">string</a> total_amount:<a href="/type/long">long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup">ReplyMarkup</a> = <a href="/type/BotInlineMessage">BotInlineMessage</a>;<br>
|
||||
<a href="/constructor/messageActionGroupCallScheduled">messageActionGroupCallScheduled</a>#b3a07661 call:<a href="/type/InputGroupCall">InputGroupCall</a> schedule_date:<a href="/type/int">int</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/payments.getPaymentForm">payments.getPaymentForm</a>#8a333c8d flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> theme_params:flags.0?<a href="/type/DataJSON">DataJSON</a> = <a href="/type/payments.PaymentForm">payments.PaymentForm</a>;
|
||||
<a href="/method/payments.getPaymentReceipt">payments.getPaymentReceipt</a>#2478d1cc peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> = <a href="/type/payments.PaymentReceipt">payments.PaymentReceipt</a>;
|
||||
<a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a>#db103170 flags:<a href="/type/%23">#</a> save:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> info:<a href="/type/PaymentRequestedInfo">PaymentRequestedInfo</a> = <a href="/type/payments.ValidatedRequestedInfo">payments.ValidatedRequestedInfo</a>;
|
||||
<a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a>#30c3bc9d flags:<a href="/type/%23">#</a> form_id:<a href="/type/long">long</a> peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> requested_info_id:flags.0?<a href="/type/string">string</a> shipping_option_id:flags.1?<a href="/type/string">string</a> credentials:<a href="/type/InputPaymentCredentials">InputPaymentCredentials</a> tip_amount:flags.2?<a href="/type/long">long</a> = <a href="/type/payments.PaymentResult">payments.PaymentResult</a>;
|
||||
<a href="/method/phone.createGroupCall">phone.createGroupCall</a>#48cdc6d8 flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> random_id:<a href="/type/int">int</a> title:flags.0?<a href="/type/string">string</a> schedule_date:flags.1?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.toggleGroupCallStartSubscription">phone.toggleGroupCallStartSubscription</a>#219c34e6 call:<a href="/type/InputGroupCall">InputGroupCall</a> subscribed:<a href="/type/Bool">Bool</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.startScheduledGroupCall">phone.startScheduledGroupCall</a>#5680e342 call:<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.saveDefaultGroupCallJoinAs">phone.saveDefaultGroupCallJoinAs</a>#575e1f8c peer:<a href="/type/InputPeer">InputPeer</a> join_as:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-126" id="layer-126" name="layer-126"><i class="anchor-icon"></i></a><a href="/schema?layer=126">Layer 126</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>participant</strong> parameter, removed <strong>user_id</strong> parameter in <a href="/method/channels.getParticipant">channels.getParticipant</a></li>
|
||||
<li>Added <strong>participant</strong> parameter, removed <strong>user_id</strong> parameter in <a href="/method/channels.editBanned">channels.editBanned</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>chats</strong> parameter in <a href="/constructor/channels.channelParticipants">channels.channelParticipants</a></li>
|
||||
<li>Added <strong>chats</strong> parameter in <a href="/constructor/channels.channelParticipant">channels.channelParticipant</a></li>
|
||||
<li>Added <strong>peer</strong> parameter, removed <strong>user_id</strong> parameter in <a href="/constructor/channelParticipantBanned">channelParticipantBanned</a></li>
|
||||
<li>Added <strong>peer</strong> parameter, removed <strong>user_id</strong> parameter in <a href="/constructor/channelParticipantLeft">channelParticipantLeft</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/channels.channelParticipants">channels.channelParticipants</a>#9ab0feaf count:<a href="/type/int">int</a> participants:<a href="/type/Vector%20t">Vector</a><<a href="/type/ChannelParticipant">ChannelParticipant</a>> chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/channels.ChannelParticipants">channels.ChannelParticipants</a>;
|
||||
<a href="/constructor/channels.channelParticipant">channels.channelParticipant</a>#dfb80317 participant:<a href="/type/ChannelParticipant">ChannelParticipant</a> chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/channels.ChannelParticipant">channels.ChannelParticipant</a>;
|
||||
<a href="/constructor/channelParticipantBanned">channelParticipantBanned</a>#50a1dfd6 flags:<a href="/type/%23">#</a> left:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/Peer">Peer</a> kicked_by:<a href="/type/int">int</a> date:<a href="/type/int">int</a> banned_rights:<a href="/type/ChatBannedRights">ChatBannedRights</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;
|
||||
<a href="/constructor/channelParticipantLeft">channelParticipantLeft</a>#1b03f006 peer:<a href="/type/Peer">Peer</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/channels.getParticipant">channels.getParticipant</a>#a0ab6cc6 channel:<a href="/type/InputChannel">InputChannel</a> participant:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/channels.ChannelParticipant">channels.ChannelParticipant</a>;
|
||||
<a href="/method/channels.editBanned">channels.editBanned</a>#96e6cd81 channel:<a href="/type/InputChannel">InputChannel</a> participant:<a href="/type/InputPeer">InputPeer</a> banned_rights:<a href="/type/ChatBannedRights">ChatBannedRights</a> = <a href="/type/Updates">Updates</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-125" id="layer-125" name="layer-125"><i class="anchor-icon"></i></a><a href="/schema?layer=125">Layer 125</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/phone.toggleGroupCallRecord">phone.toggleGroupCallRecord</a> - </li>
|
||||
<li>Added <a href="/method/phone.editGroupCallParticipant">phone.editGroupCallParticipant</a> - </li>
|
||||
<li>Added <a href="/method/phone.editGroupCallTitle">phone.editGroupCallTitle</a> - </li>
|
||||
<li>Added <a href="/method/phone.getGroupCallJoinAs">phone.getGroupCallJoinAs</a> - </li>
|
||||
<li>Added <a href="/method/phone.exportGroupCallInvite">phone.exportGroupCallInvite</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>flags</strong>, <strong>url</strong> parameters, changed type of <strong>peer</strong> from <strong>InputPeer</strong> to <strong>flags.1?InputPeer</strong>, <strong>msg_id</strong> from <strong>int</strong> to <strong>flags.1?int</strong>, <strong>button_id</strong> from <strong>int</strong> to <strong>flags.1?int</strong> in <a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a></li>
|
||||
<li>Added <strong>url</strong> parameter, changed type of <strong>peer</strong> from <strong>InputPeer</strong> to <strong>flags.1?InputPeer</strong>, <strong>msg_id</strong> from <strong>int</strong> to <strong>flags.1?int</strong>, <strong>button_id</strong> from <strong>int</strong> to <strong>flags.1?int</strong> in <a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a></li>
|
||||
<li>Added <strong>video_stopped</strong>, <strong>join_as</strong>, <strong>invite_hash</strong> parameters in <a href="/method/phone.joinGroupCall">phone.joinGroupCall</a></li>
|
||||
<li>Added <strong>reset_invite_hash</strong> parameter in <a href="/method/phone.toggleGroupCallSettings">phone.toggleGroupCallSettings</a></li>
|
||||
<li>Changed type of <strong>ids</strong> from <strong>Vector<int></strong> to <strong>Vector<InputPeer></strong> in <a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#deleted-methods" id="deleted-methods" name="deleted-methods"><i class="anchor-icon"></i></a>Deleted Methods</h5>
|
||||
<ul>
|
||||
<li>Removed phone.editGroupCallMember</li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/inputGroupCallStream">inputGroupCallStream</a> - </li>
|
||||
<li>Added <a href="/constructor/phone.joinAsPeers">phone.joinAsPeers</a> - </li>
|
||||
<li>Added <a href="/constructor/phone.exportedGroupCallInvite">phone.exportedGroupCallInvite</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>groupcall_default_join_as</strong> parameter in <a href="/constructor/chatFull">chatFull</a></li>
|
||||
<li>Added <strong>from_id</strong> parameter, removed <strong>user_id</strong> parameter in <a href="/constructor/updateChatUserTyping">updateChatUserTyping</a></li>
|
||||
<li>Added <strong>groupcall_default_join_as</strong> parameter in <a href="/constructor/channelFull">channelFull</a></li>
|
||||
<li>Added <strong>from_id</strong> parameter, removed <strong>user_id</strong> parameter in <a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a></li>
|
||||
<li>Added <strong>join_date_asc</strong>, <strong>title</strong>, <strong>stream_dc_id</strong>, <strong>record_start_date</strong> parameters in <a href="/constructor/groupCall">groupCall</a></li>
|
||||
<li>Added <strong>self</strong>, <strong>peer</strong>, <strong>about</strong>, <strong>raise_hand_rating</strong> parameters, removed <strong>user_id</strong> parameter in <a href="/constructor/groupCallParticipant">groupCallParticipant</a></li>
|
||||
<li>Added <strong>chats</strong> parameter in <a href="/constructor/phone.groupCall">phone.groupCall</a></li>
|
||||
<li>Added <strong>chats</strong> parameter in <a href="/constructor/phone.groupParticipants">phone.groupParticipants</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/chatFull">chatFull</a>#8a1e2983 flags:<a href="/type/%23">#</a> can_set_username:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.8?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants:<a href="/type/ChatParticipants">ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.13?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> pinned_msg_id:flags.6?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> call:flags.12?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.14?<a href="/type/int">int</a> groupcall_default_join_as:flags.15?<a href="/type/Peer">Peer</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/updateChatUserTyping">updateChatUserTyping</a>#86cadb6c chat_id:<a href="/type/int">int</a> from_id:<a href="/type/Peer">Peer</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/channelFull">channelFull</a>#548c3f93 flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> can_view_stats:flags.20?<a href="/constructor/true">true</a> blocked:flags.22?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.23?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> call:flags.21?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.24?<a href="/type/int">int</a> pending_suggestions:flags.25?<a href="/type/Vector%20t">Vector</a><<a href="/type/string">string</a>> groupcall_default_join_as:flags.26?<a href="/type/Peer">Peer</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a>#6b171718 flags:<a href="/type/%23">#</a> channel_id:<a href="/type/int">int</a> top_msg_id:flags.0?<a href="/type/int">int</a> from_id:<a href="/type/Peer">Peer</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/groupCall">groupCall</a>#c0c2052e flags:<a href="/type/%23">#</a> join_muted:flags.1?<a href="/constructor/true">true</a> can_change_join_muted:flags.2?<a href="/constructor/true">true</a> join_date_asc:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> participants_count:<a href="/type/int">int</a> params:flags.0?<a href="/type/DataJSON">DataJSON</a> title:flags.3?<a href="/type/string">string</a> stream_dc_id:flags.4?<a href="/type/int">int</a> record_start_date:flags.5?<a href="/type/int">int</a> version:<a href="/type/int">int</a> = <a href="/type/GroupCall">GroupCall</a>;
|
||||
<a href="/constructor/groupCallParticipant">groupCallParticipant</a>#19adba89 flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> left:flags.1?<a href="/constructor/true">true</a> can_self_unmute:flags.2?<a href="/constructor/true">true</a> just_joined:flags.4?<a href="/constructor/true">true</a> versioned:flags.5?<a href="/constructor/true">true</a> min:flags.8?<a href="/constructor/true">true</a> muted_by_you:flags.9?<a href="/constructor/true">true</a> volume_by_admin:flags.10?<a href="/constructor/true">true</a> self:flags.12?<a href="/constructor/true">true</a> peer:<a href="/type/Peer">Peer</a> date:<a href="/type/int">int</a> active_date:flags.3?<a href="/type/int">int</a> source:<a href="/type/int">int</a> volume:flags.7?<a href="/type/int">int</a> about:flags.11?<a href="/type/string">string</a> raise_hand_rating:flags.13?<a href="/type/long">long</a> = <a href="/type/GroupCallParticipant">GroupCallParticipant</a>;<br>
|
||||
<a href="/constructor/phone.groupCall">phone.groupCall</a>#9e727aad call:<a href="/type/GroupCall">GroupCall</a> participants:<a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipant">GroupCallParticipant</a>> participants_next_offset:<a href="/type/string">string</a> chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/phone.GroupCall">phone.GroupCall</a>;
|
||||
<a href="/constructor/phone.groupParticipants">phone.groupParticipants</a>#f47751b6 count:<a href="/type/int">int</a> participants:<a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipant">GroupCallParticipant</a>> next_offset:<a href="/type/string">string</a> chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> version:<a href="/type/int">int</a> = <a href="/type/phone.GroupParticipants">phone.GroupParticipants</a>;<br>
|
||||
<a href="/constructor/inputGroupCallStream">inputGroupCallStream</a>#bba51639 call:<a href="/type/InputGroupCall">InputGroupCall</a> time_ms:<a href="/type/long">long</a> scale:<a href="/type/int">int</a> = <a href="/type/InputFileLocation">InputFileLocation</a>;<br>
|
||||
<a href="/constructor/phone.joinAsPeers">phone.joinAsPeers</a>#afe5623f peers:<a href="/type/Vector%20t">Vector</a><<a href="/type/Peer">Peer</a>> chats:<a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/phone.JoinAsPeers">phone.JoinAsPeers</a>;
|
||||
<a href="/constructor/phone.exportedGroupCallInvite">phone.exportedGroupCallInvite</a>#204bd158 link:<a href="/type/string">string</a> = <a href="/type/phone.ExportedGroupCallInvite">phone.ExportedGroupCallInvite</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a>#198fb446 flags:<a href="/type/%23">#</a> peer:flags.1?<a href="/type/InputPeer">InputPeer</a> msg_id:flags.1?<a href="/type/int">int</a> button_id:flags.1?<a href="/type/int">int</a> url:flags.2?<a href="/type/string">string</a> = <a href="/type/UrlAuthResult">UrlAuthResult</a>;
|
||||
<a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a>#b12c7125 flags:<a href="/type/%23">#</a> write_allowed:flags.0?<a href="/constructor/true">true</a> peer:flags.1?<a href="/type/InputPeer">InputPeer</a> msg_id:flags.1?<a href="/type/int">int</a> button_id:flags.1?<a href="/type/int">int</a> url:flags.2?<a href="/type/string">string</a> = <a href="/type/UrlAuthResult">UrlAuthResult</a>;<br>
|
||||
<a href="/method/phone.joinGroupCall">phone.joinGroupCall</a>#b132ff7b flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> video_stopped:flags.2?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> join_as:<a href="/type/InputPeer">InputPeer</a> invite_hash:flags.1?<a href="/type/string">string</a> params:<a href="/type/DataJSON">DataJSON</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.toggleGroupCallSettings">phone.toggleGroupCallSettings</a>#74bbb43d flags:<a href="/type/%23">#</a> reset_invite_hash:flags.1?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> join_muted:flags.0?<a href="/type/Bool">Bool</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a>#c558d8ab call:<a href="/type/InputGroupCall">InputGroupCall</a> ids:<a href="/type/Vector%20t">Vector</a><<a href="/type/InputPeer">InputPeer</a>> sources:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> offset:<a href="/type/string">string</a> limit:<a href="/type/int">int</a> = <a href="/type/phone.GroupParticipants">phone.GroupParticipants</a>;
|
||||
<a href="/method/phone.toggleGroupCallRecord">phone.toggleGroupCallRecord</a>#c02a66d7 flags:<a href="/type/%23">#</a> start:flags.0?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> title:flags.1?<a href="/type/string">string</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.editGroupCallParticipant">phone.editGroupCallParticipant</a>#d975eb80 flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> participant:<a href="/type/InputPeer">InputPeer</a> volume:flags.1?<a href="/type/int">int</a> raise_hand:flags.2?<a href="/type/Bool">Bool</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.editGroupCallTitle">phone.editGroupCallTitle</a>#1ca6ac0a call:<a href="/type/InputGroupCall">InputGroupCall</a> title:<a href="/type/string">string</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.getGroupCallJoinAs">phone.getGroupCallJoinAs</a>#ef7c213a peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/phone.JoinAsPeers">phone.JoinAsPeers</a>;
|
||||
<a href="/method/phone.exportGroupCallInvite">phone.exportGroupCallInvite</a>#e6aa647f flags:<a href="/type/%23">#</a> can_self_unmute:flags.0?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/phone.ExportedGroupCallInvite">phone.ExportedGroupCallInvite</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-124" id="layer-124" name="layer-124"><i class="anchor-icon"></i></a><a href="/schema?layer=124">Layer 124</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/messages.getExportedChatInvites">messages.getExportedChatInvites</a></li>
|
||||
<li>Added <a href="/method/messages.getExportedChatInvite">messages.getExportedChatInvite</a></li>
|
||||
<li>Added <a href="/method/messages.editExportedChatInvite">messages.editExportedChatInvite</a></li>
|
||||
<li>Added <a href="/method/messages.deleteRevokedExportedChatInvites">messages.deleteRevokedExportedChatInvites</a> - </li>
|
||||
<li>Added <a href="/method/messages.deleteExportedChatInvite">messages.deleteExportedChatInvite</a> - </li>
|
||||
<li>Added <a href="/method/messages.getAdminsWithInvites">messages.getAdminsWithInvites</a> - </li>
|
||||
<li>Added <a href="/method/messages.getChatInviteImporters">messages.getChatInviteImporters</a> - </li>
|
||||
<li>Added <a href="/method/messages.setHistoryTTL">messages.setHistoryTTL</a></li>
|
||||
<li>Added <a href="/method/account.reportProfilePhoto">account.reportProfilePhoto</a></li>
|
||||
<li>Added <a href="/method/channels.convertToGigagroup">channels.convertToGigagroup</a></li>
|
||||
<li>Added <a href="/method/messages.checkHistoryImportPeer">messages.checkHistoryImportPeer</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>message</strong> parameter in <a href="/method/account.reportPeer">account.reportPeer</a></li>
|
||||
<li>Added <strong>message</strong> parameter in <a href="/method/messages.report">messages.report</a></li>
|
||||
<li>Added <strong>flags</strong>, <strong>legacy_revoke_permanent</strong>, <strong>expire_date</strong>, <strong>usage_limit</strong> parameters in <a href="/method/messages.exportChatInvite">messages.exportChatInvite</a></li>
|
||||
<li>Added <strong>peer</strong> parameter in <a href="/method/help.dismissSuggestion">help.dismissSuggestion</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/messageActionSetMessagesTTL">messageActionSetMessagesTTL</a> - </li>
|
||||
<li>Added <a href="/constructor/updatePeerHistoryTTL">updatePeerHistoryTTL</a></li>
|
||||
<li>Added <a href="/constructor/updateChatParticipant">updateChatParticipant</a></li>
|
||||
<li>Added <a href="/constructor/updateChannelParticipant">updateChannelParticipant</a> - A participant has left, joined, was banned or admined in a <a href="/api/channel">channel or supergroup</a>.</li>
|
||||
<li>Added <a href="/constructor/updateBotStopped">updateBotStopped</a></li>
|
||||
<li>Added <a href="/constructor/chatInviteImporter">chatInviteImporter</a></li>
|
||||
<li>Added <a href="/constructor/messages.exportedChatInvites">messages.exportedChatInvites</a></li>
|
||||
<li>Added <a href="/constructor/messages.exportedChatInvite">messages.exportedChatInvite</a> - </li>
|
||||
<li>Added <a href="/constructor/messages.exportedChatInviteReplaced">messages.exportedChatInviteReplaced</a> - </li>
|
||||
<li>Added <a href="/constructor/messages.chatInviteImporters">messages.chatInviteImporters</a></li>
|
||||
<li>Added <a href="/constructor/chatAdminWithInvites">chatAdminWithInvites</a> - </li>
|
||||
<li>Added <a href="/constructor/messages.chatAdminsWithInvites">messages.chatAdminsWithInvites</a></li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionParticipantJoinByInvite">channelAdminLogEventActionParticipantJoinByInvite</a></li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionExportedInviteDelete">channelAdminLogEventActionExportedInviteDelete</a></li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionExportedInviteRevoke">channelAdminLogEventActionExportedInviteRevoke</a></li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionExportedInviteEdit">channelAdminLogEventActionExportedInviteEdit</a></li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionParticipantVolume">channelAdminLogEventActionParticipantVolume</a> - </li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionChangeHistoryTTL">channelAdminLogEventActionChangeHistoryTTL</a> - </li>
|
||||
<li>Added <a href="/constructor/messages.checkedHistoryImportPeer">messages.checkedHistoryImportPeer</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>ttl_period</strong> parameter in <a href="/constructor/chatFull">chatFull</a></li>
|
||||
<li>Added <strong>ttl_period</strong> parameter in <a href="/constructor/message">message</a></li>
|
||||
<li>Added <strong>ttl_period</strong> parameter in <a href="/constructor/messageService">messageService</a></li>
|
||||
<li>Removed <strong>text</strong> parameter in <a href="/constructor/inputReportReasonOther">inputReportReasonOther</a></li>
|
||||
<li>Added <strong>ttl_period</strong> parameter in <a href="/constructor/userFull">userFull</a></li>
|
||||
<li>Added <strong>ttl_period</strong> parameter in <a href="/constructor/updateShortMessage">updateShortMessage</a></li>
|
||||
<li>Added <strong>ttl_period</strong> parameter in <a href="/constructor/updateShortChatMessage">updateShortChatMessage</a></li>
|
||||
<li>Added <strong>ttl_period</strong> parameter in <a href="/constructor/updateShortSentMessage">updateShortSentMessage</a></li>
|
||||
<li>Added <strong>ttl_period</strong>, <strong>pending_suggestions</strong> parameters in <a href="/constructor/channelFull">channelFull</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/chatFull">chatFull</a>#f06c4018 flags:<a href="/type/%23">#</a> can_set_username:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.8?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants:<a href="/type/ChatParticipants">ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.13?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> pinned_msg_id:flags.6?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> call:flags.12?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.14?<a href="/type/int">int</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/message">message</a>#bce383d2 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> from_scheduled:flags.18?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> edit_hide:flags.21?<a href="/constructor/true">true</a> pinned:flags.24?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> peer_id:<a href="/type/Peer">Peer</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> message:<a href="/type/string">string</a> media:flags.9?<a href="/type/MessageMedia">MessageMedia</a> reply_markup:flags.6?<a href="/type/ReplyMarkup">ReplyMarkup</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> views:flags.10?<a href="/type/int">int</a> forwards:flags.10?<a href="/type/int">int</a> replies:flags.23?<a href="/type/MessageReplies">MessageReplies</a> edit_date:flags.15?<a href="/type/int">int</a> post_author:flags.16?<a href="/type/string">string</a> grouped_id:flags.17?<a href="/type/long">long</a> restriction_reason:flags.22?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> ttl_period:flags.25?<a href="/type/int">int</a> = <a href="/type/Message">Message</a>;
|
||||
<a href="/constructor/messageService">messageService</a>#2b085862 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> peer_id:<a href="/type/Peer">Peer</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> action:<a href="/type/MessageAction">MessageAction</a> ttl_period:flags.25?<a href="/type/int">int</a> = <a href="/type/Message">Message</a>;<br>
|
||||
<a href="/constructor/inputReportReasonOther">inputReportReasonOther</a>#c1e4a2b1 = <a href="/type/ReportReason">ReportReason</a>;<br>
|
||||
<a href="/constructor/userFull">userFull</a>#139a9a77 flags:<a href="/type/%23">#</a> blocked:flags.0?<a href="/constructor/true">true</a> phone_calls_available:flags.4?<a href="/constructor/true">true</a> phone_calls_private:flags.5?<a href="/constructor/true">true</a> can_pin_message:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.12?<a href="/constructor/true">true</a> video_calls_available:flags.13?<a href="/constructor/true">true</a> user:<a href="/type/User">User</a> about:flags.1?<a href="/type/string">string</a> settings:<a href="/type/PeerSettings">PeerSettings</a> profile_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> bot_info:flags.3?<a href="/type/BotInfo">BotInfo</a> pinned_msg_id:flags.6?<a href="/type/int">int</a> common_chats_count:<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> ttl_period:flags.14?<a href="/type/int">int</a> = <a href="/type/UserFull">UserFull</a>;
|
||||
<a href="/constructor/updateShortMessage">updateShortMessage</a>#faeff833 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> user_id:<a href="/type/int">int</a> message:<a href="/type/string">string</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> ttl_period:flags.25?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/constructor/updateShortChatMessage">updateShortChatMessage</a>#1157b858 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:<a href="/type/int">int</a> chat_id:<a href="/type/int">int</a> message:<a href="/type/string">string</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> ttl_period:flags.25?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/constructor/updateShortSentMessage">updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> media:flags.9?<a href="/type/MessageMedia">MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> ttl_period:flags.25?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/constructor/channelFull">channelFull</a>#2548c037 flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> can_view_stats:flags.20?<a href="/constructor/true">true</a> blocked:flags.22?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.23?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> call:flags.21?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.24?<a href="/type/int">int</a> pending_suggestions:flags.25?<a href="/type/Vector%20t">Vector</a><<a href="/type/string">string</a>> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/messageActionSetMessagesTTL">messageActionSetMessagesTTL</a>#aa1afbfd period:<a href="/type/int">int</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
||||
<a href="/constructor/updatePeerHistoryTTL">updatePeerHistoryTTL</a>#bb9bb9a5 flags:<a href="/type/%23">#</a> peer:<a href="/type/Peer">Peer</a> ttl_period:flags.0?<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChatParticipant">updateChatParticipant</a>#f3b3781f flags:<a href="/type/%23">#</a> chat_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> actor_id:<a href="/type/int">int</a> user_id:<a href="/type/int">int</a> prev_participant:flags.0?<a href="/type/ChatParticipant">ChatParticipant</a> new_participant:flags.1?<a href="/type/ChatParticipant">ChatParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateChannelParticipant">updateChannelParticipant</a>#7fecb1ec flags:<a href="/type/%23">#</a> channel_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> actor_id:<a href="/type/int">int</a> user_id:<a href="/type/int">int</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>;
|
||||
<a href="/constructor/updateBotStopped">updateBotStopped</a>#07f9488a user_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> stopped:<a href="/type/Bool">Bool</a> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/chatInviteImporter">chatInviteImporter</a>#1e3e6680 user_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> = <a href="/type/ChatInviteImporter">ChatInviteImporter</a>;<br>
|
||||
<a href="/constructor/messages.exportedChatInvites">messages.exportedChatInvites</a>#bdc62dcc count:<a href="/type/int">int</a> invites:<a href="/type/Vector%20t">Vector</a><<a href="/type/ExportedChatInvite">ExportedChatInvite</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/messages.ExportedChatInvites">messages.ExportedChatInvites</a>;
|
||||
<a href="/constructor/messages.exportedChatInvite">messages.exportedChatInvite</a>#1871be50 invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/messages.ExportedChatInvite">messages.ExportedChatInvite</a>;
|
||||
<a href="/constructor/messages.exportedChatInviteReplaced">messages.exportedChatInviteReplaced</a>#222600ef invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> new_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/messages.ExportedChatInvite">messages.ExportedChatInvite</a>;
|
||||
<a href="/constructor/messages.chatInviteImporters">messages.chatInviteImporters</a>#81b6b00a count:<a href="/type/int">int</a> importers:<a href="/type/Vector%20t">Vector</a><<a href="/type/ChatInviteImporter">ChatInviteImporter</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/messages.ChatInviteImporters">messages.ChatInviteImporters</a>;<br>
|
||||
<a href="/constructor/chatAdminWithInvites">chatAdminWithInvites</a>#dfd2330f admin_id:<a href="/type/int">int</a> invites_count:<a href="/type/int">int</a> revoked_invites_count:<a href="/type/int">int</a> = <a href="/type/ChatAdminWithInvites">ChatAdminWithInvites</a>;<br>
|
||||
<a href="/constructor/messages.chatAdminsWithInvites">messages.chatAdminsWithInvites</a>#b69b72d7 admins:<a href="/type/Vector%20t">Vector</a><<a href="/type/ChatAdminWithInvites">ChatAdminWithInvites</a>> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/messages.ChatAdminsWithInvites">messages.ChatAdminsWithInvites</a>;<br>
|
||||
<a href="/constructor/channelAdminLogEventActionParticipantJoinByInvite">channelAdminLogEventActionParticipantJoinByInvite</a>#5cdada77 invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionExportedInviteDelete">channelAdminLogEventActionExportedInviteDelete</a>#5a50fca4 invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionExportedInviteRevoke">channelAdminLogEventActionExportedInviteRevoke</a>#410a134e invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionExportedInviteEdit">channelAdminLogEventActionExportedInviteEdit</a>#e90ebb59 prev_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> new_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionParticipantVolume">channelAdminLogEventActionParticipantVolume</a>#3e7f6847 participant:<a href="/type/GroupCallParticipant">GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionChangeHistoryTTL">channelAdminLogEventActionChangeHistoryTTL</a>#6e941a38 prev_value:<a href="/type/int">int</a> new_value:<a href="/type/int">int</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;<br>
|
||||
<a href="/constructor/messages.checkedHistoryImportPeer">messages.checkedHistoryImportPeer</a>#a24de717 confirm_text:<a href="/type/string">string</a> = <a href="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/account.reportPeer">account.reportPeer</a>#c5ba3d86 peer:<a href="/type/InputPeer">InputPeer</a> reason:<a href="/type/ReportReason">ReportReason</a> message:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;<br>
|
||||
<a href="/method/messages.report">messages.report</a>#8953ab4e peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> reason:<a href="/type/ReportReason">ReportReason</a> message:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/messages.exportChatInvite">messages.exportChatInvite</a>#14b9bcd7 flags:<a href="/type/%23">#</a> legacy_revoke_permanent:flags.2?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> expire_date:flags.0?<a href="/type/int">int</a> usage_limit:flags.1?<a href="/type/int">int</a> = <a href="/type/ExportedChatInvite">ExportedChatInvite</a>;<br>
|
||||
<a href="/method/help.dismissSuggestion">help.dismissSuggestion</a>#f50dbaa1 peer:<a href="/type/InputPeer">InputPeer</a> suggestion:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;<br>
|
||||
<a href="/method/messages.getExportedChatInvites">messages.getExportedChatInvites</a>#a2b5a3f6 flags:<a href="/type/%23">#</a> revoked:flags.3?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> admin_id:<a href="/type/InputUser">InputUser</a> offset_date:flags.2?<a href="/type/int">int</a> offset_link:flags.2?<a href="/type/string">string</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.ExportedChatInvites">messages.ExportedChatInvites</a>;
|
||||
<a href="/method/messages.getExportedChatInvite">messages.getExportedChatInvite</a>#73746f5c peer:<a href="/type/InputPeer">InputPeer</a> link:<a href="/type/string">string</a> = <a href="/type/messages.ExportedChatInvite">messages.ExportedChatInvite</a>;
|
||||
<a href="/method/messages.editExportedChatInvite">messages.editExportedChatInvite</a>#02e4ffbe flags:<a href="/type/%23">#</a> revoked:flags.2?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> link:<a href="/type/string">string</a> expire_date:flags.0?<a href="/type/int">int</a> usage_limit:flags.1?<a href="/type/int">int</a> = <a href="/type/messages.ExportedChatInvite">messages.ExportedChatInvite</a>;
|
||||
<a href="/method/messages.deleteRevokedExportedChatInvites">messages.deleteRevokedExportedChatInvites</a>#56987bd5 peer:<a href="/type/InputPeer">InputPeer</a> admin_id:<a href="/type/InputUser">InputUser</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/messages.deleteExportedChatInvite">messages.deleteExportedChatInvite</a>#d464a42b peer:<a href="/type/InputPeer">InputPeer</a> link:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/messages.getAdminsWithInvites">messages.getAdminsWithInvites</a>#3920e6ef peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/messages.ChatAdminsWithInvites">messages.ChatAdminsWithInvites</a>;
|
||||
<a href="/method/messages.getChatInviteImporters">messages.getChatInviteImporters</a>#26fb7289 peer:<a href="/type/InputPeer">InputPeer</a> link:<a href="/type/string">string</a> offset_date:<a href="/type/int">int</a> offset_user:<a href="/type/InputUser">InputUser</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.ChatInviteImporters">messages.ChatInviteImporters</a>;
|
||||
<a href="/method/messages.setHistoryTTL">messages.setHistoryTTL</a>#b80e5fe4 peer:<a href="/type/InputPeer">InputPeer</a> period:<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/method/account.reportProfilePhoto">account.reportProfilePhoto</a>#fa8cc6f5 peer:<a href="/type/InputPeer">InputPeer</a> photo_id:<a href="/type/InputPhoto">InputPhoto</a> reason:<a href="/type/ReportReason">ReportReason</a> message:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;<br>
|
||||
<a href="/method/channels.convertToGigagroup">channels.convertToGigagroup</a>#0b290c69 channel:<a href="/type/InputChannel">InputChannel</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/method/messages.checkHistoryImportPeer">messages.checkHistoryImportPeer</a>#5dc60f03 peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-123" id="layer-123" name="layer-123"><i class="anchor-icon"></i></a><a href="/schema?layer=123">Layer 123</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/messages.deleteChat">messages.deleteChat</a> - </li>
|
||||
<li>Added <a href="/method/messages.deletePhoneCallHistory">messages.deletePhoneCallHistory</a></li>
|
||||
<li>Added <a href="/method/messages.checkHistoryImport">messages.checkHistoryImport</a> - </li>
|
||||
<li>Added <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a> - </li>
|
||||
<li>Added <a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a></li>
|
||||
<li>Added <a href="/method/messages.startHistoryImport">messages.startHistoryImport</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>flags</strong>, <strong>revoke_history</strong> parameters in <a href="/method/messages.deleteChatUser">messages.deleteChatUser</a></li>
|
||||
<li>Added <strong>flags</strong>, <strong>delete_history</strong> parameters in <a href="/method/messages.discardEncryption">messages.discardEncryption</a></li>
|
||||
<li>Added <strong>volume</strong> parameter in <a href="/method/phone.editGroupCallMember">phone.editGroupCallMember</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/inputPaymentCredentialsGooglePay">inputPaymentCredentialsGooglePay</a> - </li>
|
||||
<li>Added <a href="/constructor/messages.historyImport">messages.historyImport</a> - </li>
|
||||
<li>Added <a href="/constructor/sendMessageHistoryImportAction">sendMessageHistoryImportAction</a> - </li>
|
||||
<li>Added <a href="/constructor/messages.historyImportParsed">messages.historyImportParsed</a> - </li>
|
||||
<li>Added <a href="/constructor/inputReportReasonFake">inputReportReasonFake</a> - </li>
|
||||
<li>Added <a href="/constructor/messages.affectedFoundMessages">messages.affectedFoundMessages</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Changed type of <strong>exported_invite</strong> from <strong>ExportedChatInvite</strong> to <strong>flags.13?ExportedChatInvite</strong> in <a href="/constructor/chatFull">chatFull</a></li>
|
||||
<li>Added <strong>flags</strong>, <strong>peer_id</strong> parameters in <a href="/constructor/messageEmpty">messageEmpty</a></li>
|
||||
<li>Added <strong>flags</strong>, <strong>history_deleted</strong> parameters in <a href="/constructor/encryptedChatDiscarded">encryptedChatDiscarded</a></li>
|
||||
<li>Added <strong>flags</strong>, <strong>revoked</strong>, <strong>permanent</strong>, <strong>admin_id</strong>, <strong>date</strong>, <strong>start_date</strong>, <strong>expire_date</strong>, <strong>usage_limit</strong>, <strong>usage</strong> parameters in <a href="/constructor/chatInviteExported">chatInviteExported</a></li>
|
||||
<li>Added <strong>fake</strong> parameter in <a href="/constructor/user">user</a></li>
|
||||
<li>Added <strong>fake</strong>, <strong>gigagroup</strong> parameters in <a href="/constructor/channel">channel</a></li>
|
||||
<li>Changed type of <strong>exported_invite</strong> from <strong>ExportedChatInvite</strong> to <strong>flags.23?ExportedChatInvite</strong> in <a href="/constructor/channelFull">channelFull</a></li>
|
||||
<li>Added <strong>min</strong>, <strong>muted_by_you</strong>, <strong>volume_by_admin</strong>, <strong>volume</strong> parameters in <a href="/constructor/groupCallParticipant">groupCallParticipant</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
|
||||
<ul>
|
||||
<li>Removed chatInviteEmpty</li>
|
||||
<li>Removed inputPaymentCredentialsAndroidPay</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/chatFull">chatFull</a>#f3474af6 flags:<a href="/type/%23">#</a> can_set_username:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.8?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants:<a href="/type/ChatParticipants">ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.13?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> pinned_msg_id:flags.6?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> call:flags.12?<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/messageEmpty">messageEmpty</a>#90a6ca84 flags:<a href="/type/%23">#</a> id:<a href="/type/int">int</a> peer_id:flags.0?<a href="/type/Peer">Peer</a> = <a href="/type/Message">Message</a>;<br>
|
||||
<a href="/constructor/encryptedChatDiscarded">encryptedChatDiscarded</a>#1e1c7c45 flags:<a href="/type/%23">#</a> history_deleted:flags.0?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> = <a href="/type/EncryptedChat">EncryptedChat</a>;<br>
|
||||
<a href="/constructor/chatInviteExported">chatInviteExported</a>#6e24fc9d flags:<a href="/type/%23">#</a> revoked:flags.0?<a href="/constructor/true">true</a> permanent:flags.5?<a href="/constructor/true">true</a> link:<a href="/type/string">string</a> admin_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> start_date:flags.4?<a href="/type/int">int</a> expire_date:flags.1?<a href="/type/int">int</a> usage_limit:flags.2?<a href="/type/int">int</a> usage:flags.3?<a href="/type/int">int</a> = <a href="/type/ExportedChatInvite">ExportedChatInvite</a>;<br>
|
||||
<a href="/constructor/user">user</a>#938458c1 flags:<a href="/type/%23">#</a> self:flags.10?<a href="/constructor/true">true</a> contact:flags.11?<a href="/constructor/true">true</a> mutual_contact:flags.12?<a href="/constructor/true">true</a> deleted:flags.13?<a href="/constructor/true">true</a> bot:flags.14?<a href="/constructor/true">true</a> bot_chat_history:flags.15?<a href="/constructor/true">true</a> bot_nochats:flags.16?<a href="/constructor/true">true</a> verified:flags.17?<a href="/constructor/true">true</a> restricted:flags.18?<a href="/constructor/true">true</a> min:flags.20?<a href="/constructor/true">true</a> bot_inline_geo:flags.21?<a href="/constructor/true">true</a> support:flags.23?<a href="/constructor/true">true</a> scam:flags.24?<a href="/constructor/true">true</a> apply_min_photo:flags.25?<a href="/constructor/true">true</a> fake:flags.26?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> access_hash:flags.0?<a href="/type/long">long</a> first_name:flags.1?<a href="/type/string">string</a> last_name:flags.2?<a href="/type/string">string</a> username:flags.3?<a href="/type/string">string</a> phone:flags.4?<a href="/type/string">string</a> photo:flags.5?<a href="/type/UserProfilePhoto">UserProfilePhoto</a> status:flags.6?<a href="/type/UserStatus">UserStatus</a> bot_info_version:flags.14?<a href="/type/int">int</a> restriction_reason:flags.18?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href="/type/string">string</a> lang_code:flags.22?<a href="/type/string">string</a> = <a href="/type/User">User</a>;<br>
|
||||
<a href="/constructor/channel">channel</a>#d31a961e flags:<a href="/type/%23">#</a> creator:flags.0?<a href="/constructor/true">true</a> left:flags.2?<a href="/constructor/true">true</a> broadcast:flags.5?<a href="/constructor/true">true</a> verified:flags.7?<a href="/constructor/true">true</a> megagroup:flags.8?<a href="/constructor/true">true</a> restricted:flags.9?<a href="/constructor/true">true</a> signatures:flags.11?<a href="/constructor/true">true</a> min:flags.12?<a href="/constructor/true">true</a> scam:flags.19?<a href="/constructor/true">true</a> has_link:flags.20?<a href="/constructor/true">true</a> has_geo:flags.21?<a href="/constructor/true">true</a> slowmode_enabled:flags.22?<a href="/constructor/true">true</a> call_active:flags.23?<a href="/constructor/true">true</a> call_not_empty:flags.24?<a href="/constructor/true">true</a> fake:flags.25?<a href="/constructor/true">true</a> gigagroup:flags.26?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> access_hash:flags.13?<a href="/type/long">long</a> title:<a href="/type/string">string</a> username:flags.6?<a href="/type/string">string</a> photo:<a href="/type/ChatPhoto">ChatPhoto</a> date:<a href="/type/int">int</a> version:<a href="/type/int">int</a> restriction_reason:flags.9?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> admin_rights:flags.14?<a href="/type/ChatAdminRights">ChatAdminRights</a> banned_rights:flags.15?<a href="/type/ChatBannedRights">ChatBannedRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights">ChatBannedRights</a> participants_count:flags.17?<a href="/type/int">int</a> = <a href="/type/Chat">Chat</a>;
|
||||
<a href="/constructor/channelFull">channelFull</a>#7a7de4f7 flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> can_view_stats:flags.20?<a href="/constructor/true">true</a> blocked:flags.22?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.23?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> call:flags.21?<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/groupCallParticipant">groupCallParticipant</a>#64c62a15 flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> left:flags.1?<a href="/constructor/true">true</a> can_self_unmute:flags.2?<a href="/constructor/true">true</a> just_joined:flags.4?<a href="/constructor/true">true</a> versioned:flags.5?<a href="/constructor/true">true</a> min:flags.8?<a href="/constructor/true">true</a> muted_by_you:flags.9?<a href="/constructor/true">true</a> volume_by_admin:flags.10?<a href="/constructor/true">true</a> user_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> active_date:flags.3?<a href="/type/int">int</a> source:<a href="/type/int">int</a> volume:flags.7?<a href="/type/int">int</a> = <a href="/type/GroupCallParticipant">GroupCallParticipant</a>;<br>
|
||||
<a href="/constructor/inputPaymentCredentialsGooglePay">inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href="/type/DataJSON">DataJSON</a> = <a href="/type/InputPaymentCredentials">InputPaymentCredentials</a>;<br>
|
||||
<a href="/constructor/messages.historyImport">messages.historyImport</a>#1662af0b id:<a href="/type/long">long</a> = <a href="/type/messages.HistoryImport">messages.HistoryImport</a>;<br>
|
||||
<a href="/constructor/sendMessageHistoryImportAction">sendMessageHistoryImportAction</a>#dbda9246 progress:<a href="/type/int">int</a> = <a href="/type/SendMessageAction">SendMessageAction</a>;<br>
|
||||
<a href="/constructor/messages.historyImportParsed">messages.historyImportParsed</a>#5e0fb7b9 flags:<a href="/type/%23">#</a> pm:flags.0?<a href="/constructor/true">true</a> group:flags.1?<a href="/constructor/true">true</a> title:flags.2?<a href="/type/string">string</a> = <a href="/type/messages.HistoryImportParsed">messages.HistoryImportParsed</a>;<br>
|
||||
<a href="/constructor/inputReportReasonFake">inputReportReasonFake</a>#f5ddd6e7 = <a href="/type/ReportReason">ReportReason</a>;<br>
|
||||
<a href="/constructor/messages.affectedFoundMessages">messages.affectedFoundMessages</a>#ef8d3e6c pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> offset:<a href="/type/int">int</a> messages:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> = <a href="/type/messages.AffectedFoundMessages">messages.AffectedFoundMessages</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/messages.deleteChatUser">messages.deleteChatUser</a>#c534459a flags:<a href="/type/%23">#</a> revoke_history:flags.0?<a href="/constructor/true">true</a> chat_id:<a href="/type/int">int</a> user_id:<a href="/type/InputUser">InputUser</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/messages.discardEncryption">messages.discardEncryption</a>#f393aea0 flags:<a href="/type/%23">#</a> delete_history:flags.0?<a href="/constructor/true">true</a> chat_id:<a href="/type/int">int</a> = <a href="/type/Bool">Bool</a>;<br>
|
||||
<a href="/method/phone.editGroupCallMember">phone.editGroupCallMember</a>#a5e76cd8 flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> user_id:<a href="/type/InputUser">InputUser</a> volume:flags.1?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/method/messages.deleteChat">messages.deleteChat</a>#83247d11 chat_id:<a href="/type/int">int</a> = <a href="/type/Bool">Bool</a>;
|
||||
<a href="/method/messages.deletePhoneCallHistory">messages.deletePhoneCallHistory</a>#f9cbe409 flags:<a href="/type/%23">#</a> revoke:flags.0?<a href="/constructor/true">true</a> = <a href="/type/messages.AffectedFoundMessages">messages.AffectedFoundMessages</a>;
|
||||
<a href="/method/messages.checkHistoryImport">messages.checkHistoryImport</a>#43fe19f3 import_head:<a href="/type/string">string</a> = <a href="/type/messages.HistoryImportParsed">messages.HistoryImportParsed</a>;
|
||||
<a href="/method/messages.initHistoryImport">messages.initHistoryImport</a>#34090c3b peer:<a href="/type/InputPeer">InputPeer</a> file:<a href="/type/InputFile">InputFile</a> media_count:<a href="/type/int">int</a> = <a href="/type/messages.HistoryImport">messages.HistoryImport</a>;
|
||||
<a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a>#2a862092 peer:<a href="/type/InputPeer">InputPeer</a> import_id:<a href="/type/long">long</a> file_name:<a href="/type/string">string</a> media:<a href="/type/InputMedia">InputMedia</a> = <a href="/type/MessageMedia">MessageMedia</a>;
|
||||
<a href="/method/messages.startHistoryImport">messages.startHistoryImport</a>#b43df344 peer:<a href="/type/InputPeer">InputPeer</a> import_id:<a href="/type/long">long</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-122" id="layer-122" name="layer-122"><i class="anchor-icon"></i></a><a href="/schema?layer=122">Layer 122</a></h3>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/phone.createGroupCall">phone.createGroupCall</a> - </li>
|
||||
<li>Added <a href="/method/phone.joinGroupCall">phone.joinGroupCall</a></li>
|
||||
<li>Added <a href="/method/phone.leaveGroupCall">phone.leaveGroupCall</a></li>
|
||||
<li>Added <a href="/method/phone.editGroupCallMember">phone.editGroupCallMember</a></li>
|
||||
<li>Added <a href="/method/phone.inviteToGroupCall">phone.inviteToGroupCall</a></li>
|
||||
<li>Added <a href="/method/phone.discardGroupCall">phone.discardGroupCall</a></li>
|
||||
<li>Added <a href="/method/phone.toggleGroupCallSettings">phone.toggleGroupCallSettings</a></li>
|
||||
<li>Added <a href="/method/phone.getGroupCall">phone.getGroupCall</a></li>
|
||||
<li>Added <a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a> - </li>
|
||||
<li>Added <a href="/method/phone.checkGroupCall">phone.checkGroupCall</a> - </li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
<li>Added <strong>drop_author</strong>, <strong>drop_media_captions</strong> parameters in <a href="/method/messages.forwardMessages">messages.forwardMessages</a></li>
|
||||
<li>Added <strong>for_import</strong> parameter in <a href="/method/channels.createChannel">channels.createChannel</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/constructor/speakingInGroupCallAction">speakingInGroupCallAction</a></li>
|
||||
<li>Added <a href="/constructor/groupCallDiscarded">groupCallDiscarded</a></li>
|
||||
<li>Added <a href="/constructor/groupCall">groupCall</a> - </li>
|
||||
<li>Added <a href="/constructor/inputGroupCall">inputGroupCall</a> - </li>
|
||||
<li>Added <a href="/constructor/messageActionGroupCall">messageActionGroupCall</a> - </li>
|
||||
<li>Added <a href="/constructor/messageActionInviteToGroupCall">messageActionInviteToGroupCall</a> - </li>
|
||||
<li>Added <a href="/constructor/groupCallParticipant">groupCallParticipant</a> - </li>
|
||||
<li>Added <a href="/constructor/updateChat">updateChat</a> - </li>
|
||||
<li>Added <a href="/constructor/updateGroupCallParticipants">updateGroupCallParticipants</a> - </li>
|
||||
<li>Added <a href="/constructor/updateGroupCall">updateGroupCall</a> - </li>
|
||||
<li>Added <a href="/constructor/phone.groupCall">phone.groupCall</a> - </li>
|
||||
<li>Added <a href="/constructor/phone.groupParticipants">phone.groupParticipants</a></li>
|
||||
<li>Added <a href="/constructor/inlineQueryPeerTypeSameBotPM">inlineQueryPeerTypeSameBotPM</a></li>
|
||||
<li>Added <a href="/constructor/inlineQueryPeerTypePM">inlineQueryPeerTypePM</a></li>
|
||||
<li>Added <a href="/constructor/inlineQueryPeerTypeChat">inlineQueryPeerTypeChat</a></li>
|
||||
<li>Added <a href="/constructor/inlineQueryPeerTypeMegagroup">inlineQueryPeerTypeMegagroup</a> - </li>
|
||||
<li>Added <a href="/constructor/inlineQueryPeerTypeBroadcast">inlineQueryPeerTypeBroadcast</a> - </li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionStartGroupCall">channelAdminLogEventActionStartGroupCall</a> - </li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionDiscardGroupCall">channelAdminLogEventActionDiscardGroupCall</a> - </li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionParticipantMute">channelAdminLogEventActionParticipantMute</a> - </li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionParticipantUnmute">channelAdminLogEventActionParticipantUnmute</a> - </li>
|
||||
<li>Added <a href="/constructor/channelAdminLogEventActionToggleGroupCallSetting">channelAdminLogEventActionToggleGroupCallSetting</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
|
||||
<ul>
|
||||
<li>Added <strong>call_active</strong>, <strong>call_not_empty</strong> parameters in <a href="/constructor/chat">chat</a></li>
|
||||
<li>Added <strong>call</strong> parameter in <a href="/constructor/chatFull">chatFull</a></li>
|
||||
<li>Added <strong>invite_members</strong> parameter in <a href="/constructor/peerSettings">peerSettings</a></li>
|
||||
<li>Added <strong>query</strong> parameter in <a href="/constructor/inputMediaDocument">inputMediaDocument</a></li>
|
||||
<li>Added <strong>thumbs</strong> parameter, removed <strong>thumb</strong> parameter in <a href="/constructor/stickerSet">stickerSet</a></li>
|
||||
<li>Added <strong>call_active</strong>, <strong>call_not_empty</strong> parameters in <a href="/constructor/channel">channel</a></li>
|
||||
<li>Added <strong>call</strong> parameter in <a href="/constructor/channelFull">channelFull</a></li>
|
||||
<li>Added <strong>peer_type</strong> parameter in <a href="/constructor/updateBotInlineQuery">updateBotInlineQuery</a></li>
|
||||
<li>Added <strong>imported</strong> parameter in <a href="/constructor/messageFwdHeader">messageFwdHeader</a></li>
|
||||
<li>Added <strong>group_call</strong>, <strong>invites</strong> parameters in <a href="/constructor/channelAdminLogEventsFilter">channelAdminLogEventsFilter</a></li>
|
||||
<li>Added <strong>manage_call</strong>, <strong>other</strong> parameters in <a href="/constructor/chatAdminRights">chatAdminRights</a></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
|
||||
<ul>
|
||||
<li>Removed updateChannelParticipant</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
|
||||
<div><pre><code><a href="/constructor/chat">chat</a>#3bda1bde flags:<a href="/type/%23">#</a> creator:flags.0?<a href="/constructor/true">true</a> kicked:flags.1?<a href="/constructor/true">true</a> left:flags.2?<a href="/constructor/true">true</a> deactivated:flags.5?<a href="/constructor/true">true</a> call_active:flags.23?<a href="/constructor/true">true</a> call_not_empty:flags.24?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> title:<a href="/type/string">string</a> photo:<a href="/type/ChatPhoto">ChatPhoto</a> participants_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> version:<a href="/type/int">int</a> migrated_to:flags.6?<a href="/type/InputChannel">InputChannel</a> admin_rights:flags.14?<a href="/type/ChatAdminRights">ChatAdminRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights">ChatBannedRights</a> = <a href="/type/Chat">Chat</a>;
|
||||
<a href="/constructor/chatFull">chatFull</a>#0dc8c181 flags:<a href="/type/%23">#</a> can_set_username:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.8?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants:<a href="/type/ChatParticipants">ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> pinned_msg_id:flags.6?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> call:flags.12?<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/peerSettings">peerSettings</a>#733f2961 flags:<a href="/type/%23">#</a> report_spam:flags.0?<a href="/constructor/true">true</a> add_contact:flags.1?<a href="/constructor/true">true</a> block_contact:flags.2?<a href="/constructor/true">true</a> share_contact:flags.3?<a href="/constructor/true">true</a> need_contacts_exception:flags.4?<a href="/constructor/true">true</a> report_geo:flags.5?<a href="/constructor/true">true</a> autoarchived:flags.7?<a href="/constructor/true">true</a> invite_members:flags.8?<a href="/constructor/true">true</a> geo_distance:flags.6?<a href="/type/int">int</a> = <a href="/type/PeerSettings">PeerSettings</a>;<br>
|
||||
<a href="/constructor/inputMediaDocument">inputMediaDocument</a>#33473058 flags:<a href="/type/%23">#</a> id:<a href="/type/InputDocument">InputDocument</a> ttl_seconds:flags.0?<a href="/type/int">int</a> query:flags.1?<a href="/type/string">string</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
|
||||
<a href="/constructor/stickerSet">stickerSet</a>#40e237a8 flags:<a href="/type/%23">#</a> archived:flags.1?<a href="/constructor/true">true</a> official:flags.2?<a href="/constructor/true">true</a> masks:flags.3?<a href="/constructor/true">true</a> animated:flags.5?<a href="/constructor/true">true</a> installed_date:flags.0?<a href="/type/int">int</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> title:<a href="/type/string">string</a> short_name:<a href="/type/string">string</a> thumbs:flags.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/PhotoSize">PhotoSize</a>> thumb_dc_id:flags.4?<a href="/type/int">int</a> count:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/StickerSet">StickerSet</a>;<br>
|
||||
<a href="/constructor/channel">channel</a>#d31a961e flags:<a href="/type/%23">#</a> creator:flags.0?<a href="/constructor/true">true</a> left:flags.2?<a href="/constructor/true">true</a> broadcast:flags.5?<a href="/constructor/true">true</a> verified:flags.7?<a href="/constructor/true">true</a> megagroup:flags.8?<a href="/constructor/true">true</a> restricted:flags.9?<a href="/constructor/true">true</a> signatures:flags.11?<a href="/constructor/true">true</a> min:flags.12?<a href="/constructor/true">true</a> scam:flags.19?<a href="/constructor/true">true</a> has_link:flags.20?<a href="/constructor/true">true</a> has_geo:flags.21?<a href="/constructor/true">true</a> slowmode_enabled:flags.22?<a href="/constructor/true">true</a> call_active:flags.23?<a href="/constructor/true">true</a> call_not_empty:flags.24?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> access_hash:flags.13?<a href="/type/long">long</a> title:<a href="/type/string">string</a> username:flags.6?<a href="/type/string">string</a> photo:<a href="/type/ChatPhoto">ChatPhoto</a> date:<a href="/type/int">int</a> version:<a href="/type/int">int</a> restriction_reason:flags.9?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> admin_rights:flags.14?<a href="/type/ChatAdminRights">ChatAdminRights</a> banned_rights:flags.15?<a href="/type/ChatBannedRights">ChatBannedRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights">ChatBannedRights</a> participants_count:flags.17?<a href="/type/int">int</a> = <a href="/type/Chat">Chat</a>;
|
||||
<a href="/constructor/channelFull">channelFull</a>#ef3a6acd flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> can_view_stats:flags.20?<a href="/constructor/true">true</a> blocked:flags.22?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>> migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> call:flags.21?<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
|
||||
<a href="/constructor/updateBotInlineQuery">updateBotInlineQuery</a>#3f2038db flags:<a href="/type/%23">#</a> query_id:<a href="/type/long">long</a> user_id:<a href="/type/int">int</a> query:<a href="/type/string">string</a> geo:flags.0?<a href="/type/GeoPoint">GeoPoint</a> peer_type:flags.1?<a href="/type/InlineQueryPeerType">InlineQueryPeerType</a> offset:<a href="/type/string">string</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/messageFwdHeader">messageFwdHeader</a>#5f777dce flags:<a href="/type/%23">#</a> imported:flags.7?<a href="/constructor/true">true</a> from_id:flags.0?<a href="/type/Peer">Peer</a> from_name:flags.5?<a href="/type/string">string</a> date:<a href="/type/int">int</a> channel_post:flags.2?<a href="/type/int">int</a> post_author:flags.3?<a href="/type/string">string</a> saved_from_peer:flags.4?<a href="/type/Peer">Peer</a> saved_from_msg_id:flags.4?<a href="/type/int">int</a> psa_type:flags.6?<a href="/type/string">string</a> = <a href="/type/MessageFwdHeader">MessageFwdHeader</a>;<br>
|
||||
<a href="/constructor/channelAdminLogEventsFilter">channelAdminLogEventsFilter</a>#ea107ae4 flags:<a href="/type/%23">#</a> join:flags.0?<a href="/constructor/true">true</a> leave:flags.1?<a href="/constructor/true">true</a> invite:flags.2?<a href="/constructor/true">true</a> ban:flags.3?<a href="/constructor/true">true</a> unban:flags.4?<a href="/constructor/true">true</a> kick:flags.5?<a href="/constructor/true">true</a> unkick:flags.6?<a href="/constructor/true">true</a> promote:flags.7?<a href="/constructor/true">true</a> demote:flags.8?<a href="/constructor/true">true</a> info:flags.9?<a href="/constructor/true">true</a> settings:flags.10?<a href="/constructor/true">true</a> pinned:flags.11?<a href="/constructor/true">true</a> edit:flags.12?<a href="/constructor/true">true</a> delete:flags.13?<a href="/constructor/true">true</a> group_call:flags.14?<a href="/constructor/true">true</a> invites:flags.15?<a href="/constructor/true">true</a> = <a href="/type/ChannelAdminLogEventsFilter">ChannelAdminLogEventsFilter</a>;
|
||||
<a href="/constructor/chatAdminRights">chatAdminRights</a>#5fb224d5 flags:<a href="/type/%23">#</a> change_info:flags.0?<a href="/constructor/true">true</a> post_messages:flags.1?<a href="/constructor/true">true</a> edit_messages:flags.2?<a href="/constructor/true">true</a> delete_messages:flags.3?<a href="/constructor/true">true</a> ban_users:flags.4?<a href="/constructor/true">true</a> invite_users:flags.5?<a href="/constructor/true">true</a> pin_messages:flags.7?<a href="/constructor/true">true</a> add_admins:flags.9?<a href="/constructor/true">true</a> anonymous:flags.10?<a href="/constructor/true">true</a> manage_call:flags.11?<a href="/constructor/true">true</a> other:flags.12?<a href="/constructor/true">true</a> = <a href="/type/ChatAdminRights">ChatAdminRights</a>;<br>
|
||||
<a href="/constructor/speakingInGroupCallAction">speakingInGroupCallAction</a>#d92c2285 = <a href="/type/SendMessageAction">SendMessageAction</a>;<br>
|
||||
<a href="/constructor/groupCallDiscarded">groupCallDiscarded</a>#7780bcb4 id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> duration:<a href="/type/int">int</a> = <a href="/type/GroupCall">GroupCall</a>;
|
||||
<a href="/constructor/groupCall">groupCall</a>#55903081 flags:<a href="/type/%23">#</a> join_muted:flags.1?<a href="/constructor/true">true</a> can_change_join_muted:flags.2?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> participants_count:<a href="/type/int">int</a> params:flags.0?<a href="/type/DataJSON">DataJSON</a> version:<a href="/type/int">int</a> = <a href="/type/GroupCall">GroupCall</a>;<br>
|
||||
<a href="/constructor/inputGroupCall">inputGroupCall</a>#d8aa840f id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> = <a href="/type/InputGroupCall">InputGroupCall</a>;<br>
|
||||
<a href="/constructor/messageActionGroupCall">messageActionGroupCall</a>#7a0d7f42 flags:<a href="/type/%23">#</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> duration:flags.0?<a href="/type/int">int</a> = <a href="/type/MessageAction">MessageAction</a>;
|
||||
<a href="/constructor/messageActionInviteToGroupCall">messageActionInviteToGroupCall</a>#76b9f11a call:<a href="/type/InputGroupCall">InputGroupCall</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> = <a href="/type/MessageAction">MessageAction</a>;<br>
|
||||
<a href="/constructor/groupCallParticipant">groupCallParticipant</a>#56b087c9 flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> left:flags.1?<a href="/constructor/true">true</a> can_self_unmute:flags.2?<a href="/constructor/true">true</a> just_joined:flags.4?<a href="/constructor/true">true</a> versioned:flags.5?<a href="/constructor/true">true</a> user_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> active_date:flags.3?<a href="/type/int">int</a> source:<a href="/type/int">int</a> = <a href="/type/GroupCallParticipant">GroupCallParticipant</a>;<br>
|
||||
<a href="/constructor/updateChat">updateChat</a>#1330a196 chat_id:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateGroupCallParticipants">updateGroupCallParticipants</a>#f2ebdb4e call:<a href="/type/InputGroupCall">InputGroupCall</a> participants:<a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipant">GroupCallParticipant</a>> version:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
|
||||
<a href="/constructor/updateGroupCall">updateGroupCall</a>#a45eb99b chat_id:<a href="/type/int">int</a> call:<a href="/type/GroupCall">GroupCall</a> = <a href="/type/Update">Update</a>;<br>
|
||||
<a href="/constructor/phone.groupCall">phone.groupCall</a>#66ab0bfc call:<a href="/type/GroupCall">GroupCall</a> participants:<a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipant">GroupCallParticipant</a>> participants_next_offset:<a href="/type/string">string</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> = <a href="/type/phone.GroupCall">phone.GroupCall</a>;
|
||||
<a href="/constructor/phone.groupParticipants">phone.groupParticipants</a>#9cfeb92d count:<a href="/type/int">int</a> participants:<a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipant">GroupCallParticipant</a>> next_offset:<a href="/type/string">string</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>> version:<a href="/type/int">int</a> = <a href="/type/phone.GroupParticipants">phone.GroupParticipants</a>;<br>
|
||||
<a href="/constructor/inlineQueryPeerTypeSameBotPM">inlineQueryPeerTypeSameBotPM</a>#3081ed9d = <a href="/type/InlineQueryPeerType">InlineQueryPeerType</a>;
|
||||
<a href="/constructor/inlineQueryPeerTypePM">inlineQueryPeerTypePM</a>#833c0fac = <a href="/type/InlineQueryPeerType">InlineQueryPeerType</a>;
|
||||
<a href="/constructor/inlineQueryPeerTypeChat">inlineQueryPeerTypeChat</a>#d766c50a = <a href="/type/InlineQueryPeerType">InlineQueryPeerType</a>;
|
||||
<a href="/constructor/inlineQueryPeerTypeMegagroup">inlineQueryPeerTypeMegagroup</a>#5ec4be43 = <a href="/type/InlineQueryPeerType">InlineQueryPeerType</a>;
|
||||
<a href="/constructor/inlineQueryPeerTypeBroadcast">inlineQueryPeerTypeBroadcast</a>#6334ee9a = <a href="/type/InlineQueryPeerType">InlineQueryPeerType</a>;<br>
|
||||
<a href="/constructor/channelAdminLogEventActionStartGroupCall">channelAdminLogEventActionStartGroupCall</a>#23209745 call:<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionDiscardGroupCall">channelAdminLogEventActionDiscardGroupCall</a>#db9f9140 call:<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionParticipantMute">channelAdminLogEventActionParticipantMute</a>#f92424d2 participant:<a href="/type/GroupCallParticipant">GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionParticipantUnmute">channelAdminLogEventActionParticipantUnmute</a>#e64429c0 participant:<a href="/type/GroupCallParticipant">GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;
|
||||
<a href="/constructor/channelAdminLogEventActionToggleGroupCallSetting">channelAdminLogEventActionToggleGroupCallSetting</a>#56d6a247 join_muted:<a href="/type/Bool">Bool</a> = <a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a>;<br>
|
||||
---functions---<br>
|
||||
<a href="/method/messages.forwardMessages">messages.forwardMessages</a>#d9fee60e flags:<a href="/type/%23">#</a> silent:flags.5?<a href="/constructor/true">true</a> background:flags.6?<a href="/constructor/true">true</a> with_my_score:flags.8?<a href="/constructor/true">true</a> drop_author:flags.11?<a href="/constructor/true">true</a> drop_media_captions:flags.12?<a href="/constructor/true">true</a> from_peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> random_id:<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>> to_peer:<a href="/type/InputPeer">InputPeer</a> schedule_date:flags.10?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/method/channels.createChannel">channels.createChannel</a>#3d5fb10f flags:<a href="/type/%23">#</a> broadcast:flags.0?<a href="/constructor/true">true</a> megagroup:flags.1?<a href="/constructor/true">true</a> for_import:flags.3?<a href="/constructor/true">true</a> title:<a href="/type/string">string</a> about:<a href="/type/string">string</a> geo_point:flags.2?<a href="/type/InputGeoPoint">InputGeoPoint</a> address:flags.2?<a href="/type/string">string</a> = <a href="/type/Updates">Updates</a>;<br>
|
||||
<a href="/method/phone.createGroupCall">phone.createGroupCall</a>#bd3dabe0 peer:<a href="/type/InputPeer">InputPeer</a> random_id:<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.joinGroupCall">phone.joinGroupCall</a>#5f9c8e62 flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> params:<a href="/type/DataJSON">DataJSON</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.leaveGroupCall">phone.leaveGroupCall</a>#500377f9 call:<a href="/type/InputGroupCall">InputGroupCall</a> source:<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.editGroupCallMember">phone.editGroupCallMember</a>#63146ae4 flags:<a href="/type/%23">#</a> muted:flags.0?<a href="/constructor/true">true</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> user_id:<a href="/type/InputUser">InputUser</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.inviteToGroupCall">phone.inviteToGroupCall</a>#7b393160 call:<a href="/type/InputGroupCall">InputGroupCall</a> users:<a href="/type/Vector%20t">Vector</a><<a href="/type/InputUser">InputUser</a>> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.discardGroupCall">phone.discardGroupCall</a>#7a777135 call:<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.toggleGroupCallSettings">phone.toggleGroupCallSettings</a>#74bbb43d flags:<a href="/type/%23">#</a> call:<a href="/type/InputGroupCall">InputGroupCall</a> join_muted:flags.0?<a href="/type/Bool">Bool</a> = <a href="/type/Updates">Updates</a>;
|
||||
<a href="/method/phone.getGroupCall">phone.getGroupCall</a>#0c7cb017 call:<a href="/type/InputGroupCall">InputGroupCall</a> = <a href="/type/phone.GroupCall">phone.GroupCall</a>;
|
||||
<a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a>#c9f1d285 call:<a href="/type/InputGroupCall">InputGroupCall</a> ids:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> sources:<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>> offset:<a href="/type/string">string</a> limit:<a href="/type/int">int</a> = <a href="/type/phone.GroupParticipants">phone.GroupParticipants</a>;
|
||||
<a href="/method/phone.checkGroupCall">phone.checkGroupCall</a>#b74a7bea call:<a href="/type/InputGroupCall">InputGroupCall</a> source:<a href="/type/int">int</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-121" id="layer-121" name="layer-121"><i class="anchor-icon"></i></a><a href="/schema?layer=121">Layer 121</a></h3>
|
||||
<p>Added <a href="/api/files#vector-thumbnails">SVG path previews</a> for animated stickers.</p>
|
||||
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
|
||||
|
|
|
@ -87,7 +87,7 @@ Clients can also provide a <code>heading</code>, a direction in degrees (1-360)
|
|||
<h3><a class="anchor" href="#proximity-alert" id="proximity-alert" name="proximity-alert"><i class="anchor-icon"></i></a>Proximity alert</h3>
|
||||
<pre><code><a href='/constructor/messageActionGeoProximityReached'>messageActionGeoProximityReached</a>#98e0d697 from_id:<a href='/type/Peer'>Peer</a> to_id:<a href='/type/Peer'>Peer</a> distance:<a href='/type/int'>int</a> = <a href='/type/MessageAction'>MessageAction</a>;
|
||||
|
||||
<a href='/constructor/messageService'>messageService</a>#286fa604 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> = <a href='/type/Message'>Message</a>;</code></pre>
|
||||
<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;</code></pre>
|
||||
<p>If:</p>
|
||||
<ul>
|
||||
<li>A user sets a <code>proximity_notification_radius</code> when sending a location</li>
|
||||
|
|
|
@ -43,10 +43,10 @@
|
|||
|
||||
<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p>
|
||||
<pre><code><a href='/constructor/messageEntityMention'>messageEntityMention</a>#fa04579d offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> = <a href='/type/MessageEntity'>MessageEntity</a>;
|
||||
<a href='/constructor/messageEntityMentionName'>messageEntityMentionName</a>#352dca58 offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> = <a href='/type/MessageEntity'>MessageEntity</a>;
|
||||
<a href='/constructor/messageEntityMentionName'>messageEntityMentionName</a>#dc7b1140 offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> = <a href='/type/MessageEntity'>MessageEntity</a>;
|
||||
<a href='/constructor/inputMessageEntityMentionName'>inputMessageEntityMentionName</a>#208e68c9 offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> user_id:<a href='/type/InputUser'>InputUser</a> = <a href='/type/MessageEntity'>MessageEntity</a>;
|
||||
|
||||
<a href='/constructor/message'>message</a>#58ae39c9 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> = <a href='/type/Message'>Message</a>;
|
||||
<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
<a href='/constructor/channelParticipantsMentions'>channelParticipantsMentions</a>#e04b5ceb flags:<a href='/type/%23'>#</a> q:flags.0?<a href='/type/string'>string</a> top_msg_id:flags.1?<a href='/type/int'>int</a> = <a href='/type/ChannelParticipantsFilter'>ChannelParticipantsFilter</a>;
|
||||
|
||||
|
@ -54,7 +54,7 @@
|
|||
|
||||
<a href='/method/messages.sendMessage'>messages.sendMessage</a>#520c3870 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
|
||||
|
||||
<a href='/method/channels.getParticipants'>channels.getParticipants</a>#123e05e9 channel:<a href='/type/InputChannel'>InputChannel</a> filter:<a href='/type/ChannelParticipantsFilter'>ChannelParticipantsFilter</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/int'>int</a> = <a href='/type/channels.ChannelParticipants'>channels.ChannelParticipants</a>;</code></pre>
|
||||
<a href='/method/channels.getParticipants'>channels.getParticipants</a>#77ced9d0 channel:<a href='/type/InputChannel'>InputChannel</a> filter:<a href='/type/ChannelParticipantsFilter'>ChannelParticipantsFilter</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/channels.ChannelParticipants'>channels.ChannelParticipants</a>;</code></pre>
|
||||
<p>Mentions are implemented as <a href="/api/entities">message entities</a>, passed to the <a href="/method/messages.sendMessage">messages.sendMessage</a> method:</p>
|
||||
<ul>
|
||||
<li><a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</a> - Used when sending messages, allows mentioning a user <a href="https://t.me/botfather">inline, even for users that don't have a @username</a></li>
|
||||
|
|
|
@ -43,97 +43,106 @@
|
|||
|
||||
<p><strong>Telegram Passport</strong> is a unified authorization method for services that require personal identification. Users can upload their documents once, then instantly share their data with services that require real-world ID (finance, ICOs, etc.). Telegram doesn‘t have access to the users’ personal information thanks to end-to-end encryption.</p>
|
||||
<p>This page describes the request flow that client apps must used to send the requested data to the service.</p>
|
||||
<h3><a class="anchor" name="overview" href="#overview"><i class="anchor-icon"></i></a>Overview</h3>
|
||||
<h3><a class="anchor" href="#overview" id="overview" name="overview"><i class="anchor-icon"></i></a>Overview</h3>
|
||||
<p>From the perspective of a service that requires real-world ID, the process looks like this:</p>
|
||||
<ul>
|
||||
<li>A user presses “Log in with Telegram” on your website or in your app.</li>
|
||||
<li>You request the data you need.</li>
|
||||
<li>The user accepts your privacy policy and agrees to share their data.</li>
|
||||
<li>The user's Telegram app downloads and decrypts the data you requested from the end-to-end encrypted storage on Telegram.</li>
|
||||
<li>The user's Telegram app downloads and decrypts the data you requested from the end-to-end encrypted storage on Telegram.</li>
|
||||
<li>If some of the data you requested is missing, the user can add it to their Telegram Passport at this point.</li>
|
||||
<li>The user's app encrypts the data with your public key and sends it to you.</li>
|
||||
<li>The user's app encrypts the data with your public key and sends it to you.</li>
|
||||
<li>You decrypt the data, check it for errors and re-request any missing or invalid information.</li>
|
||||
<li>You sign the user up for your service. Tada!</li>
|
||||
</ul>
|
||||
<p>See <a href="#as-a-bot">As a bot</a> to see how to request passport data using a bot, through the MTProto API.<br>Look at the <a href="/passport">Passport Manual</a> to see how to request passport data using a bot, through the simplified bot API.</p>
|
||||
<p>See <a href="#as-a-bot">As a bot</a> to see how to request passport data using a bot, through the MTProto API.
|
||||
Look at the <a href="/passport">Passport Manual</a> to see how to request passport data using a bot, through the simplified bot API.</p>
|
||||
<p>From the perspective of a user, the process looks something like this:</p>
|
||||
<ul>
|
||||
<li>Your app <a href="#receiving-requests">receives an event/intent</a> from one of the <a href="/passport#sdk">SDKs</a>, or from a custom source.</li>
|
||||
<li>The user accepts your privacy policy and agrees to share their data.</li>
|
||||
<li>The user's Telegram app <a href="/passport/encryption#fetching-and-deleting-stored-passport-data">downloads the data you requested</a> from the end-to-end encrypted storage on Telegram.</li>
|
||||
<li>The user's Telegram app <a href="/passport/encryption#fetching-and-deleting-stored-passport-data">downloads the data you requested</a> from the end-to-end encrypted storage on Telegram.</li>
|
||||
<li>If some of the data you requested is missing, the user can <a href="/passport/encryption#encryption">add it to their Telegram Passport</a> at this point.</li>
|
||||
<li>The user's app encrypts the data with your public key and sends it to the service.</li>
|
||||
<li>The user's app encrypts the data with your public key and sends it to the service.</li>
|
||||
<li>You sign the user up for your service. Tada!</li>
|
||||
</ul>
|
||||
<p>See <a href="#as-a-user">As a user</a> to see how user client apps should send passport data to a service, through the MTProto API.</p>
|
||||
<h3><a class="anchor" name="as-a-bot" href="#as-a-bot"><i class="anchor-icon"></i></a>As a bot</h3>
|
||||
<h3><a class="anchor" href="#as-a-bot" id="as-a-bot" name="as-a-bot"><i class="anchor-icon"></i></a>As a bot</h3>
|
||||
<p>A simplified version of this process can be used using the bot API, for more info see the <a href="/passport">Passport Manual</a>.</p>
|
||||
<p>Using the MTProto API, the process is pretty much the same, up until the actual API calls.</p>
|
||||
<blockquote>
|
||||
<p>Note that all binary fields are in raw binary format, unlike in the bot API where they are base64-encoded</p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="setting-up-telegram-passport" href="#setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting Up Telegram Passport</h4>
|
||||
<h4><a class="anchor" href="#setting-up-telegram-passport" id="setting-up-telegram-passport" name="setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting Up Telegram Passport</h4>
|
||||
<p><a href="/passport#setting-up-telegram-passport">As per the bot API</a>.</p>
|
||||
<h4><a class="anchor" name="requesting-information" href="#requesting-information"><i class="anchor-icon"></i></a>Requesting Information</h4>
|
||||
<h4><a class="anchor" href="#requesting-information" id="requesting-information" name="requesting-information"><i class="anchor-icon"></i></a>Requesting Information</h4>
|
||||
<p><a href="/passport#requesting-information">As per the bot API</a>.</p>
|
||||
<h4><a class="anchor" name="receiving-information" href="#receiving-information"><i class="anchor-icon"></i></a>Receiving information</h4>
|
||||
<h4><a class="anchor" href="#receiving-information" id="receiving-information" name="receiving-information"><i class="anchor-icon"></i></a>Receiving information</h4>
|
||||
<p>Scheme:</p>
|
||||
<pre><code>secureData#8aeabec3 data:bytes data_hash:bytes secret:bytes = SecureData;
|
||||
<pre><code><a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>;
|
||||
|
||||
securePlainPhone#7d6099dd phone:string = SecurePlainData;
|
||||
securePlainEmail#21ec5a5f email:string = SecurePlainData;
|
||||
<a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>;
|
||||
<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>;
|
||||
|
||||
secureFile#e0277a62 id:long access_hash:long size:int dc_id:int date:int file_hash:bytes secret:bytes = SecureFile;
|
||||
<a href='/constructor/secureFile'>secureFile</a>#e0277a62 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureFile'>SecureFile</a>;
|
||||
|
||||
secureValueTypePersonalDetails#9d2a81e3 = SecureValueType;
|
||||
secureValueTypePassport#3dac6a00 = SecureValueType;
|
||||
secureValueTypeDriverLicense#6e425c4 = SecureValueType;
|
||||
secureValueTypeIdentityCard#a0d0744b = SecureValueType;
|
||||
secureValueTypeInternalPassport#99a48f23 = SecureValueType;
|
||||
secureValueTypeAddress#cbe31e26 = SecureValueType;
|
||||
secureValueTypeUtilityBill#fc36954e = SecureValueType;
|
||||
secureValueTypeBankStatement#89137c0d = SecureValueType;
|
||||
secureValueTypeRentalAgreement#8b883488 = SecureValueType;
|
||||
secureValueTypePassportRegistration#99e3806a = SecureValueType;
|
||||
secureValueTypeTemporaryRegistration#ea02ec33 = SecureValueType;
|
||||
secureValueTypePhone#b320aadb = SecureValueType;
|
||||
secureValueTypeEmail#8e3ca7ee = SecureValueType;
|
||||
<a href='/constructor/secureValueTypePersonalDetails'>secureValueTypePersonalDetails</a>#9d2a81e3 = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypePassport'>secureValueTypePassport</a>#3dac6a00 = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeDriverLicense'>secureValueTypeDriverLicense</a>#6e425c4 = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeIdentityCard'>secureValueTypeIdentityCard</a>#a0d0744b = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeInternalPassport'>secureValueTypeInternalPassport</a>#99a48f23 = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeAddress'>secureValueTypeAddress</a>#cbe31e26 = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeUtilityBill'>secureValueTypeUtilityBill</a>#fc36954e = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeBankStatement'>secureValueTypeBankStatement</a>#89137c0d = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeRentalAgreement'>secureValueTypeRentalAgreement</a>#8b883488 = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypePassportRegistration'>secureValueTypePassportRegistration</a>#99e3806a = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeTemporaryRegistration'>secureValueTypeTemporaryRegistration</a>#ea02ec33 = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypePhone'>secureValueTypePhone</a>#b320aadb = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
<a href='/constructor/secureValueTypeEmail'>secureValueTypeEmail</a>#8e3ca7ee = <a href='/type/SecureValueType'>SecureValueType</a>;
|
||||
|
||||
secureValue#187fa0ca flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?SecureFile reverse_side:flags.2?SecureFile selfie:flags.3?SecureFile translation:flags.6?Vector<SecureFile> files:flags.4?Vector<SecureFile> plain_data:flags.5?SecurePlainData hash:bytes = SecureValue;
|
||||
<a href='/constructor/secureValue'>secureValue</a>#187fa0ca flags:<a href='/type/%23'>#</a> type:<a href='/type/SecureValueType'>SecureValueType</a> data:flags.0?<a href='/type/SecureData'>SecureData</a> front_side:flags.1?<a href='/type/SecureFile'>SecureFile</a> reverse_side:flags.2?<a href='/type/SecureFile'>SecureFile</a> selfie:flags.3?<a href='/type/SecureFile'>SecureFile</a> translation:flags.6?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> files:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> plain_data:flags.5?<a href='/type/SecurePlainData'>SecurePlainData</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValue'>SecureValue</a>;
|
||||
|
||||
secureCredentialsEncrypted#33f0ea47 data:bytes hash:bytes secret:bytes = SecureCredentialsEncrypted;
|
||||
<a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>;
|
||||
|
||||
messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> credentials:SecureCredentialsEncrypted = MessageAction;
|
||||
messageService#286fa604 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction = Message;
|
||||
<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>;
|
||||
<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
updateNewMessage#1f2b0afd message:Message pts:int pts_count:int = Update;</code></pre>
|
||||
<p>When the user confirms your request by pressing the 'Authorize' button, the MTProto API sends an <a href="/constructor/updateNewMessage">updateNewMessage</a> from the user, with a <a href="/constructor/messageService">messageService</a> constructor, containing a <a href="/constructor/messageActionSecureValuesSentMe">messageActionSecureValuesSentMe</a> constructor that contains the encrypted Telegram Passport data.</p>
|
||||
<h4><a class="anchor" name="decrypting-data" href="#decrypting-data"><i class="anchor-icon"></i></a>Decrypting data</h4>
|
||||
<pre><code>secureCredentialsEncrypted#33f0ea47 data:bytes hash:bytes secret:bytes = SecureCredentialsEncrypted;
|
||||
<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>When the user confirms your request by pressing the 'Authorize' button, the MTProto API sends an <a href="/constructor/updateNewMessage">updateNewMessage</a> from the user, with a <a href="/constructor/messageService">messageService</a> constructor, containing a <a href="/constructor/messageActionSecureValuesSentMe">messageActionSecureValuesSentMe</a> constructor that contains the encrypted Telegram Passport data.</p>
|
||||
<h4><a class="anchor" href="#decrypting-data" id="decrypting-data" name="decrypting-data"><i class="anchor-icon"></i></a>Decrypting data</h4>
|
||||
<pre><code><a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>;
|
||||
|
||||
messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> credentials:SecureCredentialsEncrypted = MessageAction; </code></pre>
|
||||
<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>; </code></pre>
|
||||
<p>To decrypt the received data, first, decrypt the credentials contained in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>.</p>
|
||||
<ol>
|
||||
<li>Decrypt the credentials secret ( <em>secret</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) using your <strong>private</strong> key (set OAEP padding option, e.g. <code>OPENSSL_PKCS1_OAEP_PADDING</code> in PHP)</li>
|
||||
<li><p>Use this secret and the credentials hash ( <em>hash</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) to calculate <em>credentials_key</em> and <em>credentials_iv</em> as described below:</p>
|
||||
<li>
|
||||
<p>Decrypt the credentials secret ( <em>secret</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) using your <strong>private</strong> key (set OAEP padding option, e.g. <code>OPENSSL_PKCS1_OAEP_PADDING</code> in PHP)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Use this secret and the credentials hash ( <em>hash</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) to calculate <em>credentials_key</em> and <em>credentials_iv</em> as described below:</p>
|
||||
<pre><code> credentials_secret_hash = SHA512( credentials_secret + credentials_hash )
|
||||
credentials_key = slice( credentials_secret_hash, 0, 32 )
|
||||
credentials_iv = slice( credentials_secret_hash, 32, 16 )</code></pre>
|
||||
</li>
|
||||
<li><p>Decrypt the credentials data ( <em>data</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) by AES256-CBC using these <em>credentials_key</em> and <em>credentials_iv</em>. <strong>IMPORTANT:</strong> At this step, make sure that the credentials hash is equal to <code>SHA256( credentials_data )</code></p>
|
||||
<li>
|
||||
<p>Decrypt the credentials data ( <em>data</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) by AES256-CBC using these <em>credentials_key</em> and <em>credentials_iv</em>. <strong>IMPORTANT:</strong> At this step, make sure that the credentials hash is equal to <code>SHA256( credentials_data )</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Credentials data is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of this padding (including this byte). Remove the padding to get the data.</p>
|
||||
</li>
|
||||
<li>Credentials data is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of this padding (including this byte). Remove the padding to get the data.</li>
|
||||
</ol>
|
||||
<blockquote>
|
||||
<p>Note that all hashes are raw binary data, not hexits</p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="credentials" href="#credentials"><i class="anchor-icon"></i></a>Credentials</h4>
|
||||
<p>The credentials are a JSON-serialized object, structured exactly as in the <a href="/passport#credentials">bot API »</a>.<br>Since decryption credentials are E2E encrypted, apps have to store the decryption credentials as JSON and not TL payloads.</p>
|
||||
<p>The credentials are used as described in the <a href="/passport#credentials">Passport Manual</a> to decrypt the files attached to the <a href="/constructor/secureValue">secureValue</a>.<br>In this case, the container for the E2E encrypted data is in TL, while the encrypted data itself is in JSON.</p>
|
||||
<h5><a class="anchor" name="securevalue" href="#securevalue"><i class="anchor-icon"></i></a><a href="/constructor/secureValue">secureValue</a></h5>
|
||||
<pre><code>secureValue#187fa0ca flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?SecureFile reverse_side:flags.2?SecureFile selfie:flags.3?SecureFile translation:flags.6?Vector<SecureFile> files:flags.4?Vector<SecureFile> plain_data:flags.5?SecurePlainData hash:bytes = SecureValue;
|
||||
<h4><a class="anchor" href="#credentials" id="credentials" name="credentials"><i class="anchor-icon"></i></a>Credentials</h4>
|
||||
<p>The credentials are a JSON-serialized object, structured exactly as in the <a href="/passport#credentials">bot API »</a>.
|
||||
Since decryption credentials are E2E encrypted, apps have to store the decryption credentials as JSON and not TL payloads.</p>
|
||||
<p>The credentials are used as described in the <a href="/passport#credentials">Passport Manual</a> to decrypt the files attached to the <a href="/constructor/secureValue">secureValue</a>.
|
||||
In this case, the container for the E2E encrypted data is in TL, while the encrypted data itself is in JSON.</p>
|
||||
<h5><a class="anchor" href="#securevalue" id="securevalue" name="securevalue"><i class="anchor-icon"></i></a><a href="/constructor/secureValue">secureValue</a></h5>
|
||||
<pre><code><a href='/constructor/secureValue'>secureValue</a>#187fa0ca flags:<a href='/type/%23'>#</a> type:<a href='/type/SecureValueType'>SecureValueType</a> data:flags.0?<a href='/type/SecureData'>SecureData</a> front_side:flags.1?<a href='/type/SecureFile'>SecureFile</a> reverse_side:flags.2?<a href='/type/SecureFile'>SecureFile</a> selfie:flags.3?<a href='/type/SecureFile'>SecureFile</a> translation:flags.6?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> files:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> plain_data:flags.5?<a href='/type/SecurePlainData'>SecurePlainData</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValue'>SecureValue</a>;
|
||||
|
||||
messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> credentials:SecureCredentialsEncrypted = MessageAction; </code></pre>
|
||||
<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>; </code></pre>
|
||||
<p>The scheme for the <a href="/constructor/inputSecureValue">secureValue</a> constructor defines the constructor that can be found in each field.</p>
|
||||
<table class="table">
|
||||
<thead>
|
||||
|
@ -191,7 +200,7 @@ messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> creden
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Here's a list of possible <a href="/type/SecureValueType">SecureValueTypes</a>, and the parameters that can be set/requested when using each type.</p>
|
||||
<p>Here's a list of possible <a href="/type/SecureValueType">SecureValueTypes</a>, and the parameters that can be set/requested when using each type.</p>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -254,8 +263,8 @@ messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> creden
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h5><a class="anchor" name="securedata" href="#securedata"><i class="anchor-icon"></i></a><a href="/type/SecureData">SecureData</a></h5>
|
||||
<pre><code>secureData#8aeabec3 data:bytes data_hash:bytes secret:bytes = SecureData;</code></pre>
|
||||
<h5><a class="anchor" href="#securedata" id="securedata" name="securedata"><i class="anchor-icon"></i></a><a href="/type/SecureData">SecureData</a></h5>
|
||||
<pre><code><a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>;</code></pre>
|
||||
<p>Data is an encrypted and padded JSON-serialized object of one of the specified JSON types, depending on the chosen <a href="/type/SecureValueType">type</a>.</p>
|
||||
<table class="table">
|
||||
<thead>
|
||||
|
@ -291,48 +300,51 @@ messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> creden
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="/passport#datacredentials">DataCredentials</a> extracted <a href="#credentials">from the credentials</a> can then be used to decrypt encrypted data from the <em>data</em> field in <a href="/constructor/secureData">secureData</a>.<br>For more info on how to decrypt the <em>data</em> field, see the <a href="/passport#datacredentials">passport manual</a>.</p>
|
||||
<h5><a class="anchor" name="securefile" href="#securefile"><i class="anchor-icon"></i></a><a href="/type/SecureFile">SecureFile</a></h5>
|
||||
<pre><code>secureFile#e0277a62 id:long access_hash:long size:int dc_id:int date:int file_hash:bytes secret:bytes = SecureFile;
|
||||
<p><a href="/passport#datacredentials">DataCredentials</a> extracted <a href="#credentials">from the credentials</a> can then be used to decrypt encrypted data from the <em>data</em> field in <a href="/constructor/secureData">secureData</a>.
|
||||
For more info on how to decrypt the <em>data</em> field, see the <a href="/passport#datacredentials">passport manual</a>.</p>
|
||||
<h5><a class="anchor" href="#securefile" id="securefile" name="securefile"><i class="anchor-icon"></i></a><a href="/type/SecureFile">SecureFile</a></h5>
|
||||
<pre><code><a href='/constructor/secureFile'>secureFile</a>#e0277a62 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureFile'>SecureFile</a>;
|
||||
|
||||
inputSecureFileLocation#cbc7ee28 id:long access_hash:long = InputFileLocation;
|
||||
<a href='/constructor/inputSecureFileLocation'>inputSecureFileLocation</a>#cbc7ee28 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
upload.getFile#b15a9afc flags:# precise:flags.0?true cdn_supported:flags.1?true location:InputFileLocation offset:int limit:int = upload.File;</code></pre>
|
||||
<p>Files (JPG format when decrypted, max. 10MB) are downloaded chunk by chunk as described in <a href="/api/files">files »</a>, except that instead of generating an <a href="/constructor/inputFile">inputFileLocation</a>, an <a href="/constructor/inputFileLocation">inputFileLocation</a> should be generated, instead.</p>
|
||||
<a href='/method/upload.getFile'>upload.getFile</a>#b15a9afc flags:<a href='/type/%23'>#</a> precise:flags.0?<a href='/constructor/true'>true</a> cdn_supported:flags.1?<a href='/constructor/true'>true</a> location:<a href='/type/InputFileLocation'>InputFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.File'>upload.File</a>;</code></pre>
|
||||
<p>Files (JPG format when decrypted, max. 10MB) are downloaded chunk by chunk as described in <a href="/api/files">files »</a>, except that instead of generating an <a href="/constructor/inputFile">inputFileLocation</a>, an <a href="/constructor/inputFileLocation">inputFileLocation</a> should be generated, instead.</p>
|
||||
<ul>
|
||||
<li>The <code>id</code> field is the <code>id</code> of the <a href="/constructor/secureFile">secureFile</a></li>
|
||||
<li>The <code>access_hash</code> field is the <code>access_hash</code> of the <a href="/constructor/secureFile">secureFile</a></li>
|
||||
</ul>
|
||||
<p><a href="/passport#filecredentials">FileCredentials</a> extracted <a href="#credentials">from the credentials</a> can then be used to decrypt downloaded encrypted data.<br>For more info on how to decrypt passport files, see the <a href="/passport#filecredentials">passport manual</a>.</p>
|
||||
<h5><a class="anchor" name="secureplaindata" href="#secureplaindata"><i class="anchor-icon"></i></a><a href="/type/SecurePlainData">SecurePlainData</a></h5>
|
||||
<pre><code>securePlainPhone#7d6099dd phone:string = SecurePlainData;
|
||||
securePlainEmail#21ec5a5f email:string = SecurePlainData;</code></pre>
|
||||
<p>The email/phone is passed in plaintext using the respective <a href="/type/SecurePlainData">SecurePlainData</a> constructor.<br>Emails and phone numbers sent using telegram passport are <em>already verified</em> as described in the <a href="/passport/encryption#secureplaindata">passport manual</a>.</p>
|
||||
<h4><a class="anchor" name="fixing-errors" href="#fixing-errors"><i class="anchor-icon"></i></a>Fixing errors</h4>
|
||||
<pre><code>secureValueErrorData#e8a40bd9 type:SecureValueType data_hash:bytes field:string text:string = SecureValueError;
|
||||
secureValueErrorFrontSide#be3dfa type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorReverseSide#868a2aa5 type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorSelfie#e537ced6 type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorFile#7a700873 type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorFiles#666220e9 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError;
|
||||
secureValueError#869d758f type:SecureValueType hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorTranslationFile#a1144770 type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorTranslationFiles#34636dd8 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError;
|
||||
<p><a href="/passport#filecredentials">FileCredentials</a> extracted <a href="#credentials">from the credentials</a> can then be used to decrypt downloaded encrypted data.
|
||||
For more info on how to decrypt passport files, see the <a href="/passport#filecredentials">passport manual</a>.</p>
|
||||
<h5><a class="anchor" href="#secureplaindata" id="secureplaindata" name="secureplaindata"><i class="anchor-icon"></i></a><a href="/type/SecurePlainData">SecurePlainData</a></h5>
|
||||
<pre><code><a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>;
|
||||
<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>;</code></pre>
|
||||
<p>The email/phone is passed in plaintext using the respective <a href="/type/SecurePlainData">SecurePlainData</a> constructor.
|
||||
Emails and phone numbers sent using telegram passport are <em>already verified</em> as described in the <a href="/passport/encryption#secureplaindata">passport manual</a>.</p>
|
||||
<h4><a class="anchor" href="#fixing-errors" id="fixing-errors" name="fixing-errors"><i class="anchor-icon"></i></a>Fixing errors</h4>
|
||||
<pre><code><a href='/constructor/secureValueErrorData'>secureValueErrorData</a>#e8a40bd9 type:<a href='/type/SecureValueType'>SecureValueType</a> data_hash:<a href='/type/bytes'>bytes</a> field:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorFrontSide'>secureValueErrorFrontSide</a>#be3dfa type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorReverseSide'>secureValueErrorReverseSide</a>#868a2aa5 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorSelfie'>secureValueErrorSelfie</a>#e537ced6 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorFile'>secureValueErrorFile</a>#7a700873 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorFiles'>secureValueErrorFiles</a>#666220e9 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueError'>secureValueError</a>#869d758f type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorTranslationFile'>secureValueErrorTranslationFile</a>#a1144770 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorTranslationFiles'>secureValueErrorTranslationFiles</a>#34636dd8 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
|
||||
inputUser#d8292816 user_id:int access_hash:long = InputUser;
|
||||
<a href='/constructor/inputUser'>inputUser</a>#f21158c6 user_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputUser'>InputUser</a>;
|
||||
|
||||
|
||||
---functions---
|
||||
|
||||
users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector<SecureValueError> = Bool;</code></pre>
|
||||
<a href='/method/users.setSecureValueErrors'>users.setSecureValueErrors</a>#90c894b5 id:<a href='/type/InputUser'>InputUser</a> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> = <a href='/type/Bool'>Bool</a>;</code></pre>
|
||||
<p>If the data you received contains errors, the bot can use the <a href="/method/users.setSecureValueErrors">users.setSecureValueErrors</a> method to inform the user and <a href="#requesting-information">request information</a> again. The user will not be able to resend the data, until all errors are fixed.</p>
|
||||
<p>Descriptions of the method parameters can be found in the method's <a href="/method/users.setSecureValueErrors">documentation page »</a>.</p>
|
||||
<h3><a class="anchor" name="as-a-user" href="#as-a-user"><i class="anchor-icon"></i></a>As a user</h3>
|
||||
<h4><a class="anchor" name="receiving-requests" href="#receiving-requests"><i class="anchor-icon"></i></a>Receiving requests</h4>
|
||||
<p>Descriptions of the method parameters can be found in the method's <a href="/method/users.setSecureValueErrors">documentation page »</a>.</p>
|
||||
<h3><a class="anchor" href="#as-a-user" id="as-a-user" name="as-a-user"><i class="anchor-icon"></i></a>As a user</h3>
|
||||
<h4><a class="anchor" href="#receiving-requests" id="receiving-requests" name="receiving-requests"><i class="anchor-icon"></i></a>Receiving requests</h4>
|
||||
<p>The process starts when your app receives an event from one of the <a href="/passport#sdk">SDKs</a>, or from a custom source.</p>
|
||||
<h4><a class="anchor" name="uri-format" href="#uri-format"><i class="anchor-icon"></i></a>URI format</h4>
|
||||
<h4><a class="anchor" href="#uri-format" id="uri-format" name="uri-format"><i class="anchor-icon"></i></a>URI format</h4>
|
||||
<p>The SDKs trigger a passport authorization request by opening the following Telegram-specific URI:</p>
|
||||
<pre><code>tg://resolve?params</code></pre>
|
||||
<p>With the following query string parameters:</p>
|
||||
|
@ -342,55 +354,47 @@ users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector<SecureValueErr
|
|||
<td><strong>Parameters</strong></td>
|
||||
<td><strong>Type</strong></td>
|
||||
<td><strong>Required</strong></td>
|
||||
<td><strong>Description</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>domain</td>
|
||||
<td>String</td>
|
||||
<td>Yes</td>
|
||||
<td>Always <code>telegrampassport</code> for Passport authorization requests.<br><code>tg://</code> URI are also used to resolve usernames, stickersets, translation packs and more, the <code>domain</code> parameter identifies the action to take when opening the link.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>bot_id</td>
|
||||
<td>Integer</td>
|
||||
<td>Yes</td>
|
||||
<td>Unique identifier for the bot. You can get it from bot token. For example, for the bot token <code>1234567:4TT8bAc8GHUspu3ERYn-KGcvsvGB9u_n4ddy</code>, the bot id is <code>1234567</code>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>scope</td>
|
||||
<td><a href="#uripassportscope">UriPassportScope</a></td>
|
||||
<td>Yes</td>
|
||||
<td>A more compact JSON-serialized object describing the data you want to request</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>public_key</td>
|
||||
<td>String</td>
|
||||
<td>Yes</td>
|
||||
<td>Public key of the bot</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>String</td>
|
||||
<td>Yes</td>
|
||||
<td>Bot-specified nonce. <strong>Important:</strong> For security purposes it should be a cryptographically secure unique identifier of the request. In particular, it should be long enough and it should be generated using a cryptographically secure pseudorandom number generator. You should never accept credentials with the same nonce twice.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>callback_url</td>
|
||||
<td>String</td>
|
||||
<td>Optional</td>
|
||||
<td>Supported by some Telegram clients, specifies a callback URL to open once the process is finished or canceled.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>payload</td>
|
||||
<td>String</td>
|
||||
<td>Optional</td>
|
||||
<td><strong>Deprecated</strong> parameter from Telegram Passport 1.0 that had the same function of the <code>nonce</code> parameter.<br>Services that still use a legacy version of the SDK may provide this parameter instead of the <code>nonce</code>.<br>In some cases, both the <code>nonce</code> and the <code>payload</code> parameters may be found in a URI, for backwards compatibility: in this case, the <code>nonce</code> parameter should always be used instead of <code>payload</code>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Example URI, generated by the <a href="/passport/example">Telegram Passport Example page</a>:</p>
|
||||
<pre><code>tg://resolve?domain=telegrampassport&bot_id=543260180&scope=%7B%22v%22%3A1%2C%22d%22%3A%5B%7B%22_%22%3A%22pd%22%2C%22n%22%3A1%7D%2C%22ad%22%2C%22pn%22%2C%22em%22%2C%7B%22_%22%3A%5B%7B%22_%22%3A%22pp%22%2C%22s%22%3A1%2C%22t%22%3A1%7D%2C%22ip%22%2C%22dl%22%2C%22ic%22%5D%7D%2C%7B%22_%22%3A%5B%22ub%22%2C%22bs%22%2C%22ra%22%2C%22pr%22%2C%22tr%22%5D%7D%5D%7D&public_key=-----BEGIN%20PUBLIC%20KEY-----%0AMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6m1zBF8lZOCqcxf8hnj%0AkvHwuWdU8s4rBWaxKXH%2FvDDUklcCS5uhSnmjhxWca9suubaG3lW4HxlCilkeJPVf%0Ajimg5Q8ZqWrR3OoOihEpcG9iJZTOEpsEk7VtEiabgacBG3Quv9JslTrDe95Fn801%0At9d21HXwgMrHeHpWDOn31Dr%2BwoEH%2BkwySUWa6L%2FZbnGwSNP7eeDTE7Amz1RMDk3t%0A8EWGq58u0IQatPcEH09aUQlKzk6MIiALkZ9ILBKCBk6d2WCokKnsdBctovNbxwSx%0AhP1qst1r%2BYc8iPBZozsDC0ZsC5jXCkcODI3OC0tkNtYzN2XKalW5R0DjDRUDmGhT%0AzQIDAQAB%0A-----END%20PUBLIC%20KEY-----%0A&nonce=b8e892dc2e0afe63424d101b964f1256_32858210_708614a4585b84872e&callback_url=https%3A%2F%2Fcore.telegram.org%2Fpassport%2Fexample%3Fpassport_ssid%3Db8e892dc2e0afe63424d101b964f1256_32858210_db259b427f200751ce&payload=b8e892dc2e0afe63424d101b964f1256_32858210_708614a4585b84872e</code></pre>
|
||||
<h4><a class="anchor" name="uripassportscope" href="#uripassportscope"><i class="anchor-icon"></i></a>UriPassportScope</h4>
|
||||
<h4><a class="anchor" href="#uripassportscope" id="uripassportscope" name="uripassportscope"><i class="anchor-icon"></i></a>UriPassportScope</h4>
|
||||
<p>This object represents the data to be requested.</p>
|
||||
<table class="table">
|
||||
<tbody>
|
||||
|
@ -411,7 +415,7 @@ users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector<SecureValueErr
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h5><a class="anchor" name="uripassportscopeelement" href="#uripassportscopeelement"><i class="anchor-icon"></i></a>UriPassportScopeElement</h5>
|
||||
<h5><a class="anchor" href="#uripassportscopeelement" id="uripassportscopeelement" name="uripassportscopeelement"><i class="anchor-icon"></i></a>UriPassportScopeElement</h5>
|
||||
<p>This object represents a requested element, should be one of:</p>
|
||||
<ul>
|
||||
<li><a href="#uripassportscopeelementoneofseveral">UriPassportScopeElementOneOfSeveral</a> - use to request any one of the documents included in the scope.</li>
|
||||
|
@ -488,8 +492,8 @@ users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector<SecureValueErr
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>You can use the special type “idd” as an alias for one of “pp”, “dl”, “ic” and the special type “add” as an alias for one of “ub”, “bs”, “ra”. </p>
|
||||
<h4><a class="anchor" name="uripassportscopeelementoneofseveral" href="#uripassportscopeelementoneofseveral"><i class="anchor-icon"></i></a>UriPassportScopeElementOneOfSeveral</h4>
|
||||
<p>You can use the special type "idd" as an alias for one of "pp", "dl", "ic" and the special type "add" as an alias for one of "ub", "bs", "ra". </p>
|
||||
<h4><a class="anchor" href="#uripassportscopeelementoneofseveral" id="uripassportscopeelementoneofseveral" name="uripassportscopeelementoneofseveral"><i class="anchor-icon"></i></a>UriPassportScopeElementOneOfSeveral</h4>
|
||||
<p>This object represents several elements one of which must be provided.</p>
|
||||
<table class="table">
|
||||
<tbody>
|
||||
|
@ -515,7 +519,7 @@ users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector<SecureValueErr
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4><a class="anchor" name="uripassportscopeelementone" href="#uripassportscopeelementone"><i class="anchor-icon"></i></a>UriPassportScopeElementOne</h4>
|
||||
<h4><a class="anchor" href="#uripassportscopeelementone" id="uripassportscopeelementone" name="uripassportscopeelementone"><i class="anchor-icon"></i></a>UriPassportScopeElementOne</h4>
|
||||
<p>This object represents one particular element that must be provided. If no options are needed, <em>String</em> can be used instead of this object to specify the type of the element.</p>
|
||||
<table class="table">
|
||||
<tbody>
|
||||
|
@ -527,71 +531,71 @@ users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector<SecureValueErr
|
|||
<tr>
|
||||
<td>_</td>
|
||||
<td>String</td>
|
||||
<td>Element type. One of “pd”, “pp”, “dl”, “ic”, “ip”, “ad”, “ub”, “bs”, “ra”, “pr”, “tr”, “pn”, “em”</td>
|
||||
<td>Element type. One of "pd", "pp", "dl", "ic", "ip", "ad", "ub", "bs", "ra", "pr", "tr", "pn", "em"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>s</td>
|
||||
<td>Boolean</td>
|
||||
<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document as well. Available for “pp”, “dl”, “ic” and “ip”</td>
|
||||
<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document as well. Available for "pp", "dl", "ic" and "ip"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>t</td>
|
||||
<td>Boolean</td>
|
||||
<td><em>Optional.</em> Use this parameter if you want to request a translation of the document as well. Available for “pp”, “dl”, “ic”, “ip”, “ub”, “bs”, “ra”, “pr” and “tr”. <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td>
|
||||
<td><em>Optional.</em> Use this parameter if you want to request a translation of the document as well. Available for "pp", "dl", "ic", "ip", "ub", "bs", "ra", "pr" and "tr". <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>n</td>
|
||||
<td>Boolean</td>
|
||||
<td><em>Optional.</em> Use this parameter to request the first, last and middle name of the user in the language of the user's country of residence. Available for “pd”</td>
|
||||
<td><em>Optional.</em> Use this parameter to request the first, last and middle name of the user in the language of the user's country of residence. Available for "pd"</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>You can also use the special type “idd” as an alias for one of “pp”, “dl”, “ic” and the special type “add” as an alias for one of “ub”, “bs”, “ra”. </p>
|
||||
<h4><a class="anchor" name="setting-up-telegram-passport" href="#setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting up Telegram Passport</h4>
|
||||
<p>The next step for the client app is to request the user's 2FA passport, and configure Telegram Passport/fetch and decrypt remotely saved Telegram Passport parameters as described in the <a href="/passport/encryption">Encryption article »</a>.</p>
|
||||
<h4><a class="anchor" name="fetching-the-passport-form" href="#fetching-the-passport-form"><i class="anchor-icon"></i></a>Fetching the passport form</h4>
|
||||
<pre><code>account.authorizationForm#ad2e1cd8 flags:# required_types:Vector<SecureRequiredType> values:Vector<SecureValue> errors:Vector<SecureValueError> users:Vector<User> privacy_policy_url:flags.0?string = account.AuthorizationForm;
|
||||
<p>You can also use the special type "idd" as an alias for one of "pp", "dl", "ic" and the special type "add" as an alias for one of "ub", "bs", "ra". </p>
|
||||
<h4><a class="anchor" href="#setting-up-telegram-passport" id="setting-up-telegram-passport" name="setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting up Telegram Passport</h4>
|
||||
<p>The next step for the client app is to request the user's 2FA passport, and configure Telegram Passport/fetch and decrypt remotely saved Telegram Passport parameters as described in the <a href="/passport/encryption">Encryption article »</a>.</p>
|
||||
<h4><a class="anchor" href="#fetching-the-passport-form" id="fetching-the-passport-form" name="fetching-the-passport-form"><i class="anchor-icon"></i></a>Fetching the passport form</h4>
|
||||
<pre><code><a href='/constructor/account.authorizationForm'>account.authorizationForm</a>#ad2e1cd8 flags:<a href='/type/%23'>#</a> required_types:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureRequiredType'>SecureRequiredType</a>> values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> privacy_policy_url:flags.0?<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
account.getAuthorizationForm#b86ba8e1 bot_id:int scope:string public_key:string = account.AuthorizationForm;</code></pre>
|
||||
<a href='/method/account.getAuthorizationForm'>account.getAuthorizationForm</a>#a929597a bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>;</code></pre>
|
||||
<p>Then, the client app passes the bot ID, scope and public key from the <a href="#receiving-requests">passport authorization request</a> to the Telegram servers using the <a href="/method/account.getAuthorizationForm">account.getAuthorizationForm</a> method.</p>
|
||||
<p>The response will be an <a href="/constructor/account.authorizationForm">account.authorizationForm</a> constructor, with info about the required document types, the URL of the service's privacy policy, as well as info about the bot to which the form should be sent.<br>If the form was already submitted at least once, the constructor will also contain a list of already submitted data, along with eventual errors. </p>
|
||||
<p>The user should accept the privacy policy and proceed to fill in the required data, and the client should encrypt and upload it as described in the <a href="/passport/encryption">Encryption article »</a>.</p>
|
||||
<h4><a class="anchor" name="submitting-the-passport-form" href="#submitting-the-passport-form"><i class="anchor-icon"></i></a>Submitting the passport form</h4>
|
||||
<pre><code>secureCredentialsEncrypted#33f0ea47 data:bytes hash:bytes secret:bytes = SecureCredentialsEncrypted;
|
||||
<p>The response will be an <a href="/constructor/account.authorizationForm">account.authorizationForm</a> constructor, with info about the required document types, the URL of the service's privacy policy, as well as info about the bot to which the form should be sent.
|
||||
If the form was already submitted at least once, the constructor will also contain a list of already submitted data, along with eventual errors. </p>
|
||||
<p>The user should accept the privacy policy and proceed to fill in the required data, and the client should encrypt and upload it as described in the <a href="/passport/encryption">Encryption article »</a>.</p>
|
||||
<h4><a class="anchor" href="#submitting-the-passport-form" id="submitting-the-passport-form" name="submitting-the-passport-form"><i class="anchor-icon"></i></a>Submitting the passport form</h4>
|
||||
<pre><code><a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>;
|
||||
|
||||
secureValueHash#ed1ecdb0 type:SecureValueType hash:bytes = SecureValueHash;
|
||||
<a href='/constructor/secureValueHash'>secureValueHash</a>#ed1ecdb0 type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValueHash'>SecureValueHash</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
account.acceptAuthorization#e7027c94 bot_id:int scope:string public_key:string value_hashes:Vector<SecureValueHash> credentials:SecureCredentialsEncrypted = Bool;</code></pre>
|
||||
<a href='/method/account.acceptAuthorization'>account.acceptAuthorization</a>#f3ed4c73 bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> value_hashes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueHash'>SecureValueHash</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/Bool'>Bool</a>;</code></pre>
|
||||
<p>Once the user finishes uploading the required documents and clicks on the submit button, the client calls <a href="/method/account.acceptAuthorization">account.acceptAuthorization</a>, submitting the documents to the bot associated to the service.</p>
|
||||
<ul>
|
||||
<li>As before, <code>bot_id</code>, <code>scope</code> and <code>public_key</code> are taken from the authorization request URI.</li>
|
||||
<li><code>value_hashes</code> is used by the server to choose which document of which type to send to the bot: the <code>type</code> field should be set to the document type, and the <code>hash</code> field should be set to the <code>data_hash</code>/<code>file_hash</code> generated when <a href="/passport/encryption#encryption">uploading encrypting the data »</a>.</li>
|
||||
<li><code>credentials</code> contains the encrypted credentials required by the service to decrypt the sent E2E encrypted secure values: it is generated as described in <a href="/passport/encryption#passport-credentials">Passport Credentials »</a>.</li>
|
||||
<li><code>value_hashes</code> is used by the server to choose which document of which type to send to the bot: the <code>type</code> field should be set to the document type, and the <code>hash</code> field should be set to the <code>data_hash</code>/<code>file_hash</code> generated when <a href="/passport/encryption#encryption">uploading encrypting the data »</a>.</li>
|
||||
<li><code>credentials</code> contains the encrypted credentials required by the service to decrypt the sent E2E encrypted secure values: it is generated as described in <a href="/passport/encryption#passport-credentials">Passport Credentials »</a>.</li>
|
||||
</ul>
|
||||
<p>Finally, the client opens the callback URL (if present).</p>
|
||||
<h4><a class="anchor" name="handling-invalid-forms" href="#handling-invalid-forms"><i class="anchor-icon"></i></a>Handling invalid forms</h4>
|
||||
<pre><code>secureValueErrorData#e8a40bd9 type:SecureValueType data_hash:bytes field:string text:string = SecureValueError;
|
||||
secureValueErrorFrontSide#be3dfa type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorReverseSide#868a2aa5 type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorSelfie#e537ced6 type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorFile#7a700873 type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorFiles#666220e9 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError;
|
||||
secureValueError#869d758f type:SecureValueType hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorTranslationFile#a1144770 type:SecureValueType file_hash:bytes text:string = SecureValueError;
|
||||
secureValueErrorTranslationFiles#34636dd8 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError;
|
||||
<h4><a class="anchor" href="#handling-invalid-forms" id="handling-invalid-forms" name="handling-invalid-forms"><i class="anchor-icon"></i></a>Handling invalid forms</h4>
|
||||
<pre><code><a href='/constructor/secureValueErrorData'>secureValueErrorData</a>#e8a40bd9 type:<a href='/type/SecureValueType'>SecureValueType</a> data_hash:<a href='/type/bytes'>bytes</a> field:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorFrontSide'>secureValueErrorFrontSide</a>#be3dfa type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorReverseSide'>secureValueErrorReverseSide</a>#868a2aa5 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorSelfie'>secureValueErrorSelfie</a>#e537ced6 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorFile'>secureValueErrorFile</a>#7a700873 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorFiles'>secureValueErrorFiles</a>#666220e9 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueError'>secureValueError</a>#869d758f type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorTranslationFile'>secureValueErrorTranslationFile</a>#a1144770 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
<a href='/constructor/secureValueErrorTranslationFiles'>secureValueErrorTranslationFiles</a>#34636dd8 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>;
|
||||
|
||||
account.authorizationForm#ad2e1cd8 flags:# required_types:Vector<SecureRequiredType> values:Vector<SecureValue> errors:Vector<SecureValueError> users:Vector<User> privacy_policy_url:flags.0?string = account.AuthorizationForm;
|
||||
<a href='/constructor/account.authorizationForm'>account.authorizationForm</a>#ad2e1cd8 flags:<a href='/type/%23'>#</a> required_types:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureRequiredType'>SecureRequiredType</a>> values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> privacy_policy_url:flags.0?<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
account.getAuthorizationForm#b86ba8e1 bot_id:int scope:string public_key:string = account.AuthorizationForm;</code></pre>
|
||||
<a href='/method/account.getAuthorizationForm'>account.getAuthorizationForm</a>#a929597a bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>;</code></pre>
|
||||
<p>If any of the values of the submitted form are rejected by the service, the bot <a href="/api/passport#fixing-errors">calls the appropriate method to set information about errors</a>.</p>
|
||||
<p>The user can find out about these errors directly from the service, or, if they decide to <a href="#receiving-requests">restart the process</a> and resend the corrected data, directly from the authorization form (<code>errors</code> field).</p>
|
||||
</div>
|
||||
<p>The user can find out about these errors directly from the service, or, if they decide to <a href="#receiving-requests">restart the process</a> and resend the corrected data, directly from the authorization form (<code>errors</code> field).</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -61,9 +61,9 @@ For more info on how payments work, check out the <a href="https://telegram.org/
|
|||
|
||||
<a href='/constructor/labeledPrice'>labeledPrice</a>#cb296bf8 label:<a href='/type/string'>string</a> amount:<a href='/type/long'>long</a> = <a href='/type/LabeledPrice'>LabeledPrice</a>;
|
||||
|
||||
<a href='/constructor/invoice'>invoice</a>#c30aa358 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> = <a href='/type/Invoice'>Invoice</a>;
|
||||
<a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>;
|
||||
|
||||
<a href='/constructor/inputMediaInvoice'>inputMediaInvoice</a>#f4e096c3 flags:<a href='/type/%23'>#</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/InputWebDocument'>InputWebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> payload:<a href='/type/bytes'>bytes</a> provider:<a href='/type/string'>string</a> provider_data:<a href='/type/DataJSON'>DataJSON</a> start_param:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
|
||||
<a href='/constructor/inputMediaInvoice'>inputMediaInvoice</a>#d9799874 flags:<a href='/type/%23'>#</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/InputWebDocument'>InputWebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> payload:<a href='/type/bytes'>bytes</a> provider:<a href='/type/string'>string</a> provider_data:<a href='/type/DataJSON'>DataJSON</a> start_param:flags.1?<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
@ -86,30 +86,30 @@ You can also attach an inline keyboard to the message using the <code>reply_mark
|
|||
|
||||
<a href='/constructor/messageMediaInvoice'>messageMediaInvoice</a>#84551347 flags:<a href='/type/%23'>#</a> shipping_address_requested:flags.1?<a href='/constructor/true'>true</a> test:flags.3?<a href='/constructor/true'>true</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/WebDocument'>WebDocument</a> receipt_msg_id:flags.2?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> start_param:<a href='/type/string'>string</a> = <a href='/type/MessageMedia'>MessageMedia</a>;
|
||||
|
||||
<a href='/constructor/message'>message</a>#58ae39c9 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> = <a href='/type/Message'>Message</a>;
|
||||
<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
<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="/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 <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>
|
||||
<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/invoice'>invoice</a>#c30aa358 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> = <a href='/type/Invoice'>Invoice</a>;
|
||||
<pre><code><a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>;
|
||||
|
||||
<a href='/constructor/paymentRequestedInfo'>paymentRequestedInfo</a>#909c3f94 flags:<a href='/type/%23'>#</a> name:flags.0?<a href='/type/string'>string</a> phone:flags.1?<a href='/type/string'>string</a> email:flags.2?<a href='/type/string'>string</a> shipping_address:flags.3?<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a>;
|
||||
|
||||
<a href='/constructor/paymentSavedCredentialsCard'>paymentSavedCredentialsCard</a>#cdc27a1f id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> = <a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a>;
|
||||
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#3f56aea3 flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> bot_id:<a href='/type/int'>int</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/int'>int</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
<a href='/method/payments.getPaymentForm'>payments.getPaymentForm</a>#99f09745 msg_id:<a href='/type/int'>int</a> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<a href='/method/payments.getPaymentForm'>payments.getPaymentForm</a>#8a333c8d flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> theme_params:flags.0?<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<p>If the user clicks on the <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button, the client proceeds to call <a href="/method/payments.getPaymentForm">payments.getPaymentForm</a> with the message ID of the invoice preview message to get the <a href="/constructor/payments.paymentForm">payment form</a>.</p>
|
||||
<p>The returned form will contain fields that should be passed to the payment provider along with the full <a href="/constructor/invoice">invoice</a>.
|
||||
The payment form also contains info about previously saved payment credentials and order information (name, phone number, email, shipping address & so on).</p>
|
||||
<p>The full <a href="/constructor/invoice">invoice</a> contains info about the information required for the order, the price and the currency, and whether this is a <code>test</code> order.</p>
|
||||
<h4><a class="anchor" href="#23-verifying-information" id="23-verifying-information" name="23-verifying-information"><i class="anchor-icon"></i></a>2.3 Verifying information</h4>
|
||||
<pre><code><a href='/constructor/invoice'>invoice</a>#c30aa358 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> = <a href='/type/Invoice'>Invoice</a>;
|
||||
<pre><code><a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>;
|
||||
|
||||
<a href='/constructor/postAddress'>postAddress</a>#1e8caaeb street_line1:<a href='/type/string'>string</a> street_line2:<a href='/type/string'>string</a> city:<a href='/type/string'>string</a> state:<a href='/type/string'>string</a> country_iso2:<a href='/type/string'>string</a> post_code:<a href='/type/string'>string</a> = <a href='/type/PostAddress'>PostAddress</a>;
|
||||
|
||||
|
@ -119,7 +119,7 @@ The payment form also contains info about previously saved payment credentials a
|
|||
|
||||
---functions---
|
||||
|
||||
<a href='/method/payments.validateRequestedInfo'>payments.validateRequestedInfo</a>#770a8e74 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> msg_id:<a href='/type/int'>int</a> info:<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> = <a href='/type/payments.ValidatedRequestedInfo'>payments.ValidatedRequestedInfo</a>;</code></pre>
|
||||
<a href='/method/payments.validateRequestedInfo'>payments.validateRequestedInfo</a>#db103170 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> info:<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> = <a href='/type/payments.ValidatedRequestedInfo'>payments.ValidatedRequestedInfo</a>;</code></pre>
|
||||
<p>If any data at all is requested by the <a href="/constructor/invoice"><strong>invoice</strong></a> (<code>name_requested</code>, <code>phone_requested</code>, <code>email_requested</code>, <code>shipping_address_requested</code>), the user must call <a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a>, providing the required data (as usual, <code>msg_id</code> is the ID of the invoice message).
|
||||
The user can choose to save order information for future use by setting the <code>save</code> flag.
|
||||
Data can be autofilled as described in <a href="#2-3-1-autofill">autofill</a>.</p>
|
||||
|
@ -141,7 +141,7 @@ The return value in this case will also contain a <code>shipping_options</code>
|
|||
|
||||
<a href='/constructor/shippingOption'>shippingOption</a>#b6213cdf id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> = <a href='/type/ShippingOption'>ShippingOption</a>;
|
||||
|
||||
<a href='/constructor/updateBotShippingQuery'>updateBotShippingQuery</a>#e0cdc940 query_id:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> payload:<a href='/type/bytes'>bytes</a> shipping_address:<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/Update'>Update</a>;
|
||||
<a href='/constructor/updateBotShippingQuery'>updateBotShippingQuery</a>#b5aefd7d query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> payload:<a href='/type/bytes'>bytes</a> shipping_address:<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
@ -156,11 +156,11 @@ The bot must respond using <a href="/method/messages.setBotShippingResults">mess
|
|||
<a href='/constructor/inputPaymentCredentialsAndroidPay'>inputPaymentCredentialsAndroidPay</a>#ca05d50e payment_token:<a href='/type/DataJSON'>DataJSON</a> google_transaction_id:<a href='/type/string'>string</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>;
|
||||
|
||||
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#3f56aea3 flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> bot_id:<a href='/type/int'>int</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/int'>int</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<h4><a class="anchor" href="#31-web-payment" id="31-web-payment" name="31-web-payment"><i class="anchor-icon"></i></a>3.1 Web payment</h4>
|
||||
<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>;
|
||||
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#3f56aea3 flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> bot_id:<a href='/type/int'>int</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/int'>int</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<p>Typically, payment takes place by opening the <code>url</code> in the specified <a href="/constructor/payments.paymentForm">payment form</a>, which leads to a payment form on the website of the payment gateway.
|
||||
Once the user finishes entering their payment credentials, a <a href="/api/web-events"><code>payment_form_submit</code> web event</a> is generated by the payment gateway, containing <code>data</code> and <code>title</code> JSON fields.</p>
|
||||
<p>The <code>title</code> is used by the client app to represent the payment credentials (typically a censored version of credit card information).
|
||||
|
@ -170,7 +170,7 @@ Eventually, you can set the <code>save</code> flag to save the credit card info
|
|||
<h4><a class="anchor" href="#32-native-payment" id="32-native-payment" name="32-native-payment"><i class="anchor-icon"></i></a>3.2 Native payment</h4>
|
||||
<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>;
|
||||
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#3f56aea3 flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> bot_id:<a href='/type/int'>int</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/int'>int</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<p>Most telegram apps support working natively with the native APIs of some payment providers, without opening the website of the payment and receiving a JS event.</p>
|
||||
<p>This is done using the JSON <code>native_params</code> parameters field of the <a href="/constructor/payments.paymentForm">payments.paymentForm</a> constructor, which contains an object, which can contain one or more of the following fields:</p>
|
||||
<ul>
|
||||
|
@ -187,7 +187,7 @@ Eventually, you can set the <code>save</code> flag to save the credit card info
|
|||
<h5><a class="anchor" href="#321-stripe" id="321-stripe" name="321-stripe"><i class="anchor-icon"></i></a>3.2.1 Stripe</h5>
|
||||
<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>;
|
||||
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#3f56aea3 flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> bot_id:<a href='/type/int'>int</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/int'>int</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
|
||||
<p>If the <code>native_provider</code> field is set and equal to <code>stripe</code>, the client can make use of the <a href="https://stripe.com/docs/api/tokens/object">native Stripe token APIs</a> with the <code>publishable_key</code> from the <code>native_params</code> to add a payment method to Stripe, and then use the token <code>type</code> and <code>id</code> to generate a JSON object:</p>
|
||||
<pre><code>{"type":"token.type", "id":"token.id"}"</code></pre>
|
||||
<p>The generated JSON object can then be passed to the <code>data</code> field of the <a href="/constructor/inputPaymentCredentials">inputPaymentCredentials</a>.
|
||||
|
@ -207,7 +207,7 @@ Eventually, you can set the <code>save</code> flag to save the credit card info
|
|||
|
||||
<a href='/constructor/paymentSavedCredentialsCard'>paymentSavedCredentialsCard</a>#cdc27a1f id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> = <a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a>;
|
||||
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#3f56aea3 flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> bot_id:<a href='/type/int'>int</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/int'>int</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;
|
||||
<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;
|
||||
|
||||
<a href='/constructor/account.tmpPassword'>account.tmpPassword</a>#db64fd34 tmp_password:<a href='/type/bytes'>bytes</a> valid_until:<a href='/type/int'>int</a> = <a href='/type/account.TmpPassword'>account.TmpPassword</a>;
|
||||
|
||||
|
@ -236,7 +236,7 @@ Full credit card info <strong>is not</strong> saved on Telegram Servers, and can
|
|||
|
||||
---functions---
|
||||
|
||||
<a href='/method/payments.sendPaymentForm'>payments.sendPaymentForm</a>#2b8879b3 flags:<a href='/type/%23'>#</a> msg_id:<a href='/type/int'>int</a> requested_info_id:flags.0?<a href='/type/string'>string</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> credentials:<a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a> = <a href='/type/payments.PaymentResult'>payments.PaymentResult</a>;</code></pre>
|
||||
<a href='/method/payments.sendPaymentForm'>payments.sendPaymentForm</a>#30c3bc9d flags:<a href='/type/%23'>#</a> form_id:<a href='/type/long'>long</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> requested_info_id:flags.0?<a href='/type/string'>string</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> credentials:<a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a> tip_amount:flags.2?<a href='/type/long'>long</a> = <a href='/type/payments.PaymentResult'>payments.PaymentResult</a>;</code></pre>
|
||||
<p>After <a href="#2-3-verifying-information">verifying order information</a>, the final step for the client is to call <a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a>, with the following parameters:</p>
|
||||
<ul>
|
||||
<li>The <code>msg_id</code> is set to the ID of the invoice message</li>
|
||||
|
@ -253,7 +253,7 @@ Once the user finishes working with the webpage, the client can <a href="#5-chec
|
|||
<h4><a class="anchor" href="#41-receiving-pre-checkout-query" id="41-receiving-pre-checkout-query" name="41-receiving-pre-checkout-query"><i class="anchor-icon"></i></a>4.1 Receiving pre-checkout query</h4>
|
||||
<pre><code><a href='/constructor/paymentRequestedInfo'>paymentRequestedInfo</a>#909c3f94 flags:<a href='/type/%23'>#</a> name:flags.0?<a href='/type/string'>string</a> phone:flags.1?<a href='/type/string'>string</a> email:flags.2?<a href='/type/string'>string</a> shipping_address:flags.3?<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a>;
|
||||
|
||||
<a href='/constructor/updateBotPrecheckoutQuery'>updateBotPrecheckoutQuery</a>#5d2f3aa9 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> payload:<a href='/type/bytes'>bytes</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> = <a href='/type/Update'>Update</a>;
|
||||
<a href='/constructor/updateBotPrecheckoutQuery'>updateBotPrecheckoutQuery</a>#8caa9a96 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> payload:<a href='/type/bytes'>bytes</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
@ -270,15 +270,15 @@ The bot must reply using <a href="/method/messages.setBotPrecheckoutResults">mes
|
|||
|
||||
<a href='/constructor/messageMediaInvoice'>messageMediaInvoice</a>#84551347 flags:<a href='/type/%23'>#</a> shipping_address_requested:flags.1?<a href='/constructor/true'>true</a> test:flags.3?<a href='/constructor/true'>true</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/WebDocument'>WebDocument</a> receipt_msg_id:flags.2?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> start_param:<a href='/type/string'>string</a> = <a href='/type/MessageMedia'>MessageMedia</a>;
|
||||
|
||||
<a href='/constructor/message'>message</a>#58ae39c9 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> = <a href='/type/Message'>Message</a>;
|
||||
<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
<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>;
|
||||
|
||||
<a href='/constructor/payments.paymentReceipt'>payments.paymentReceipt</a>#500911e1 flags:<a href='/type/%23'>#</a> date:<a href='/type/int'>int</a> bot_id:<a href='/type/int'>int</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/int'>int</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping:flags.1?<a href='/type/ShippingOption'>ShippingOption</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> credentials_title:<a href='/type/string'>string</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentReceipt'>payments.PaymentReceipt</a>;
|
||||
<a href='/constructor/payments.paymentReceipt'>payments.paymentReceipt</a>#70c4fe03 flags:<a href='/type/%23'>#</a> date:<a href='/type/int'>int</a> bot_id:<a href='/type/long'>long</a> provider_id:<a href='/type/long'>long</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.2?<a href='/type/WebDocument'>WebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping:flags.1?<a href='/type/ShippingOption'>ShippingOption</a> tip_amount:flags.3?<a href='/type/long'>long</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> credentials_title:<a href='/type/string'>string</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentReceipt'>payments.PaymentReceipt</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
<a href='/method/payments.getPaymentReceipt'>payments.getPaymentReceipt</a>#a092a980 msg_id:<a href='/type/int'>int</a> = <a href='/type/payments.PaymentReceipt'>payments.PaymentReceipt</a>;</code></pre>
|
||||
<a href='/method/payments.getPaymentReceipt'>payments.getPaymentReceipt</a>#2478d1cc peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/payments.PaymentReceipt'>payments.PaymentReceipt</a>;</code></pre>
|
||||
<p>In case the bot confirms the order, Telegram requests the payment provider to complete the transaction. If the payment information was entered correctly and the payment goes through, the Telegram API will modify the invoice message and send a service message as described below. Once your bot receives this message, it should proceed with delivering the goods or services purchased by the user.</p>
|
||||
<p>If all is OK, the user receives a <a href="/constructor/payments.paymentResult">payments.paymentResult</a> in reply to the <a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a> query, containing info about the updated invoice message in the form of an <a href="/constructor/updateEditMessage">updateEditMessage</a>.</p>
|
||||
<p>The invoice message will be updated as follows: the attached <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> will now have a <code>receipt_msg_id</code> field.
|
||||
|
|
|
@ -42,10 +42,10 @@
|
|||
<div id="dev_page_content"><!-- scroll_nav -->
|
||||
|
||||
<p>Telegram allows pinning multiple messages on top of a specific chat. </p>
|
||||
<pre><code><a href='/constructor/message'>message</a>#58ae39c9 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> = <a href='/type/Message'>Message</a>;
|
||||
<pre><code><a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
<a href='/constructor/updatePinnedMessages'>updatePinnedMessages</a>#ed85eab5 flags:<a href='/type/%23'>#</a> pinned:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/Peer'>Peer</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
|
||||
<a href='/constructor/updatePinnedChannelMessages'>updatePinnedChannelMessages</a>#8588878b flags:<a href='/type/%23'>#</a> pinned:flags.0?<a href='/constructor/true'>true</a> channel_id:<a href='/type/int'>int</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
|
||||
<a href='/constructor/updatePinnedChannelMessages'>updatePinnedChannelMessages</a>#5bb98608 flags:<a href='/type/%23'>#</a> pinned:flags.0?<a href='/constructor/true'>true</a> channel_id:<a href='/type/long'>long</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
@ -60,15 +60,15 @@ The <code>unpin</code> flags specifies whether to unpin or pin the message, and
|
|||
<p>When (un)pinning messages, a <a href="/constructor/updatePinnedMessages">updatePinnedMessages</a> or <a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a> update will be emitted, containing IDs of pinned or unpinned messages. </p>
|
||||
<p>Pinned messages will also have the will also have the <code>pinned</code> flag of <a href="/constructor/message">message</a> set.</p>
|
||||
<h3><a class="anchor" href="#getting-pinned-messages" id="getting-pinned-messages" name="getting-pinned-messages"><i class="anchor-icon"></i></a>Getting pinned messages</h3>
|
||||
<pre><code><a href='/constructor/userFull'>userFull</a>#edf17c12 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> user:<a href='/type/User'>User</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> = <a href='/type/UserFull'>UserFull</a>;
|
||||
<a href='/constructor/chatFull'>chatFull</a>#1b7c9db3 flags:<a href='/type/%23'>#</a> can_set_username:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.8?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> about:<a href='/type/string'>string</a> participants:<a href='/type/ChatParticipants'>ChatParticipants</a> chat_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> pinned_msg_id:flags.6?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> = <a href='/type/ChatFull'>ChatFull</a>;
|
||||
<a href='/constructor/channelFull'>channelFull</a>#f0e6672a flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/int'>int</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/int'>int</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> = <a href='/type/ChatFull'>ChatFull</a>;
|
||||
<pre><code><a href='/constructor/userFull'>userFull</a>#d697ff05 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> user:<a href='/type/User'>User</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> = <a href='/type/UserFull'>UserFull</a>;
|
||||
<a href='/constructor/chatFull'>chatFull</a>#4dbdc099 flags:<a href='/type/%23'>#</a> can_set_username:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.8?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants:<a href='/type/ChatParticipants'>ChatParticipants</a> chat_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.13?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> pinned_msg_id:flags.6?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> call:flags.12?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.14?<a href='/type/int'>int</a> groupcall_default_join_as:flags.15?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.16?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>;
|
||||
<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>;
|
||||
|
||||
<a href='/constructor/inputMessagesFilterPinned'>inputMessagesFilterPinned</a>#1bb00451 = <a href='/type/MessagesFilter'>MessagesFilter</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
<a href='/method/messages.search'>messages.search</a>#c352eec flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre>
|
||||
<a href='/method/messages.search'>messages.search</a>#a0fda762 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre>
|
||||
<p>The <code>pinned_msg_id</code> of <a href="/constructor/userFull">userFull</a>, <a href="/constructor/chatFull">chatFull</a>, <a href="/constructor/channelFull">channelFull</a> contains the ID of only the latest pinned message.<br>
|
||||
To obtain a full list, use <a href="/method/messages.search">messages.search</a> with <a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a> filter. </p></div>
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ These last two parameters are exactly the same, except that one uses absolute, t
|
|||
<h3><a class="anchor" href="#voting-in-polls" id="voting-in-polls" name="voting-in-polls"><i class="anchor-icon"></i></a>Voting in polls</h3>
|
||||
<pre><code><a href='/constructor/pollAnswerVoters'>pollAnswerVoters</a>#3b6ddad2 flags:<a href='/type/%23'>#</a> chosen:flags.0?<a href='/constructor/true'>true</a> correct:flags.1?<a href='/constructor/true'>true</a> option:<a href='/type/bytes'>bytes</a> voters:<a href='/type/int'>int</a> = <a href='/type/PollAnswerVoters'>PollAnswerVoters</a>;
|
||||
|
||||
<a href='/constructor/pollResults'>pollResults</a>#badcc1a3 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> results:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswerVoters'>PollAnswerVoters</a>> total_voters:flags.2?<a href='/type/int'>int</a> recent_voters:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> solution:flags.4?<a href='/type/string'>string</a> solution_entities:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/PollResults'>PollResults</a>;
|
||||
<a href='/constructor/pollResults'>pollResults</a>#dcb82ea3 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> results:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswerVoters'>PollAnswerVoters</a>> total_voters:flags.2?<a href='/type/int'>int</a> recent_voters:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> solution:flags.4?<a href='/type/string'>string</a> solution_entities:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/PollResults'>PollResults</a>;
|
||||
|
||||
<a href='/constructor/poll'>poll</a>#86e18161 id:<a href='/type/long'>long</a> flags:<a href='/type/%23'>#</a> closed:flags.0?<a href='/constructor/true'>true</a> public_voters:flags.1?<a href='/constructor/true'>true</a> multiple_choice:flags.2?<a href='/constructor/true'>true</a> quiz:flags.3?<a href='/constructor/true'>true</a> question:<a href='/type/string'>string</a> answers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswer'>PollAnswer</a>> close_period:flags.4?<a href='/type/int'>int</a> close_date:flags.5?<a href='/type/int'>int</a> = <a href='/type/Poll'>Poll</a>;
|
||||
|
||||
|
@ -98,7 +98,7 @@ These last two parameters are exactly the same, except that one uses absolute, t
|
|||
<h3><a class="anchor" href="#getting-poll-votes" id="getting-poll-votes" name="getting-poll-votes"><i class="anchor-icon"></i></a>Getting poll votes</h3>
|
||||
<pre><code><a href='/constructor/pollAnswerVoters'>pollAnswerVoters</a>#3b6ddad2 flags:<a href='/type/%23'>#</a> chosen:flags.0?<a href='/constructor/true'>true</a> correct:flags.1?<a href='/constructor/true'>true</a> option:<a href='/type/bytes'>bytes</a> voters:<a href='/type/int'>int</a> = <a href='/type/PollAnswerVoters'>PollAnswerVoters</a>;
|
||||
|
||||
<a href='/constructor/pollResults'>pollResults</a>#badcc1a3 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> results:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswerVoters'>PollAnswerVoters</a>> total_voters:flags.2?<a href='/type/int'>int</a> recent_voters:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> solution:flags.4?<a href='/type/string'>string</a> solution_entities:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/PollResults'>PollResults</a>;
|
||||
<a href='/constructor/pollResults'>pollResults</a>#dcb82ea3 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> results:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswerVoters'>PollAnswerVoters</a>> total_voters:flags.2?<a href='/type/int'>int</a> recent_voters:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> solution:flags.4?<a href='/type/string'>string</a> solution_entities:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/PollResults'>PollResults</a>;
|
||||
|
||||
<a href='/constructor/updateMessagePoll'>updateMessagePoll</a>#aca1657b flags:<a href='/type/%23'>#</a> poll_id:<a href='/type/long'>long</a> poll:flags.0?<a href='/type/Poll'>Poll</a> results:<a href='/type/PollResults'>PollResults</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
|
@ -108,13 +108,13 @@ These last two parameters are exactly the same, except that one uses absolute, t
|
|||
<p>Regularly, if new users have voted in polls available to the user, they will receive an <a href="/constructor/updateMessagePoll">updateMessagePoll</a>, with updated <a href="/constructor/pollResults">pollResults</a>. </p>
|
||||
<p>The same constructor can also be fetched manually using <a href="/method/messages.getPollResults">messages.getPollResults</a>.</p>
|
||||
<h3><a class="anchor" href="#getting-poll-voters-in-non-anonymous-polls" id="getting-poll-voters-in-non-anonymous-polls" name="getting-poll-voters-in-non-anonymous-polls"><i class="anchor-icon"></i></a>Getting poll voters in non-anonymous polls</h3>
|
||||
<pre><code><a href='/constructor/messageUserVote'>messageUserVote</a>#a28e5559 user_id:<a href='/type/int'>int</a> option:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>;
|
||||
<a href='/constructor/messageUserVoteInputOption'>messageUserVoteInputOption</a>#36377430 user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>;
|
||||
<a href='/constructor/messageUserVoteMultiple'>messageUserVoteMultiple</a>#e8fe0de user_id:<a href='/type/int'>int</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>;
|
||||
<pre><code><a href='/constructor/messageUserVote'>messageUserVote</a>#34d247b4 user_id:<a href='/type/long'>long</a> option:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>;
|
||||
<a href='/constructor/messageUserVoteInputOption'>messageUserVoteInputOption</a>#3ca5b0ec user_id:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>;
|
||||
<a href='/constructor/messageUserVoteMultiple'>messageUserVoteMultiple</a>#8a65e557 user_id:<a href='/type/long'>long</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>;
|
||||
|
||||
<a href='/constructor/messages.votesList'>messages.votesList</a>#823f649 flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> votes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageUserVote'>MessageUserVote</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> next_offset:flags.0?<a href='/type/string'>string</a> = <a href='/type/messages.VotesList'>messages.VotesList</a>;
|
||||
|
||||
<a href='/constructor/updateMessagePollVote'>updateMessagePollVote</a>#42f88f2c poll_id:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> = <a href='/type/Update'>Update</a>;
|
||||
<a href='/constructor/updateMessagePollVote'>updateMessagePollVote</a>#106395c9 poll_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> qts:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
---functions---
|
||||
|
||||
<a href='/method/auth.exportLoginToken'>auth.exportLoginToken</a>#b1b41517 api_id:<a href='/type/int'>int</a> api_hash:<a href='/type/string'>string</a> except_ids:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>;
|
||||
<a href='/method/auth.exportLoginToken'>auth.exportLoginToken</a>#b7e085fe api_id:<a href='/type/int'>int</a> api_hash:<a href='/type/string'>string</a> except_ids:<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>;
|
||||
<a href='/method/auth.acceptLoginToken'>auth.acceptLoginToken</a>#e894ad4d token:<a href='/type/bytes'>bytes</a> = <a href='/type/Authorization'>Authorization</a>;
|
||||
<a href='/method/auth.importLoginToken'>auth.importLoginToken</a>#95ac5ce4 token:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>;</code></pre>
|
||||
<h3><a class="anchor" href="#exporting-a-login-token" id="exporting-a-login-token" name="exporting-a-login-token"><i class="anchor-icon"></i></a>Exporting a login token</h3>
|
||||
|
|
|
@ -60,15 +60,15 @@
|
|||
<a href='/constructor/channelAdminLogEventActionTogglePreHistoryHidden'>channelAdminLogEventActionTogglePreHistoryHidden</a>#5f5c95f1 new_value:<a href='/type/Bool'>Bool</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>;
|
||||
<a href='/constructor/channelAdminLogEventActionDefaultBannedRights'>channelAdminLogEventActionDefaultBannedRights</a>#2df5fc0a prev_banned_rights:<a href='/type/ChatBannedRights'>ChatBannedRights</a> new_banned_rights:<a href='/type/ChatBannedRights'>ChatBannedRights</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>;
|
||||
<a href='/constructor/channelAdminLogEventActionStopPoll'>channelAdminLogEventActionStopPoll</a>#8f079643 message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>;
|
||||
<a href='/constructor/channelAdminLogEventActionChangeLinkedChat'>channelAdminLogEventActionChangeLinkedChat</a>#a26f881b prev_value:<a href='/type/int'>int</a> new_value:<a href='/type/int'>int</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>;
|
||||
<a href='/constructor/channelAdminLogEventActionChangeLinkedChat'>channelAdminLogEventActionChangeLinkedChat</a>#50c7ac8 prev_value:<a href='/type/long'>long</a> new_value:<a href='/type/long'>long</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>;
|
||||
<a href='/constructor/channelAdminLogEventActionChangeLocation'>channelAdminLogEventActionChangeLocation</a>#e6b76ae prev_value:<a href='/type/ChannelLocation'>ChannelLocation</a> new_value:<a href='/type/ChannelLocation'>ChannelLocation</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>;
|
||||
<a href='/constructor/channelAdminLogEventActionToggleSlowMode'>channelAdminLogEventActionToggleSlowMode</a>#53909779 prev_value:<a href='/type/int'>int</a> new_value:<a href='/type/int'>int</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>;
|
||||
|
||||
<a href='/constructor/channelAdminLogEvent'>channelAdminLogEvent</a>#3b5a3e40 id:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> action:<a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a> = <a href='/type/ChannelAdminLogEvent'>ChannelAdminLogEvent</a>;
|
||||
<a href='/constructor/channelAdminLogEvent'>channelAdminLogEvent</a>#1fad68cd id:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> action:<a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a> = <a href='/type/ChannelAdminLogEvent'>ChannelAdminLogEvent</a>;
|
||||
|
||||
<a href='/constructor/channels.adminLogResults'>channels.adminLogResults</a>#ed8af74d events:<a href='/type/Vector%20t'>Vector</a><<a href='/type/ChannelAdminLogEvent'>ChannelAdminLogEvent</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/channels.AdminLogResults'>channels.AdminLogResults</a>;
|
||||
|
||||
<a href='/constructor/channelAdminLogEventsFilter'>channelAdminLogEventsFilter</a>#ea107ae4 flags:<a href='/type/%23'>#</a> join:flags.0?<a href='/constructor/true'>true</a> leave:flags.1?<a href='/constructor/true'>true</a> invite:flags.2?<a href='/constructor/true'>true</a> ban:flags.3?<a href='/constructor/true'>true</a> unban:flags.4?<a href='/constructor/true'>true</a> kick:flags.5?<a href='/constructor/true'>true</a> unkick:flags.6?<a href='/constructor/true'>true</a> promote:flags.7?<a href='/constructor/true'>true</a> demote:flags.8?<a href='/constructor/true'>true</a> info:flags.9?<a href='/constructor/true'>true</a> settings:flags.10?<a href='/constructor/true'>true</a> pinned:flags.11?<a href='/constructor/true'>true</a> edit:flags.12?<a href='/constructor/true'>true</a> delete:flags.13?<a href='/constructor/true'>true</a> = <a href='/type/ChannelAdminLogEventsFilter'>ChannelAdminLogEventsFilter</a>;
|
||||
<a href='/constructor/channelAdminLogEventsFilter'>channelAdminLogEventsFilter</a>#ea107ae4 flags:<a href='/type/%23'>#</a> join:flags.0?<a href='/constructor/true'>true</a> leave:flags.1?<a href='/constructor/true'>true</a> invite:flags.2?<a href='/constructor/true'>true</a> ban:flags.3?<a href='/constructor/true'>true</a> unban:flags.4?<a href='/constructor/true'>true</a> kick:flags.5?<a href='/constructor/true'>true</a> unkick:flags.6?<a href='/constructor/true'>true</a> promote:flags.7?<a href='/constructor/true'>true</a> demote:flags.8?<a href='/constructor/true'>true</a> info:flags.9?<a href='/constructor/true'>true</a> settings:flags.10?<a href='/constructor/true'>true</a> pinned:flags.11?<a href='/constructor/true'>true</a> edit:flags.12?<a href='/constructor/true'>true</a> delete:flags.13?<a href='/constructor/true'>true</a> group_call:flags.14?<a href='/constructor/true'>true</a> invites:flags.15?<a href='/constructor/true'>true</a> = <a href='/type/ChannelAdminLogEventsFilter'>ChannelAdminLogEventsFilter</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
|
|
|
@ -44,15 +44,15 @@ User A knows phone…">
|
|||
<h1 id="dev_page_title">Requests </h1>
|
||||
|
||||
<div id="dev_page_content"><p>Let's consider several typical interaction scenarios for two users.</p>
|
||||
<h4><a class="anchor" href="#one-user-knows-the-others-number" id="one-user-knows-the-others-number"><i class="anchor-icon"></i></a>One user knows the other's number</h4>
|
||||
<h4><a class="anchor" href="#one-user-knows-the-others-number" id="one-user-knows-the-others-number" name="one-user-knows-the-others-number"><i class="anchor-icon"></i></a>One user knows the other's number</h4>
|
||||
<p>User A knows phone number of B (for instance, A has B's number in the phone book). But B does not know А's number. User A sends message to B. Immediately prior to sending a message relevant check is executed at the server side and the link between A and B will change automatically: A's number becomes available for B (user A is then presented as constructor <a href="/constructor/userRequest">userRequest</a>).
|
||||
The same happens if user B not having A's number sends a message to the latter. A's number also becomes available to B.</p>
|
||||
<h4><a class="anchor" href="#users-do-not-know-numbers-of-each-other" id="users-do-not-know-numbers-of-each-other"><i class="anchor-icon"></i></a>Users do not know numbers of each other</h4>
|
||||
<h4><a class="anchor" href="#users-do-not-know-numbers-of-each-other" id="users-do-not-know-numbers-of-each-other" name="users-do-not-know-numbers-of-each-other"><i class="anchor-icon"></i></a>Users do not know numbers of each other</h4>
|
||||
<p>User A has found user B in a chat, geochat or any other way. For both of them phone numbers are not available (in API - constructor <a href="/constructor/userForeign">userForeign</a>). A starts chat with B. When messaging A's number will not become available for B and vice versa. To provide B with A's number it is necessary to send him personal message with contact info (phone number should be transferred in constructor <a href="/constructor/inputMediaContact">inputMediaContact</a> using method <a href="/method/messages.sendMedia">messages.sendMedia</a>).
|
||||
Now B having personal message with A's phone number can store it in his phone book and import it using method <a href="/method/contacts.importContacts">contacts.importContacts</a> to have it in contacts. With all that, it is not mandatory for him to send his number: after any message later between them B's number will be available for A (see <a href="#nomer-odnogo-iz-sobesednikov-izvesten-drugomu">One user knows the other's number</a>).</p>
|
||||
<h4><a class="anchor" href="#both-user-know-each-other-number" id="both-user-know-each-other-number"><i class="anchor-icon"></i></a>Both user know each other number</h4>
|
||||
<h4><a class="anchor" href="#both-user-know-each-other-number" id="both-user-know-each-other-number" name="both-user-know-each-other-number"><i class="anchor-icon"></i></a>Both user know each other number</h4>
|
||||
<p>This is quite obvious: messaging does not change links since target state has been reached.</p>
|
||||
<h3><a class="anchor" href="#technical-features" id="technical-features"><i class="anchor-icon"></i></a>Technical features</h3>
|
||||
<h3><a class="anchor" href="#technical-features" id="technical-features" name="technical-features"><i class="anchor-icon"></i></a>Technical features</h3>
|
||||
<p>Since when sending messages to a current user updates on changed links are not sent constructors containing updated links were added to resulting types of messaging methods:</p>
|
||||
<pre><code><a href='/constructor/messages.statedMessagesLinks'>messages.statedMessagesLinks</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Message'>Message</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> links:<a href='/type/Vector%20t'>Vector</a><<a href='/type/contacts.Link'>contacts.Link</a>> pts:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/messages.StatedMessages'>messages.StatedMessages</a>;
|
||||
<a href='/constructor/messages.statedMessageLink'>messages.statedMessageLink</a> message:<a href='/type/Message'>Message</a> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> links:<a href='/type/Vector%20t'>Vector</a><<a href='/type/contacts.Link'>contacts.Link</a>> pts:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/messages.StatedMessage'>messages.StatedMessage</a>;
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<h1 id="dev_page_title">Scheduled messages</h1>
|
||||
|
||||
<div id="dev_page_content"><p>Telegram allows scheduling messages.</p>
|
||||
<pre><code><a href='/constructor/message'>message</a>#58ae39c9 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> = <a href='/type/Message'>Message</a>;
|
||||
<pre><code><a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
<a href='/constructor/updateNewScheduledMessage'>updateNewScheduledMessage</a>#39a51dfb message:<a href='/type/Message'>Message</a> = <a href='/type/Update'>Update</a>;
|
||||
<a href='/constructor/updateDeleteScheduledMessages'>updateDeleteScheduledMessages</a>#90866cee peer:<a href='/type/Peer'>Peer</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Update'>Update</a>;
|
||||
|
@ -65,7 +65,7 @@ The method call generates the following updates:</p>
|
|||
|
||||
---functions---
|
||||
|
||||
<a href='/method/messages.getScheduledHistory'>messages.getScheduledHistory</a>#e2c2685b peer:<a href='/type/InputPeer'>InputPeer</a> hash:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;
|
||||
<a href='/method/messages.getScheduledHistory'>messages.getScheduledHistory</a>#f516760b peer:<a href='/type/InputPeer'>InputPeer</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>;
|
||||
<a href='/method/messages.getScheduledMessages'>messages.getScheduledMessages</a>#bdbb0464 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/messages.Messages'>messages.Messages</a>;
|
||||
<a href='/method/messages.sendScheduledMessages'>messages.sendScheduledMessages</a>#bd38850a peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/method/messages.deleteScheduledMessages'>messages.deleteScheduledMessages</a>#59ae2b16 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Updates'>Updates</a>;
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
|
||||
---functions---
|
||||
|
||||
<a href='/method/messages.search'>messages.search</a>#c352eec flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;
|
||||
<a href='/method/messages.search'>messages.search</a>#a0fda762 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>;
|
||||
|
||||
<a href='/method/messages.searchGlobal'>messages.searchGlobal</a>#4bc6589a flags:<a href='/type/%23'>#</a> folder_id:flags.0?<a href='/type/int'>int</a> q:<a href='/type/string'>string</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_rate:<a href='/type/int'>int</a> offset_peer:<a href='/type/InputPeer'>InputPeer</a> offset_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre>
|
||||
<p>When using <a href="/method/messages.search">messages.search</a> or <a href="/method/messages.searchGlobal">messages.searchGlobal</a>, a certain message filter may be applied.<br>
|
||||
|
|
|
@ -43,12 +43,16 @@
|
|||
|
||||
<p>Telegram uses the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">Secure Remote Password protocol</a> version 6a to implement 2FA.</p>
|
||||
<p>Example impementation: <a href="https://github.com/tdlib/td/blob/56163c2460a65afc4db2c57ece576b8c38ea194b/td/telegram/PasswordManager.cpp">tdlib</a>.</p>
|
||||
<h3><a class="anchor" name="checking-the-password-with-srp" href="#checking-the-password-with-srp"><i class="anchor-icon"></i></a>Checking the password with SRP</h3>
|
||||
<p>To login to an account protected by a 2FA password or to perform some other actions (like changing channel owner), you will need to verify the user's knowledge of the current 2FA account password.</p>
|
||||
<p>To do this, first the client needs to obtain SRP parameters and the KDF algorithm to use to check the validity of the password via <a href="https://core.telegram.org/method/account.getPassword">account.getPassword</a> method. For now, only the <a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow">passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a> algorithm is supported, so we'll only explain that.</p>
|
||||
<h3><a class="anchor" href="#checking-the-password-with-srp" id="checking-the-password-with-srp" name="checking-the-password-with-srp"><i class="anchor-icon"></i></a>Checking the password with SRP</h3>
|
||||
<p>To login to an account protected by a 2FA password or to perform some other actions (like changing channel owner), you will need to verify the user's knowledge of the current 2FA account password.</p>
|
||||
<p>To do this, first the client needs to obtain SRP parameters and the KDF algorithm to use to check the validity of the password via <a href="https://core.telegram.org/method/account.getPassword">account.getPassword</a> method. For now, only the <a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow">passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a> algorithm is supported, so we'll only explain that.</p>
|
||||
<p>Then, after the user provides a password, the client should generate an <a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a> object using SRP and a specific KDF algorithm as shown below and pass it to appropriate method (e.g. <a href="/method/auth.checkPassword">auth.checkPassword</a> in case of authorization).</p>
|
||||
<p>This extension of the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a> uses the password-based <a href="https://en.wikipedia.org/wiki/PBKDF2">PBKDF2</a> with 100000 iterations using sha512 (<code>PBKDF2HMACSHA512iter100000</code>).<br>PBKDF2 is used to additionally rehash the <code>x</code> parameter, obtained using a method similar to the one described in <a href="https://tools.ietf.org/html/rfc2945#section-3">RFC 2945</a> (<code>H(s | H ( I | password | I) | s)</code> instead of <code>H(s | H ( I | ":" | password)</code>) (see below).</p>
|
||||
<p>Here, <code>|</code> denotes concatenation and <code>+</code> denotes the arithmetical operator <code>+</code>.<br>In all cases where concatenation of numbers passed to hashing functions is done, the numbers must be used in big-endian form, padded to 2048 bits; all maths is modulo <code>p</code>.<br>Instead of <code>I</code>, <code>salt1</code> will be used (see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a>).<br>Instead of <code>s</code>, <code>salt2</code> will be used (see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a>).</p>
|
||||
<p>This extension of the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a> uses the password-based <a href="https://en.wikipedia.org/wiki/PBKDF2">PBKDF2</a> with 100000 iterations using sha512 (<code>PBKDF2HMACSHA512iter100000</code>).
|
||||
PBKDF2 is used to additionally rehash the <code>x</code> parameter, obtained using a method similar to the one described in <a href="https://tools.ietf.org/html/rfc2945#section-3">RFC 2945</a> (<code>H(s | H ( I | password | I) | s)</code> instead of <code>H(s | H ( I | ":" | password)</code>) (see below).</p>
|
||||
<p>Here, <code>|</code> denotes concatenation and <code>+</code> denotes the arithmetical operator <code>+</code>.
|
||||
In all cases where concatenation of numbers passed to hashing functions is done, the numbers must be used in big-endian form, padded to 2048 bits; all maths is modulo <code>p</code>.
|
||||
Instead of <code>I</code>, <code>salt1</code> will be used (see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a>).
|
||||
Instead of <code>s</code>, <code>salt2</code> will be used (see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a>).</p>
|
||||
<p>The main hashing function <code>H</code> is sha256:</p>
|
||||
<ul>
|
||||
<li><code>H(data) := sha256(data)</code></li>
|
||||
|
@ -67,15 +71,27 @@
|
|||
</ul>
|
||||
<p>Client-side, the following parameters are extracted from the <a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow">passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a> object, contained in the <a href="/constructor/account.password">account.password</a> object.</p>
|
||||
<ul>
|
||||
<li><code>g := algo.g</code></li>
|
||||
<li><p><code>p := algo.p</code><br>The client is expected to check whether <strong>p</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that <code>2^2047 < p < 2^2048</code>), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> — namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as to avoid repeating lengthy computations in future. This cache might be shared with one used for <a href="/mtproto/auth_key">Authorization Key generation</a>.</p>
|
||||
<li>
|
||||
<p><code>g := algo.g</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>p := algo.p</code>
|
||||
The client is expected to check whether <strong>p</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that <code>2^2047 < p < 2^2048</code>), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> -- namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as to avoid repeating lengthy computations in future. This cache might be shared with one used for <a href="/mtproto/auth_key">Authorization Key generation</a>.</p>
|
||||
<p>If the client has an inadequate random number generator, it makes sense to use the <strong>secure_random</strong> of account.password as additional seed.</p>
|
||||
</li>
|
||||
<li><p><code>password := (user-provided password)</code></p>
|
||||
<li>
|
||||
<p><code>password := (user-provided password)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>salt1 := algo.salt1</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>salt2 := algo.salt2</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>g_b := srp_B</code>
|
||||
<code>srp_B</code> and <code>srp_id</code> are extracted from the <a href="/constructor/account.password">account.password</a> object.</p>
|
||||
</li>
|
||||
<li><code>salt1 := algo.salt1</code></li>
|
||||
<li><code>salt2 := algo.salt2</code></li>
|
||||
<li><code>g_b := srp_B</code><br><code>srp_B</code> and <code>srp_id</code> are extracted from the <a href="/constructor/account.password">account.password</a> object.</li>
|
||||
</ul>
|
||||
<p>The <code>k</code> parameter is generated, both on client and server:</p>
|
||||
<ul>
|
||||
|
@ -127,14 +143,26 @@
|
|||
</ul>
|
||||
<p>And:</p>
|
||||
<ul>
|
||||
<li><code>g_a := pow(g, a) mod p</code></li>
|
||||
<li><code>v := pow(g, x) mod p</code></li>
|
||||
<li><code>s_b := pow(g_a * (pow(v, u) mod p), b) mod p</code></li>
|
||||
<li><code>s_b := pow((pow(g, a) mod p) * (pow(pow(g, x) mod p, u) mod p), b) mod p</code></li>
|
||||
<li><code>s_b := pow(pow(g, a + x * u) mod p, b) mod p</code></li>
|
||||
<li><p><code>s_b := pow(pow(g, b) mod p, a + u * x) mod p</code></p>
|
||||
<li>
|
||||
<p><code>g_a := pow(g, a) mod p</code></p>
|
||||
</li>
|
||||
<li><p><code>s_a := pow(pow(g, b) mod p, a + u * x) mod p</code></p>
|
||||
<li>
|
||||
<p><code>v := pow(g, x) mod p</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>s_b := pow(g_a * (pow(v, u) mod p), b) mod p</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>s_b := pow((pow(g, a) mod p) * (pow(pow(g, x) mod p, u) mod p), b) mod p</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>s_b := pow(pow(g, a + x * u) mod p, b) mod p</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>s_b := pow(pow(g, b) mod p, a + u * x) mod p</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>s_a := pow(pow(g, b) mod p, a + u * x) mod p</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>This means:</p>
|
||||
|
@ -160,23 +188,32 @@
|
|||
<ul>
|
||||
<li><code>M1 === M2</code></li>
|
||||
</ul>
|
||||
<p>If the password isn't correct, <a href="/method/auth.checkPassword#possible-errors">400 PASSWORD_HASH_INVALID</a> will be returned.</p>
|
||||
<h3><a class="anchor" name="setting-a-new-2fa-password" href="#setting-a-new-2fa-password"><i class="anchor-icon"></i></a>Setting a new 2FA password</h3>
|
||||
<p>To set a new 2FA password use the <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> method.<br>If a password is already set, generate an InputCheckPasswordSRP object as per <a href="#checking-the-password-with-srp">checking passwords with SRP</a>, and insert it in the <code>password</code> field of the <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> method.<br>To remove the current password, pass an empty <code>new_password_hash</code> in the <a href="/type/account.PasswordInputSettings">account.PasswordInputSettings</a> object.</p>
|
||||
<p>To set a new password, use the SRP parameters and the KDF algorithm obtained using <a href="https://core.telegram.org/method/account.getPassword">account.getPassword</a> when generating the <code>password</code> field.<br>Then generate a new <code>new_password_hash</code> using the KDF algorithm specified in the <code>new_settings</code>, just append 32 sufficiently random bytes to the <code>salt1</code>, first.<br>Proceed as for <a href="#checking-the-password-with-srp">checking passwords with SRP</a>, just stop at the generation of the <code>v</code> parameter, and use it as <code>new_password_hash</code>:</p>
|
||||
<p>If the password isn't correct, <a href="/method/auth.checkPassword#possible-errors">400 PASSWORD_HASH_INVALID</a> will be returned.</p>
|
||||
<h3><a class="anchor" href="#setting-a-new-2fa-password" id="setting-a-new-2fa-password" name="setting-a-new-2fa-password"><i class="anchor-icon"></i></a>Setting a new 2FA password</h3>
|
||||
<p>To set a new 2FA password use the <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> method.<br>
|
||||
If a password is already set, generate an InputCheckPasswordSRP object as per <a href="#checking-the-password-with-srp">checking passwords with SRP</a>, and insert it in the <code>password</code> field of the <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> method.<br>
|
||||
To remove the current password, pass an empty <code>new_password_hash</code> in the <a href="/type/account.PasswordInputSettings">account.PasswordInputSettings</a> object.</p>
|
||||
<p>To set a new password, use the SRP parameters and the KDF algorithm obtained using <a href="https://core.telegram.org/method/account.getPassword">account.getPassword</a> when generating the <code>password</code> field.
|
||||
Then generate a new <code>new_password_hash</code> using the KDF algorithm specified in the <code>new_settings</code>, just append 32 sufficiently random bytes to the <code>salt1</code>, first.
|
||||
Proceed as for <a href="#checking-the-password-with-srp">checking passwords with SRP</a>, just stop at the generation of the <code>v</code> parameter, and use it as <code>new_password_hash</code>:</p>
|
||||
<ul>
|
||||
<li><code>v := pow(g, x) mod p</code></li>
|
||||
</ul>
|
||||
<p>As usual in big endian form, padded to 2048 bits.</p>
|
||||
<h4><a class="anchor" name="email-verification" href="#email-verification"><i class="anchor-icon"></i></a>Email verification</h4>
|
||||
<p>When setting up two-factor authorization, it is recommended to set up a <strong>recovery email</strong>, to allow recovery of the password through the user's email address, in case they forget it.</p>
|
||||
<p>To set up a recovery email, it must first be verified.<br>This can be done directly when setting the new password using <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> by setting the email parameter and flag in the <a href="/constructor/account.passwordInputSettings">account.passwordInputSettings</a> constructor.<br>If the email isn't verified, an <a href="/method/account.updatePasswordSettings#possible-errors">EMAIL_UNCONFIRMED_X 400 error</a> will be returned, where X is the length of the verification code that was just sent to the email.<br>Use <a href="/method/account.confirmPasswordEmail">account.confirmPasswordEmail</a> to enter the received verification code and enable the recovery email.<br>Use <a href="/method/account.resendPasswordEmail">account.resendPasswordEmail</a> to resend the verification code.<br>Use <a href="/method/account.cancelPasswordEmail">account.cancelPasswordEmail</a> to cancel the verification code.</p>
|
||||
<h4><a class="anchor" href="#email-verification" id="email-verification" name="email-verification"><i class="anchor-icon"></i></a>Email verification</h4>
|
||||
<p>When setting up two-factor authorization, it is recommended to set up a <strong>recovery email</strong>, to allow recovery of the password through the user's email address, in case they forget it.</p>
|
||||
<p>To set up a recovery email, it must first be verified.
|
||||
This can be done directly when setting the new password using <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> by setting the email parameter and flag in the <a href="/constructor/account.passwordInputSettings">account.passwordInputSettings</a> constructor.
|
||||
If the email isn't verified, an <a href="/method/account.updatePasswordSettings#possible-errors">EMAIL_UNCONFIRMED_X 400 error</a> will be returned, where X is the length of the verification code that was just sent to the email.
|
||||
Use <a href="/method/account.confirmPasswordEmail">account.confirmPasswordEmail</a> to enter the received verification code and enable the recovery email.
|
||||
Use <a href="/method/account.resendPasswordEmail">account.resendPasswordEmail</a> to resend the verification code.
|
||||
Use <a href="/method/account.cancelPasswordEmail">account.cancelPasswordEmail</a> to cancel the verification code.</p>
|
||||
<p>To get the current recovery email, use <a href="/method/account.getPasswordSettings">account.getPasswordSettings</a>.</p>
|
||||
<h4><a class="anchor" name="email-recovery" href="#email-recovery"><i class="anchor-icon"></i></a>Email recovery</h4>
|
||||
<p>In order to recover a forgotten 2FA password, an email must be sent to the <a href="#email-verification">previously specified address</a> using the <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a> method.<br>Then use <a href="/method/auth.recoverPassword">auth.recoverPassword</a> with the received code to delete the current 2FA password, to set a new one follow <a href="/api/srp">these instructions</a>.</p>
|
||||
<h3><a class="anchor" name="related-pages" href="#related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" name="srp-design" href="#srp-design"><i class="anchor-icon"></i></a><a href="http://srp.stanford.edu/design.html">SRP design</a></h4>
|
||||
</div>
|
||||
<h4><a class="anchor" href="#email-recovery" id="email-recovery" name="email-recovery"><i class="anchor-icon"></i></a>Email recovery</h4>
|
||||
<p>In order to recover a forgotten 2FA password, an email must be sent to the <a href="#email-verification">previously specified address</a> using the <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a> method.
|
||||
Then use <a href="/method/auth.recoverPassword">auth.recoverPassword</a> with the received code to delete the current 2FA password, to set a new one follow <a href="/api/srp">these instructions</a>.</p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#srp-design" id="srp-design" name="srp-design"><i class="anchor-icon"></i></a><a href="http://srp.stanford.edu/design.html">SRP design</a></h4></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -81,9 +81,9 @@ Note that in this case, <code>current</code> refers to the <code>period</code> i
|
|||
</ul>
|
||||
<h3><a class="anchor" href="#supergroup-statistics" id="supergroup-statistics" name="supergroup-statistics"><i class="anchor-icon"></i></a>Supergroup statistics</h3>
|
||||
<p>Scheme:</p>
|
||||
<pre><code><a href='/constructor/statsGroupTopPoster'>statsGroupTopPoster</a>#18f3d0f7 user_id:<a href='/type/int'>int</a> messages:<a href='/type/int'>int</a> avg_chars:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopPoster'>StatsGroupTopPoster</a>;
|
||||
<a href='/constructor/statsGroupTopInviter'>statsGroupTopInviter</a>#31962a4c user_id:<a href='/type/int'>int</a> invitations:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopInviter'>StatsGroupTopInviter</a>;
|
||||
<a href='/constructor/statsGroupTopAdmin'>statsGroupTopAdmin</a>#6014f412 user_id:<a href='/type/int'>int</a> deleted:<a href='/type/int'>int</a> kicked:<a href='/type/int'>int</a> banned:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopAdmin'>StatsGroupTopAdmin</a>;
|
||||
<pre><code><a href='/constructor/statsGroupTopPoster'>statsGroupTopPoster</a>#9d04af9b user_id:<a href='/type/long'>long</a> messages:<a href='/type/int'>int</a> avg_chars:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopPoster'>StatsGroupTopPoster</a>;
|
||||
<a href='/constructor/statsGroupTopInviter'>statsGroupTopInviter</a>#535f779d user_id:<a href='/type/long'>long</a> invitations:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopInviter'>StatsGroupTopInviter</a>;
|
||||
<a href='/constructor/statsGroupTopAdmin'>statsGroupTopAdmin</a>#d7584c87 user_id:<a href='/type/long'>long</a> deleted:<a href='/type/int'>int</a> kicked:<a href='/type/int'>int</a> banned:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopAdmin'>StatsGroupTopAdmin</a>;
|
||||
|
||||
<a href='/constructor/stats.megagroupStats'>stats.megagroupStats</a>#ef7ff916 period:<a href='/type/StatsDateRangeDays'>StatsDateRangeDays</a> members:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> messages:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> viewers:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> posters:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> growth_graph:<a href='/type/StatsGraph'>StatsGraph</a> members_graph:<a href='/type/StatsGraph'>StatsGraph</a> new_members_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> languages_graph:<a href='/type/StatsGraph'>StatsGraph</a> messages_graph:<a href='/type/StatsGraph'>StatsGraph</a> actions_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_hours_graph:<a href='/type/StatsGraph'>StatsGraph</a> weekdays_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_posters:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopPoster'>StatsGroupTopPoster</a>> top_admins:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopAdmin'>StatsGroupTopAdmin</a>> top_inviters:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopInviter'>StatsGroupTopInviter</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/stats.MegagroupStats'>stats.MegagroupStats</a>;
|
||||
|
||||
|
|
|
@ -46,29 +46,29 @@
|
|||
<p>Schema:</p>
|
||||
<pre><code><a href='/constructor/messageReplyHeader'>messageReplyHeader</a>#a6d57763 flags:<a href='/type/%23'>#</a> reply_to_msg_id:<a href='/type/int'>int</a> reply_to_peer_id:flags.0?<a href='/type/Peer'>Peer</a> reply_to_top_id:flags.1?<a href='/type/int'>int</a> = <a href='/type/MessageReplyHeader'>MessageReplyHeader</a>;
|
||||
|
||||
<a href='/constructor/messageReplies'>messageReplies</a>#4128faac flags:<a href='/type/%23'>#</a> comments:flags.0?<a href='/constructor/true'>true</a> replies:<a href='/type/int'>int</a> replies_pts:<a href='/type/int'>int</a> recent_repliers:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/Peer'>Peer</a>> channel_id:flags.0?<a href='/type/int'>int</a> max_id:flags.2?<a href='/type/int'>int</a> read_max_id:flags.3?<a href='/type/int'>int</a> = <a href='/type/MessageReplies'>MessageReplies</a>;
|
||||
<a href='/constructor/messageReplies'>messageReplies</a>#83d60fc2 flags:<a href='/type/%23'>#</a> comments:flags.0?<a href='/constructor/true'>true</a> replies:<a href='/type/int'>int</a> replies_pts:<a href='/type/int'>int</a> recent_repliers:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/Peer'>Peer</a>> channel_id:flags.0?<a href='/type/long'>long</a> max_id:flags.2?<a href='/type/int'>int</a> read_max_id:flags.3?<a href='/type/int'>int</a> = <a href='/type/MessageReplies'>MessageReplies</a>;
|
||||
|
||||
<a href='/constructor/message'>message</a>#58ae39c9 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> = <a href='/type/Message'>Message</a>;
|
||||
<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
---functions---
|
||||
|
||||
<a href='/method/messages.search'>messages.search</a>#c352eec flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre>
|
||||
<a href='/method/messages.search'>messages.search</a>#a0fda762 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre>
|
||||
<p>Threads are usually automatically created when replying to any message in a group.<br>
|
||||
For example, all replies to a message with ID <code>420</code> are associated to thread with ID <code>420</code>, unique to this group; this thread ID is contained in the <code>reply_to_top_id</code> field of <code>reply_to</code> <a href="/constructor/messageReplyHeader">messageReplyHeader</a>, along with an eventual <code>reply_to_msg_id</code>, for replies to messages within a thread.<br>
|
||||
Replies to messages in a thread are part of the same thread, and do not spawn new threads. </p>
|
||||
<p>When receiving a <a href="/constructor/message">message</a> from a group that is also the top of a thread (the message with ID <code>420</code>), the <code>replies</code> optional field will contain a <a href="/constructor/messageReplies">messageReplies</a> constructor, containing the message ID and <a href="/api/updates">PTS</a> of the latest reply in the thread, and the message ID of the latest read thread reply, along with the total number of replies in the thread. </p>
|
||||
<p>Replies to a thread can also be manually fetched using <a href="/method/messages.search">messages.search</a>, providing to <code>top_msg_id</code> the thread ID. </p>
|
||||
<h3><a class="anchor" href="#channel-comments" id="channel-comments" name="channel-comments"><i class="anchor-icon"></i></a>Channel comments</h3>
|
||||
<pre><code><a href='/constructor/messageReplies'>messageReplies</a>#4128faac flags:<a href='/type/%23'>#</a> comments:flags.0?<a href='/constructor/true'>true</a> replies:<a href='/type/int'>int</a> replies_pts:<a href='/type/int'>int</a> recent_repliers:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/Peer'>Peer</a>> channel_id:flags.0?<a href='/type/int'>int</a> max_id:flags.2?<a href='/type/int'>int</a> read_max_id:flags.3?<a href='/type/int'>int</a> = <a href='/type/MessageReplies'>MessageReplies</a>;</code></pre>
|
||||
<pre><code><a href='/constructor/messageReplies'>messageReplies</a>#83d60fc2 flags:<a href='/type/%23'>#</a> comments:flags.0?<a href='/constructor/true'>true</a> replies:<a href='/type/int'>int</a> replies_pts:<a href='/type/int'>int</a> recent_repliers:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/Peer'>Peer</a>> channel_id:flags.0?<a href='/type/long'>long</a> max_id:flags.2?<a href='/type/int'>int</a> read_max_id:flags.3?<a href='/type/int'>int</a> = <a href='/type/MessageReplies'>MessageReplies</a>;</code></pre>
|
||||
<p>The same <a href="/constructor/messageReplies">messageReplies</a> constructor seen above will also be contained in channel posts, this time containing information about the comment section of a specific channel post.<br>
|
||||
The comment section of a channel post is simply the <a href="#message-thread">message thread</a> of the automatically forwarded channel message in the <a href="/api/discussion">linked discussion supergroup</a>; the ID of the linked discussion supergroup will be contained in the <code>messageReplies.channel_id</code> field. </p>
|
||||
<p>For channel posts, the <code>recent_repliers</code> field will also contain information about the last few comment posters for a specific thread, to show a small list of commenter profile pictures in client previews.</p>
|
||||
<h4><a class="anchor" href="#replies" id="replies" name="replies"><i class="anchor-icon"></i></a>@replies</h4>
|
||||
<pre><code><a href='/constructor/messageFwdHeader'>messageFwdHeader</a>#5f777dce flags:<a href='/type/%23'>#</a> from_id:flags.0?<a href='/type/Peer'>Peer</a> from_name:flags.5?<a href='/type/string'>string</a> date:<a href='/type/int'>int</a> channel_post:flags.2?<a href='/type/int'>int</a> post_author:flags.3?<a href='/type/string'>string</a> saved_from_peer:flags.4?<a href='/type/Peer'>Peer</a> saved_from_msg_id:flags.4?<a href='/type/int'>int</a> psa_type:flags.6?<a href='/type/string'>string</a> = <a href='/type/MessageFwdHeader'>MessageFwdHeader</a>;
|
||||
<pre><code><a href='/constructor/messageFwdHeader'>messageFwdHeader</a>#5f777dce flags:<a href='/type/%23'>#</a> imported:flags.7?<a href='/constructor/true'>true</a> from_id:flags.0?<a href='/type/Peer'>Peer</a> from_name:flags.5?<a href='/type/string'>string</a> date:<a href='/type/int'>int</a> channel_post:flags.2?<a href='/type/int'>int</a> post_author:flags.3?<a href='/type/string'>string</a> saved_from_peer:flags.4?<a href='/type/Peer'>Peer</a> saved_from_msg_id:flags.4?<a href='/type/int'>int</a> psa_type:flags.6?<a href='/type/string'>string</a> = <a href='/type/MessageFwdHeader'>MessageFwdHeader</a>;
|
||||
|
||||
<a href='/constructor/messageReplyHeader'>messageReplyHeader</a>#a6d57763 flags:<a href='/type/%23'>#</a> reply_to_msg_id:<a href='/type/int'>int</a> reply_to_peer_id:flags.0?<a href='/type/Peer'>Peer</a> reply_to_top_id:flags.1?<a href='/type/int'>int</a> = <a href='/type/MessageReplyHeader'>MessageReplyHeader</a>;
|
||||
|
||||
<a href='/constructor/message'>message</a>#58ae39c9 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> = <a href='/type/Message'>Message</a>;
|
||||
<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
|
||||
|
||||
<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>;
|
||||
<a href='/constructor/updateNewChannelMessage'>updateNewChannelMessage</a>#62ba04d9 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>;
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
|
||||
---functions---
|
||||
|
||||
<a href='/method/contacts.getTopPeers'>contacts.getTopPeers</a>#d4982db5 flags:<a href='/type/%23'>#</a> correspondents:flags.0?<a href='/constructor/true'>true</a> bots_pm:flags.1?<a href='/constructor/true'>true</a> bots_inline:flags.2?<a href='/constructor/true'>true</a> phone_calls:flags.3?<a href='/constructor/true'>true</a> forward_users:flags.4?<a href='/constructor/true'>true</a> forward_chats:flags.5?<a href='/constructor/true'>true</a> groups:flags.10?<a href='/constructor/true'>true</a> channels:flags.15?<a href='/constructor/true'>true</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/int'>int</a> = <a href='/type/contacts.TopPeers'>contacts.TopPeers</a>;</code></pre>
|
||||
<a href='/method/contacts.getTopPeers'>contacts.getTopPeers</a>#973478b6 flags:<a href='/type/%23'>#</a> correspondents:flags.0?<a href='/constructor/true'>true</a> bots_pm:flags.1?<a href='/constructor/true'>true</a> bots_inline:flags.2?<a href='/constructor/true'>true</a> phone_calls:flags.3?<a href='/constructor/true'>true</a> forward_users:flags.4?<a href='/constructor/true'>true</a> forward_chats:flags.5?<a href='/constructor/true'>true</a> groups:flags.10?<a href='/constructor/true'>true</a> channels:flags.15?<a href='/constructor/true'>true</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/contacts.TopPeers'>contacts.TopPeers</a>;</code></pre>
|
||||
<p>The rate delta is computed by taking the time delta between the last time the user used a certain peer and the last time the rating for that peer was received and dividing it by the <a href="/constructor/config">exponential decay from config</a>.</p>
|
||||
<p>Example:
|
||||
Client-side, every time a user opens chat <code>123456789</code> the following operation must be done on the cached top peer info.</p>
|
||||
|
|
|
@ -54,9 +54,9 @@
|
|||
<p>As said earlier, each payload with updates has a TL-type <a href="/type/Updates">Updates</a>. It can be seen from the schema below that this type has several constructors.</p>
|
||||
<pre><code><a href='/constructor/updatesTooLong'>updatesTooLong</a>#e317af7e = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updateShort'>updateShort</a>#78d4dec1 update:<a href='/type/Update'>Update</a> date:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updateShortMessage'>updateShortMessage</a>#2296d2c8 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updateShortChatMessage'>updateShortChatMessage</a>#402d5dbb flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> chat_id:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/int'>int</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updateShortSentMessage'>updateShortSentMessage</a>#11f1331c flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updateShortMessage'>updateShortMessage</a>#313bc7f8 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> message:<a href='/type/string'>string</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updateShortChatMessage'>updateShortChatMessage</a>#4d6deea5 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/long'>long</a> chat_id:<a href='/type/long'>long</a> message:<a href='/type/string'>string</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updateShortSentMessage'>updateShortSentMessage</a>#9015e101 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updatesCombined'>updatesCombined</a>#725b04c3 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq_start:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
|
||||
<a href='/constructor/updates'>updates</a>#74ae4240 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre>
|
||||
<p><a href="/constructor/updatesTooLong">updatesTooLong</a> indicates that there are too many events pending to be pushed to the client, so one needs to <a href="#recovering-gaps">fetch them manually</a>.</p>
|
||||
|
|
|
@ -42,81 +42,86 @@
|
|||
<div id="dev_page_content"><!-- scroll_nav -->
|
||||
|
||||
<p>Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands and <a href="#inline-mode">inline requests</a>. You control your bots using HTTPS requests to our <a href="/bots/api">Bot API</a>.</p>
|
||||
<h3><a class="anchor" name="1-what-can-i-do-with-bots" href="#1-what-can-i-do-with-bots"><i class="anchor-icon"></i></a>1. What can I do with bots?</h3>
|
||||
<h3><a class="anchor" href="#1-what-can-i-do-with-bots" id="1-what-can-i-do-with-bots" name="1-what-can-i-do-with-bots"><i class="anchor-icon"></i></a>1. What can I do with bots?</h3>
|
||||
<div class="dev_side_image">
|
||||
<a href="/file/811140081/1/VldnlW70g2I/a140b0216e7d156ebc" target="_blank"><img src="/file/811140663/1/uHVzwsRJz3Y/a499733c59840694ca" title="A chat with a bot also showing search results from the @gif inline-bot"/></a>
|
||||
<a href="/file/811140081/1/VldnlW70g2I/a140b0216e7d156ebc" target="_blank"><img src="/file/811140663/1/uHVzwsRJz3Y/a499733c59840694ca" title="A chat with a bot also showing search results from the @gif inline-bot"></a>
|
||||
</div>
|
||||
|
||||
<p>To name just a few things, you could use bots to:</p>
|
||||
<ul>
|
||||
<li><p><strong>Get customized notifications and news</strong>. A bot can act as a smart newspaper, sending you relevant content as soon as it's published.</p>
|
||||
<li>
|
||||
<p><strong>Get customized notifications and news</strong>. A bot can act as a smart newspaper, sending you relevant content as soon as it's published.</p>
|
||||
</li>
|
||||
<li><p><strong>Integrate with other services</strong>. A bot can enrich Telegram chats with content from external services.<br><a href="https://t.me/gmailbot"><strong>Gmail Bot</strong></a>, <a href="https://t.me/gif"><strong>GIF bot</strong></a>, <a href="https://t.me/imdb"><strong>IMDB bot</strong></a>, <a href="https://t.me/wiki"><strong>Wiki bot</strong></a>, <a href="https://t.me/music"><strong>Music bot</strong></a>, <a href="https://t.me/youtube"><strong>Youtube bot</strong></a>, <a href="https://t.me/githubbot"><strong>GitHubBot</strong></a></p>
|
||||
<li>
|
||||
<p><strong>Integrate with other services</strong>. A bot can enrich Telegram chats with content from external services.
|
||||
<a href="https://t.me/gmailbot"><strong>Gmail Bot</strong></a>, <a href="https://t.me/gif"><strong>GIF bot</strong></a>, <a href="https://t.me/imdb"><strong>IMDB bot</strong></a>, <a href="https://t.me/wiki"><strong>Wiki bot</strong></a>, <a href="https://t.me/music"><strong>Music bot</strong></a>, <a href="https://t.me/youtube"><strong>Youtube bot</strong></a>, <a href="https://t.me/githubbot"><strong>GitHubBot</strong></a></p>
|
||||
</li>
|
||||
<li><p><strong>Accept payments from Telegram users</strong>. A bot can offer paid services or work as a virtual storefront. <a href="/bots/payments">Read more »</a><br><a href="https://t.me/shopbot"><strong>Demo Shop Bot</strong></a>, <a href="https://t.me/teststore"><strong>Demo Store</strong></a></p>
|
||||
<li>
|
||||
<p><strong>Accept payments from Telegram users</strong>. A bot can offer paid services or work as a virtual storefront. <a href="/bots/payments">Read more »</a>
|
||||
<a href="https://t.me/shopbot"><strong>Demo Shop Bot</strong></a>, <a href="https://t.me/teststore"><strong>Demo Store</strong></a></p>
|
||||
</li>
|
||||
<li><p><strong>Create custom tools</strong>. A bot may provide you with alerts, weather forecasts, translations, formatting or other services.<br><a href="https://t.me/Bold"><strong>Markdown bot</strong></a>, <a href="https://t.me/sticker"><strong>Sticker bot</strong></a>, <a href="https://t.me/vote"><strong>Vote bot</strong></a>, <a href="https://t.me/like"><strong>Like bot</strong></a></p>
|
||||
<li>
|
||||
<p><strong>Create custom tools</strong>. A bot may provide you with alerts, weather forecasts, translations, formatting or other services.
|
||||
<a href="https://t.me/Bold"><strong>Markdown bot</strong></a>, <a href="https://t.me/sticker"><strong>Sticker bot</strong></a>, <a href="https://t.me/vote"><strong>Vote bot</strong></a>, <a href="https://t.me/like"><strong>Like bot</strong></a></p>
|
||||
</li>
|
||||
<li><p><strong>Build single- and multiplayer games</strong>. A bot can offer rich <a href="/bots/games">HTML5 experiences</a>, from simple arcades and puzzles to 3D-shooters and real-time strategy games.<br><a href="https://t.me/gamebot"><strong>GameBot</strong></a>, <a href="https://t.me/gamee"><strong>Gamee</strong></a></p>
|
||||
<li>
|
||||
<p><strong>Build single- and multiplayer games</strong>. A bot can offer rich <a href="/bots/games">HTML5 experiences</a>, from simple arcades and puzzles to 3D-shooters and real-time strategy games.
|
||||
<a href="https://t.me/gamebot"><strong>GameBot</strong></a>, <a href="https://t.me/gamee"><strong>Gamee</strong></a></p>
|
||||
</li>
|
||||
<li><p><strong>Build social services</strong>. A bot could connect people looking for conversation partners based on common interests or proximity.</p>
|
||||
<li>
|
||||
<p><strong>Build social services</strong>. A bot could connect people looking for conversation partners based on common interests or proximity.</p>
|
||||
</li>
|
||||
<li><p><strong>Do virtually anything else</strong>. Except for dishes — bots are terrible at doing the dishes.</p>
|
||||
<li>
|
||||
<p><strong>Do virtually anything else</strong>. Except for dishes — bots are terrible at doing the dishes.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h3><a class="anchor" name="2-how-do-bots-work" href="#2-how-do-bots-work"><i class="anchor-icon"></i></a>2. How do bots work?</h3>
|
||||
<h3><a class="anchor" href="#2-how-do-bots-work" id="2-how-do-bots-work" name="2-how-do-bots-work"><i class="anchor-icon"></i></a>2. How do bots work?</h3>
|
||||
<p>At the core, Telegram Bots are special accounts that do not require an additional phone number to set up. Users can interact with bots in two ways:</p>
|
||||
<ul>
|
||||
<li>Send messages and <a href="#commands">commands</a> to bots by opening a chat with them or by adding them to groups.</li>
|
||||
<li>Send requests directly from the input field by typing the bot's @username and a query. This allows sending content from <a href="/bots/inline">inline bots</a> directly into any chat, group or channel.</li>
|
||||
<li>Send requests directly from the input field by typing the bot's @username and a query. This allows sending content from <a href="/bots/inline">inline bots</a> directly into any chat, group or channel.</li>
|
||||
</ul>
|
||||
<p>Messages, commands and requests sent by users are passed to the software running on your servers. Our intermediary server handles all encryption and communication with the Telegram API for you. You communicate with this server via a simple HTTPS-interface that offers a simplified version of the Telegram API. We call that interface our <a href="/bots/api">Bot API</a>.</p>
|
||||
<blockquote>
|
||||
<p>A detailed description of the Bot API is available on <a href="/bots/api">this page »</a></p>
|
||||
</blockquote>
|
||||
<h3><a class="anchor" name="3-how-do-i-create-a-bot" href="#3-how-do-i-create-a-bot"><i class="anchor-icon"></i></a>3. How do I create a bot?</h3>
|
||||
<h3><a class="anchor" href="#3-how-do-i-create-a-bot" id="3-how-do-i-create-a-bot" name="3-how-do-i-create-a-bot"><i class="anchor-icon"></i></a>3. How do I create a bot?</h3>
|
||||
<div class="dev_side_image">
|
||||
<a href="/file/811140327/1/zlN4goPTupk/9ff2f2f01c4bd1b013" target="_blank"><img src="/file/811140763/1/PihKNbjT8UE/03b57814e13713da37" title="The Botfather. Click for hi-res picture"/></a>
|
||||
<a href="/file/811140327/1/zlN4goPTupk/9ff2f2f01c4bd1b013" target="_blank"><img src="/file/811140763/1/PihKNbjT8UE/03b57814e13713da37" title="The Botfather. Click for hi-res picture"></a>
|
||||
</div>
|
||||
|
||||
<p>There's a… bot for that. Just talk to <a href="https://t.me/botfather">BotFather</a> (described <a href="#6-botfather">below</a>) and follow a few simple steps. Once you've created a bot and received your authorization token, head down to the <a href="/bots/api">Bot API manual</a> to see what you can teach your bot to do.</p>
|
||||
<p>There's a... bot for that. Just talk to <a href="https://t.me/botfather">BotFather</a> (described <a href="#6-botfather">below</a>) and follow a few simple steps. Once you've created a bot and received your authorization token, head down to the <a href="/bots/api">Bot API manual</a> to see what you can teach your bot to do.</p>
|
||||
<blockquote>
|
||||
<p>You may also like to check out some <strong>code examples</strong> <a href="/bots/samples">here »</a></p>
|
||||
</blockquote>
|
||||
<h3><a class="anchor" name="4-how-are-bots-different-from-humans" href="#4-how-are-bots-different-from-humans"><i class="anchor-icon"></i></a>4. How are bots different from humans?</h3>
|
||||
<h3><a class="anchor" href="#4-how-are-bots-different-from-humans" id="4-how-are-bots-different-from-humans" name="4-how-are-bots-different-from-humans"><i class="anchor-icon"></i></a>4. How are bots different from humans?</h3>
|
||||
<ul>
|
||||
<li>Bots have no online status and no last seen timestamps, the interface shows the label <strong>'bot'</strong> instead.</li>
|
||||
<li>Bots have limited cloud storage — older messages may be removed by the server shortly after they have been processed.</li>
|
||||
<li>Bots can't initiate conversations with users. A user <strong>must</strong> either add them to a group or send them a message first. People can use <code>t.me/<bot_username></code> links or username search to find your bot.</li>
|
||||
<li>Bot usernames always end in 'bot' (e.g. <a href="https://t.me/triviabot">@TriviaBot</a>, <a href="https://t.me/githubbot">@GitHub_bot</a>).</li>
|
||||
<li>Bots have no online status and no last seen timestamps, the interface shows the label <strong>'bot'</strong> instead.</li>
|
||||
<li>Bots have limited cloud storage — older messages may be removed by the server shortly after they have been processed.</li>
|
||||
<li>Bots can't initiate conversations with users. A user <strong>must</strong> either add them to a group or send them a message first. People can use <code>t.me/<bot_username></code> links or username search to find your bot.</li>
|
||||
<li>Bot usernames always end in 'bot' (e.g. <a href="https://t.me/triviabot">@TriviaBot</a>, <a href="https://t.me/githubbot">@GitHub_bot</a>).</li>
|
||||
<li>When added to a group, bots do not receive all messages by default (see <a href="#privacy-mode">Privacy mode</a>).</li>
|
||||
<li>Bots never eat, sleep or complain (unless expressly programmed otherwise).</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<h3><a class="anchor" name="5-bot-perks" href="#5-bot-perks"><i class="anchor-icon"></i></a>5. Bot perks</h3>
|
||||
<h3><a class="anchor" href="#5-bot-perks" id="5-bot-perks" name="5-bot-perks"><i class="anchor-icon"></i></a>5. Bot perks</h3>
|
||||
<p>Telegram bots are unique in many ways — we offer <a href="#keyboards">two</a> <a href="#inline-keyboards-and-on-the-fly-updating">kinds</a> of keyboards, additional interfaces for <a href="#global-commands">default commands</a> and <a href="#deep-linking">deep linking</a> as well as <a href="/bots/api#formatting-options">text formatting</a>, <a href="#payment-platform">integrated payments</a> and more.</p>
|
||||
<h4><a class="anchor" name="inline-mode" href="#inline-mode"><i class="anchor-icon"></i></a>Inline mode</h4>
|
||||
<h4><a class="anchor" href="#inline-mode" id="inline-mode" name="inline-mode"><i class="anchor-icon"></i></a>Inline mode</h4>
|
||||
<!--<div class="dev_side_image">
|
||||
<a href="/file/811140221/1/fW9vnLya4Fg/e2b5c530c7b0e019c4" target="_blank"><img src="/file/811140530/1/h-eMmPp2vp4/cd4a109f75e6561305" title="Inline bots. Click for hi-res picture">
|
||||
</a></div>-->
|
||||
|
||||
<p>Users can interact with your bot via <a href="/bots/api#inline-mode"><strong>inline queries</strong></a> straight from the <strong>text input field</strong> in <strong>any</strong> chat. All they need to do is start a message with your bot's username and then type a query.</p>
|
||||
<p>Having received the query, your bot can return some results. As soon as the user taps one of them, it is sent to the user's currently opened chat. This way, people can request content from your bot in any of their chats, groups or channels.</p>
|
||||
<p>Users can interact with your bot via <a href="/bots/api#inline-mode"><strong>inline queries</strong></a> straight from the <strong>text input field</strong> in <strong>any</strong> chat. All they need to do is start a message with your bot's username and then type a query.</p>
|
||||
<p>Having received the query, your bot can return some results. As soon as the user taps one of them, it is sent to the user's currently opened chat. This way, people can request content from your bot in any of their chats, groups or channels.</p>
|
||||
<p>Check out this <a href="https://telegram.org/blog/inline-bots">blog</a> to see a sample inline bot in action. You can also try the <a href="https://t.me/sticker">@sticker</a> and <a href="https://t.me/music">@music</a> bots to see for yourself.</p>
|
||||
<div><center>
|
||||
<a href="/file/811140558/1/POjp00-nHqE/50d0312845a05e6da9" target="_blank"><img src="/file/811140558/1/POjp00-nHqE/50d0312845a05e6da9" title="New input field" style="width: 295px; padding: 10px 0px;" /></a></center>
|
||||
|
||||
<a href="/file/811140558/1/POjp00-nHqE/50d0312845a05e6da9" target="_blank"><img src="/file/811140558/1/POjp00-nHqE/50d0312845a05e6da9" title="New input field" style="width: 295px; padding: 10px 0px;"></a></center>
|
||||
</div>
|
||||
|
||||
<p>We've also implemented an easy way for your bot to <a href="/bots/inline#switching-inline-pm-modes">switch between inline and PM modes</a>.</p>
|
||||
<p>We've also implemented an easy way for your bot to <a href="/bots/inline#switching-inline-pm-modes">switch between inline and PM modes</a>.</p>
|
||||
<blockquote>
|
||||
<p><a href="/bots/inline">Read more about the Inline Mode »</a></p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="payment-platform" href="#payment-platform"><i class="anchor-icon"></i></a>Payment platform</h4>
|
||||
<h4><a class="anchor" href="#payment-platform" id="payment-platform" name="payment-platform"><i class="anchor-icon"></i></a>Payment platform</h4>
|
||||
<!--<div class="dev_side_image">
|
||||
<a href="/file/811140227/2/ZTXUngAbELM.193805/ba6aa233d1d4206207" target="_blank"><img src="/file/811140095/1/lfTvDVqVS8M.43169/1a191248e6cf027581" title="Payments API. Click for hi-res picture">
|
||||
</a></div>-->
|
||||
|
||||
<p>You can use bots to <strong>accept payments</strong> from Telegram users around the world.</p>
|
||||
<ul>
|
||||
<li>Send invoices to <strong>any chat</strong>, including to groups and channels.</li>
|
||||
|
@ -124,26 +129,24 @@
|
|||
<li>Use <a href="/bots/inline">inline mode</a> to help users show your goods and services to their friends and communities.</li>
|
||||
<li>Allow <strong>tips</strong> from users with preset and custom amounts.</li>
|
||||
<li>Accept payments from users on mobile or <strong>desktop apps</strong>.</li>
|
||||
<li>Try <a href="https://t.me/shopbot">@ShopBot</a> to create a test invoice – or start a message with <code>@ShopBot ...</code> in any chat for an <strong>inline invoice</strong>.</li>
|
||||
<li>Try <a href="https://t.me/shopbot">@ShopBot</a> to create a test invoice – or start a message with <code>@ShopBot ...</code> in any chat for an <strong>inline invoice</strong>.</li>
|
||||
<li>Check out <a href="https://telegram.org/teststore">Demo Shop</a> for an example of a <a href="https://telegram.org/tour/channels">Telegram Channel</a> used as <strong>virtual storefront</strong>.</li>
|
||||
</ul>
|
||||
<div class="blog_video_player_wrap" style="max-width: 400px; margin: 20px auto 20px;">
|
||||
<video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001377/1/0o3vSvY22g8.123356/deb4ed6951d780f7b7" style="max-width: 400px;" title="If your pizza place can't deliver a clone army, you're buying pizza from the wrong shop." alt="Video: Ordering a pizza through a Telegram channel">
|
||||
<source src="/file/464001705/2/Hg-klQnZ_n4.4889245.mp4/d324511ffdab7b4668" type="video/mp4">
|
||||
</video>
|
||||
</source></video>
|
||||
</div>
|
||||
|
||||
<blockquote>
|
||||
<p><a href="/bots/payments">Read more about the Payments Platform »</a></p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="gaming-platform" href="#gaming-platform"><i class="anchor-icon"></i></a>Gaming platform</h4>
|
||||
<h4><a class="anchor" href="#gaming-platform" id="gaming-platform" name="gaming-platform"><i class="anchor-icon"></i></a>Gaming platform</h4>
|
||||
<p>Bots can offer their users <strong>HTML5 games</strong> to play solo or to compete against each other in groups and one-on-one chats. The platform allows your bot to keep track of <strong>high scores</strong> for every game played in every chat. Whenever there’s a new leader in the game, other playing members in the chat are notified that they need to step it up. </p>
|
||||
<div><center>
|
||||
<a href="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" target="_blank"><img src="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" title="Game in a chat" style="width: 250px; padding: 10px 5px" /></a>
|
||||
<a href="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" target="_blank"><img src="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" title="In-game scoreboard and sharing button" style="width: 250px; padding: 10px 5px" /></a>
|
||||
<a href="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" target="_blank"><img src="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" title="Game in a chat" style="width: 250px; padding: 10px 5px"></a>
|
||||
<a href="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" target="_blank"><img src="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" title="In-game scoreboard and sharing button" style="width: 250px; padding: 10px 5px"></a>
|
||||
</center>
|
||||
</div>
|
||||
|
||||
<p>Since the underlying technology is HTML5, the games can be anything from simple arcades and puzzles to multiplayer 3D-shooters and real-time strategy games. Our team has created a couple of simple demos for you to try out:</p>
|
||||
<ul>
|
||||
<li><a href="https://t.me/gamebot?game=MathBattle">Math Battle</a></li>
|
||||
|
@ -154,157 +157,141 @@
|
|||
<blockquote>
|
||||
<p><a href="https://telegram.org/blog/games">Read more about the Gaming Platform »</a></p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="keyboards" href="#keyboards"><i class="anchor-icon"></i></a>Keyboards</h4>
|
||||
<h4><a class="anchor" href="#keyboards" id="keyboards" name="keyboards"><i class="anchor-icon"></i></a>Keyboards</h4>
|
||||
<p>Traditional chat bots can of course be taught to understand human language. But sometimes you want some more formal input from the user — and this is where <strong>custom keyboards</strong> can become extremely useful.</p>
|
||||
<p>Whenever your bot sends a message, it can pass along a special keyboard with predefined reply options (see <a href="/bots/api/#replykeyboardmarkup">ReplyKeyboardMarkup</a>). Telegram apps that receive the message will display your keyboard to the user. Tapping any of the buttons will immediately send the respective command. This way you can drastically simplify user interaction with your bot.</p>
|
||||
<p>We currently support text and emoji for your buttons. Here are some custom keyboard examples:</p>
|
||||
<center>
|
||||
<div>
|
||||
<a href="/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd" target="_blank"><img src="/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd" title="Keyboard for a poll bot" style="max-height: 300px; padding: 10px 5px" /></a>
|
||||
|
||||
<a href="/file/811140880/1/jS-YSVkDCNQ/b397dfcefc6da0dc70" target="_blank"><img src="/file/811140880/1/jS-YSVkDCNQ/b397dfcefc6da0dc70" title="Keyboard for a calculator bot. Because you can." style="max-height: 300px; padding: 10px 5px" /></a>
|
||||
|
||||
<a href="/file/811140733/2/KoysqJKQ_kI/a1ee46a377796c3961" target="_blank"><img src="/file/811140733/2/KoysqJKQ_kI/a1ee46a377796c3961" title="Keyboard for a trivia bot" style="max-height: 300px; padding: 10px 5px" /></a>
|
||||
|
||||
<a href="/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd" target="_blank"><img src="/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd" title="Keyboard for a poll bot" style="max-height: 300px; padding: 10px 5px"></a>
|
||||
<pre><code><a href="/file/811140880/1/jS-YSVkDCNQ/b397dfcefc6da0dc70" target="_blank"><img src="/file/811140880/1/jS-YSVkDCNQ/b397dfcefc6da0dc70" title="Keyboard for a calculator bot. Because you can." style="max-height: 300px; padding: 10px 5px" /></a>
|
||||
|
||||
<a href="/file/811140733/2/KoysqJKQ_kI/a1ee46a377796c3961" target="_blank"><img src="/file/811140733/2/KoysqJKQ_kI/a1ee46a377796c3961" title="Keyboard for a trivia bot" style="max-height: 300px; padding: 10px 5px" /></a></code></pre>
|
||||
</div></center>
|
||||
|
||||
<blockquote>
|
||||
<p>For more technical information on custom keyboards, please consult the <a href="/bots/api">Bot API manual</a> (see <a href="/bots/api#sendmessage">sendMessage</a>).</p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="inline-keyboards-and-on-the-fly-updating" href="#inline-keyboards-and-on-the-fly-updating"><i class="anchor-icon"></i></a>Inline keyboards and on-the-fly updating</h4>
|
||||
<p>There are times when you'd prefer to do things without sending any messages to the chat. For example, when your user is changing settings or flipping through search results. In such cases you can use Inline Keyboards that are integrated directly into the messages they belong to. </p>
|
||||
<p>Unlike with custom reply keyboards, pressing buttons on inline keyboards doesn't result in messages sent to the chat. Instead, inline keyboards support buttons that work behind the scenes: <a href="/bots/2-0-intro#callback-buttons">callback buttons</a>, <a href="/bots/2-0-intro#url-buttons">URL buttons</a> and <a href="/bots/2-0-intro#switch-to-inline-buttons">switch to inline buttons</a>.</p>
|
||||
<h4><a class="anchor" href="#inline-keyboards-and-on-the-fly-updating" id="inline-keyboards-and-on-the-fly-updating" name="inline-keyboards-and-on-the-fly-updating"><i class="anchor-icon"></i></a>Inline keyboards and on-the-fly updating</h4>
|
||||
<p>There are times when you'd prefer to do things without sending any messages to the chat. For example, when your user is changing settings or flipping through search results. In such cases you can use Inline Keyboards that are integrated directly into the messages they belong to. </p>
|
||||
<p>Unlike with custom reply keyboards, pressing buttons on inline keyboards doesn't result in messages sent to the chat. Instead, inline keyboards support buttons that work behind the scenes: <a href="/bots/2-0-intro#callback-buttons">callback buttons</a>, <a href="/bots/2-0-intro#url-buttons">URL buttons</a> and <a href="/bots/2-0-intro#switch-to-inline-buttons">switch to inline buttons</a>.</p>
|
||||
<div><center>
|
||||
<a href="/file/811140217/1/NkRCCLeQZVc/17a804837802700ea4" target="_blank"><img src="/file/811140217/1/NkRCCLeQZVc/17a804837802700ea4" title="Callback buttons in @music" style="width: 240px; padding: 10px 5px;" /></a>
|
||||
<a href="/file/811140659/1/RRJyulbtLBY/ea6163411c7eb4f4dc" target="_blank"><img src="/file/811140659/1/RRJyulbtLBY/ea6163411c7eb4f4dc" title="More callback buttons in @music" style="width: 240px; padding: 10px 5px;" /></a>
|
||||
<a href="/file/811140999/1/2JSoUVlWKa0/4fad2e2743dc8eda04" target="_blank"><img src="/file/811140999/1/2JSoUVlWKa0/4fad2e2743dc8eda04" title="A URL button" style="width:240px; padding:10px 5px"/></a>
|
||||
|
||||
</center>
|
||||
|
||||
<a href="/file/811140217/1/NkRCCLeQZVc/17a804837802700ea4" target="_blank"><img src="/file/811140217/1/NkRCCLeQZVc/17a804837802700ea4" title="Callback buttons in @music" style="width: 240px; padding: 10px 5px;"></a>
|
||||
<a href="/file/811140659/1/RRJyulbtLBY/ea6163411c7eb4f4dc" target="_blank"><img src="/file/811140659/1/RRJyulbtLBY/ea6163411c7eb4f4dc" title="More callback buttons in @music" style="width: 240px; padding: 10px 5px;"></a>
|
||||
<a href="/file/811140999/1/2JSoUVlWKa0/4fad2e2743dc8eda04" target="_blank"><img src="/file/811140999/1/2JSoUVlWKa0/4fad2e2743dc8eda04" title="A URL button" style="width:240px; padding:10px 5px"></a>
|
||||
</center>
|
||||
</div>
|
||||
|
||||
<p>When callback buttons are used, your bot can update its existing messages (or just their keyboards) so that the chat remains tidy. Check out these sample bots to see inline keyboards in action: <a href="https://t.me/music">@music</a>, <a href="https://t.me/vote">@vote</a>, <a href="https://t.me/like">@like</a>.</p>
|
||||
<blockquote>
|
||||
<p><a href="/bots/2-0-intro#new-inline-keyboards">Read more about inline keyboards and on-the-fly editing »</a></p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="commands" href="#commands"><i class="anchor-icon"></i></a>Commands</h4>
|
||||
<h4><a class="anchor" href="#commands" id="commands" name="commands"><i class="anchor-icon"></i></a>Commands</h4>
|
||||
<p>Commands present a more flexible way to communicate with your bot. The following syntax may be used:</p>
|
||||
<pre><code>/command</code></pre>
|
||||
<p>A command must always start with the '/' symbol and may not be longer than 32 characters. Commands can use latin letters, numbers and underscores. Here are a few examples:</p>
|
||||
<p>A command must always start with the '/' symbol and may not be longer than 32 characters. Commands can use latin letters, numbers and underscores. Here are a few examples:</p>
|
||||
<pre><code>/get_messages_stats
|
||||
/set_timer 10min Alarm!
|
||||
/get_timezone London, UK</code></pre>
|
||||
<p>Messages that start with a slash are always passed to the bot (along with replies to its messages and messages that @mention the bot by username). Telegram apps will:</p>
|
||||
<ul>
|
||||
<li>Suggest a list of supported commands with descriptions when the user enters a '/' (for this to work, you need to have provided a list of commands to the <a href="#6-botfather">BotFather</a>). Tapping on a command in the list immediately sends the command.</li>
|
||||
<li>Show an additional <strong>(/)</strong> button in the input field in all chats with bots. Tapping it types a '/' and shows the list of commands.</li>
|
||||
<li>Suggest a list of supported commands with descriptions when the user enters a '/' (for this to work, you need to have provided a list of commands to the <a href="#6-botfather">BotFather</a>). Tapping on a command in the list immediately sends the command.</li>
|
||||
<li>Show an additional <strong>(/)</strong> button in the input field in all chats with bots. Tapping it types a '/' and shows the list of commands.</li>
|
||||
<li>Highlight <strong>/commands</strong> in messages. When the user taps a highlighted command, the command is sent at once.</li>
|
||||
</ul>
|
||||
<center><div>
|
||||
<a href="/file/811140845/2/rNUxpcGDeQU/05eaaf20b0dbaf9cb3" target="_blank"><img src="/file/811140845/2/rNUxpcGDeQU/05eaaf20b0dbaf9cb3" title="Suggested commands" style="width: 230px; padding: 10px 5px" /></a>
|
||||
|
||||
<a href="/file/811140315/2/gf7_D2HbeyM/e3ca2de4de7918f826" target="_blank"><img src="/file/811140315/2/gf7_D2HbeyM/e3ca2de4de7918f826" title="Notice the new button in the input field, right next to the sticker button" style="width: 230px; padding: 10px 5px" /></a>
|
||||
<a href="/file/811140845/2/rNUxpcGDeQU/05eaaf20b0dbaf9cb3" target="_blank"><img src="/file/811140845/2/rNUxpcGDeQU/05eaaf20b0dbaf9cb3" title="Suggested commands" style="width: 230px; padding: 10px 5px"></a>
|
||||
<pre><code><a href="/file/811140315/2/gf7_D2HbeyM/e3ca2de4de7918f826" target="_blank"><img src="/file/811140315/2/gf7_D2HbeyM/e3ca2de4de7918f826" title="Notice the new button in the input field, right next to the sticker button" style="width: 230px; padding: 10px 5px" /></a>
|
||||
|
||||
|
||||
<a href="/file/811140029/1/s5zv4fbWdhw/a04aefa0ee0557f16a" target="_blank"><img src="/file/811140029/1/s5zv4fbWdhw/a04aefa0ee0557f16a" title="Suggested commands for multiple bots" style="width: 230px; padding: 10px 5px" /></a>
|
||||
|
||||
<a href="/file/811140029/1/s5zv4fbWdhw/a04aefa0ee0557f16a" target="_blank"><img src="/file/811140029/1/s5zv4fbWdhw/a04aefa0ee0557f16a" title="Suggested commands for multiple bots" style="width: 230px; padding: 10px 5px" /></a></code></pre>
|
||||
</div></center>
|
||||
|
||||
|
||||
<p>If multiple bots are in a group, it is possible to add bot usernames to commands in order to avoid confusion:</p>
|
||||
<pre><code>/start@TriviaBot
|
||||
/start@ApocalypseBot</code></pre>
|
||||
<p>This is done automatically when commands are selected via the list of suggestions. Please remember that your bot needs to be able to process commands that are followed by its username.</p>
|
||||
<h5><a class="anchor" name="global-commands" href="#global-commands"><i class="anchor-icon"></i></a>Global commands</h5>
|
||||
<h5><a class="anchor" href="#global-commands" id="global-commands" name="global-commands"><i class="anchor-icon"></i></a>Global commands</h5>
|
||||
<p>In order to make it easier for users to navigate the bot multiverse, we ask all developers to support a few basic commands. Telegram apps will have <strong>interface shortcuts</strong> for these commands.</p>
|
||||
<ul>
|
||||
<li><strong>/start</strong> - begins interaction with the user, e.g., by sending a greeting message. This command can also be used to pass additional parameters to the bot (see <a href="#deep-linking">Deep linking</a>)</li>
|
||||
<li><strong>/help</strong> - returns a help message. It can be a short text about what your bot can do and a list of commands.</li>
|
||||
<li><strong>/settings</strong> - (if applicable) returns the bot's settings for this user and suggests commands to edit these settings.</li>
|
||||
<li><strong>/settings</strong> - (if applicable) returns the bot's settings for this user and suggests commands to edit these settings.</li>
|
||||
</ul>
|
||||
<p>Users will see a <strong>Start</strong> button when they first open a conversation with your bot. <strong>Help</strong> and <strong>Settings</strong> links will be available in the menu on the bot's profile page.</p>
|
||||
<p>Users will see a <strong>Start</strong> button when they first open a conversation with your bot. <strong>Help</strong> and <strong>Settings</strong> links will be available in the menu on the bot's profile page.</p>
|
||||
<center><div>
|
||||
<a href="/file/811140979/2/yD8AphHbahk/7662d14f4e0442ae3a" target="_blank"><img src="/file/811140979/2/yD8AphHbahk/7662d14f4e0442ae3a" title="An empty conversation with a bot" style="width: 250px; padding: 10px 5px" /></a>
|
||||
|
||||
<a href="/file/811140479/2/1c2zUWhR7sA/98889b2a45f8e42a35" target="_blank"><img src="/file/811140479/2/1c2zUWhR7sA/98889b2a45f8e42a35" title="A bot's profile page, featuring 'Help' and 'Settings' buttons" style="width: 250px; padding: 10px 5px" /></a>
|
||||
|
||||
<a href="/file/811140979/2/yD8AphHbahk/7662d14f4e0442ae3a" target="_blank"><img src="/file/811140979/2/yD8AphHbahk/7662d14f4e0442ae3a" title="An empty conversation with a bot" style="width: 250px; padding: 10px 5px"></a>
|
||||
<pre><code><a href="/file/811140479/2/1c2zUWhR7sA/98889b2a45f8e42a35" target="_blank"><img src="/file/811140479/2/1c2zUWhR7sA/98889b2a45f8e42a35" title="A bot's profile page, featuring 'Help' and 'Settings' buttons" style="width: 250px; padding: 10px 5px" /></a></code></pre>
|
||||
</div></center>
|
||||
|
||||
<h4><a class="anchor" name="formatting-bold-italic-fixed-width-text-and-inline-links" href="#formatting-bold-italic-fixed-width-text-and-inline-links"><i class="anchor-icon"></i></a>Formatting: bold, italic, fixed-width text and inline links</h4>
|
||||
<p>You can use bold, italic or fixed-width text, as well as inline links in your bots' messages. Telegram clients will render them accordingly. </p>
|
||||
<h4><a class="anchor" href="#formatting-bold-italic-fixed-width-text-and-inline-links" id="formatting-bold-italic-fixed-width-text-and-inline-links" name="formatting-bold-italic-fixed-width-text-and-inline-links"><i class="anchor-icon"></i></a>Formatting: bold, italic, fixed-width text and inline links</h4>
|
||||
<p>You can use bold, italic or fixed-width text, as well as inline links in your bots' messages. Telegram clients will render them accordingly. </p>
|
||||
<blockquote>
|
||||
<p><a href="bots/api#formatting-options">Read more in the Bot API manual »</a></p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="privacy-mode" href="#privacy-mode"><i class="anchor-icon"></i></a>Privacy mode</h4>
|
||||
<p>Bots are frequently added to groups in order to augment communication between human users, e.g. by providing news, notifications from external services or additional search functionality. This is especially true for work-related groups. Now, when you share a group with a bot, you tend to ask yourself “How can I be sure that the little rascal isn't selling my chat history to my competitors?” The answer is — <strong>privacy mode</strong>.</p>
|
||||
<h4><a class="anchor" href="#privacy-mode" id="privacy-mode" name="privacy-mode"><i class="anchor-icon"></i></a>Privacy mode</h4>
|
||||
<p>Bots are frequently added to groups in order to augment communication between human users, e.g. by providing news, notifications from external services or additional search functionality. This is especially true for work-related groups. Now, when you share a group with a bot, you tend to ask yourself "How can I be sure that the little rascal isn't selling my chat history to my competitors?" The answer is — <strong>privacy mode</strong>.</p>
|
||||
<p>A bot running in privacy mode will not receive all messages that people send to the group. Instead, it will only receive:</p>
|
||||
<ul>
|
||||
<li>Messages that start with a slash '/' (see <a href="#commands">Commands</a> above)</li>
|
||||
<li>Replies to the bot's own messages</li>
|
||||
<li>Messages that start with a slash '/' (see <a href="#commands">Commands</a> above)</li>
|
||||
<li>Replies to the bot's own messages</li>
|
||||
<li>Service messages (people added or removed from the group, etc.)</li>
|
||||
<li>Messages from channels where it's a member</li>
|
||||
<li>Messages from channels where it's a member</li>
|
||||
</ul>
|
||||
<p>On one hand, this helps some of us sleep better at night (in our tinfoil nightcaps), on the other — it allows the bot developer to save a lot of resources, since they won't need to process tens of thousands irrelevant messages each day.</p>
|
||||
<p>Privacy mode is enabled by default for all bots, except bots that were added to the group as <strong>admins</strong> (bot admins always receive all messages). It can be disabled, so that the bot receives all messages like an ordinary user (the bot will need to be <strong>re-added</strong> to the group for this change to take effect). We only recommend doing this in cases where it is absolutely necessary for your bot to work — users can always see a bot's current privacy setting in the group members list. In most cases, using the <a href="/bots/api#forcereply">force reply</a> option for the bot's messages should be more than enough. </p>
|
||||
<p>On one hand, this helps some of us sleep better at night (in our tinfoil nightcaps), on the other — it allows the bot developer to save a lot of resources, since they won't need to process tens of thousands irrelevant messages each day.</p>
|
||||
<p>Privacy mode is enabled by default for all bots, except bots that were added to the group as <strong>admins</strong> (bot admins always receive all messages). It can be disabled, so that the bot receives all messages like an ordinary user (the bot will need to be <strong>re-added</strong> to the group for this change to take effect). We only recommend doing this in cases where it is absolutely necessary for your bot to work — users can always see a bot's current privacy setting in the group members list. In most cases, using the <a href="/bots/api#forcereply">force reply</a> option for the bot's messages should be more than enough. </p>
|
||||
<p><a href="/bots/faq#what-messages-will-my-bot-get">So what messages exactly will my bot get? »</a></p>
|
||||
<h4><a class="anchor" name="deep-linking" href="#deep-linking"><i class="anchor-icon"></i></a>Deep linking</h4>
|
||||
<p>Telegram bots have a <a href="https://en.wikipedia.org/wiki/Deep_linking">deep linking</a> mechanism, that allows for passing additional parameters to the bot on startup. It could be a command that launches the bot — or an auth token to connect the user's Telegram account to their account on some external service.</p>
|
||||
<h4><a class="anchor" href="#deep-linking" id="deep-linking" name="deep-linking"><i class="anchor-icon"></i></a>Deep linking</h4>
|
||||
<p>Telegram bots have a <a href="https://en.wikipedia.org/wiki/Deep_linking">deep linking</a> mechanism, that allows for passing additional parameters to the bot on startup. It could be a command that launches the bot — or an auth token to connect the user's Telegram account to their account on some external service.</p>
|
||||
<p>Each bot has a link that opens a conversation with it in Telegram — <code>https://t.me/<bot username></code>. You can add the parameters <strong>start</strong> or <strong>startgroup</strong> to this link, with values up to 64 characters long. For example:</p>
|
||||
<pre><code>https://t.me/triviabot?startgroup=test</code></pre>
|
||||
<p><code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>_</code> and <code>-</code> are allowed. We recommend using <a href="https://en.wikipedia.org/wiki/Base64#The_URL_applications">base64url</a> to encode parameters with binary and other types of content.</p>
|
||||
<p>Following a link with the <strong>start</strong> parameter will open a one-on-one conversation with the bot, showing a START button in the place of the input field. If the <strong>startgroup</strong> parameter is used, the user is prompted to select a group to add the bot to. As soon as a user confirms the action (presses the START button in their app or selects a group to add the bot to), your bot will receive a message from that user in this format:</p>
|
||||
<pre><code>/start PAYLOAD</code></pre>
|
||||
<p><code>PAYLOAD</code> stands for the value of the <strong>start</strong> or <strong>startgroup</strong> parameter that was passed in the link.</p>
|
||||
<h5><a class="anchor" name="deep-linking-example" href="#deep-linking-example"><i class="anchor-icon"></i></a>Deep linking Example</h5>
|
||||
<p>Suppose the website example.com would like to send notifications to its users via a Telegram bot. Here's what they could do to enable notifications for a user with the ID <code>123</code>.</p>
|
||||
<h5><a class="anchor" href="#deep-linking-example" id="deep-linking-example" name="deep-linking-example"><i class="anchor-icon"></i></a>Deep linking Example</h5>
|
||||
<p>Suppose the website example.com would like to send notifications to its users via a Telegram bot. Here's what they could do to enable notifications for a user with the ID <code>123</code>.</p>
|
||||
<ol>
|
||||
<li><a href="#6-botfather">Create a bot</a> with a suitable username, e.g. @ExampleComBot</li>
|
||||
<li>Set up a <a href="/bots/api#setwebhook">webhook</a> for incoming messages</li>
|
||||
<li>Generate a random string of a sufficient length, e.g. <code>$memcache_key = "vCH1vGWJxfSeofSAs0K5PA"</code></li>
|
||||
<li>Generate a random string of a sufficient length, e.g. <code>$memcache_key = "vCH1vGWJxfSeofSAs0K5PA"</code></li>
|
||||
<li>Put the value <code>123</code> with the key <code>$memcache_key</code> into Memcache for 3600 seconds (one hour) </li>
|
||||
<li>Show our user the button <code>https://t.me/ExampleComBot?start=vCH1vGWJxfSeofSAs0K5PA</code></li>
|
||||
<li>Configure the webhook processor to query Memcached with the parameter that is passed in incoming messages beginning with <code>/start</code>. If the key exists, record the chat_id passed to the webhook as <strong>telegram_chat_id</strong> for the user <code>123</code>. Remove the key from Memcache.</li>
|
||||
<li>Now when we want to send a notification to the user <code>123</code>, check if they have the field <strong>telegram_chat_id</strong>. If yes, use the <a href="/bots/api#sendmessage">sendMessage</a> method in the <a href="/bots/api">Bot API</a> to send them a message in Telegram.</li>
|
||||
</ol>
|
||||
<h4><a class="anchor" name="location-and-number" href="#location-and-number"><i class="anchor-icon"></i></a>Location and Number</h4>
|
||||
<p>Some bots need extra data from the user to work properly. For example, knowing the user's location helps provide more relevant geo-specific results. The user's phone number can be very useful for integrations with other services, like banks, etc.</p>
|
||||
<h4><a class="anchor" href="#location-and-number" id="location-and-number" name="location-and-number"><i class="anchor-icon"></i></a>Location and Number</h4>
|
||||
<p>Some bots need extra data from the user to work properly. For example, knowing the user's location helps provide more relevant geo-specific results. The user's phone number can be very useful for integrations with other services, like banks, etc.</p>
|
||||
<p>Bots can ask a user for their <strong>location</strong> and <strong>phone number</strong> using special buttons. Note that both phone number and location request buttons will only work in private chats.</p>
|
||||
<div><center>
|
||||
<a href="/file/811140587/2/jaowDLZg2l0/5ba3f7d7fd5c6c28dc" target="_blank"><img src="/file/811140587/2/jaowDLZg2l0/5ba3f7d7fd5c6c28dc" title="Phone number and location sharing buttons" style="width: 295px; padding: 10px 20px;" /></a></center>
|
||||
|
||||
<a href="/file/811140587/2/jaowDLZg2l0/5ba3f7d7fd5c6c28dc" target="_blank"><img src="/file/811140587/2/jaowDLZg2l0/5ba3f7d7fd5c6c28dc" title="Phone number and location sharing buttons" style="width: 295px; padding: 10px 20px;"></a></center>
|
||||
</div>
|
||||
|
||||
<p>When these buttons are pressed, Telegram clients will display a confirmation alert that tells the user what's about to happen.</p>
|
||||
<p>When these buttons are pressed, Telegram clients will display a confirmation alert that tells the user what's about to happen.</p>
|
||||
<blockquote>
|
||||
<p><a href="/bots/api#keyboardbutton">Manual: Number and location buttons »</a></p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h3><a class="anchor" name="6-botfather" href="#6-botfather"><i class="anchor-icon"></i></a>6. BotFather</h3>
|
||||
<h3><a class="anchor" href="#6-botfather" id="6-botfather" name="6-botfather"><i class="anchor-icon"></i></a>6. BotFather</h3>
|
||||
<blockquote>
|
||||
<p>Jump to top to learn everything about <a href="#">Telegram bots »</a></p>
|
||||
</blockquote>
|
||||
<p><a href="https://t.me/botfather">BotFather</a> is the one bot to rule them all. It will help you create new bots and change settings for existing ones.</p>
|
||||
<h4><a class="anchor" name="creating-a-new-bot" href="#creating-a-new-bot"><i class="anchor-icon"></i></a>Creating a new bot</h4>
|
||||
<h4><a class="anchor" href="#creating-a-new-bot" id="creating-a-new-bot" name="creating-a-new-bot"><i class="anchor-icon"></i></a>Creating a new bot</h4>
|
||||
<p>Use the <strong>/newbot</strong> command to create a new bot. The BotFather will ask you for a name and username, then generate an authorization token for your new bot. </p>
|
||||
<p>The <strong>name</strong> of your bot is displayed in contact details and elsewhere.</p>
|
||||
<p>The <strong>Username</strong> is a short name, to be used in mentions and t.me links. Usernames are 5-32 characters long and are case insensitive, but may only include Latin characters, numbers, and underscores. Your bot's username <strong>must</strong> end in 'bot', e.g. 'tetris_bot' or 'TetrisBot'.</p>
|
||||
<p>The <strong>Username</strong> is a short name, to be used in mentions and t.me links. Usernames are 5-32 characters long and are case insensitive, but may only include Latin characters, numbers, and underscores. Your bot's username <strong>must</strong> end in 'bot', e.g. 'tetris_bot' or 'TetrisBot'.</p>
|
||||
<p>The <strong>token</strong> is a string along the lines of <code>110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw</code> that is required to authorize the bot and send requests to the <a href="/bots/api">Bot API</a>. Keep your token secure and store it safely, it can be used by anyone to control your bot.</p>
|
||||
<h4><a class="anchor" name="generating-an-authorization-token" href="#generating-an-authorization-token"><i class="anchor-icon"></i></a>Generating an authorization token</h4>
|
||||
<h4><a class="anchor" href="#generating-an-authorization-token" id="generating-an-authorization-token" name="generating-an-authorization-token"><i class="anchor-icon"></i></a>Generating an authorization token</h4>
|
||||
<p>If your existing token is compromised or you lost it for some reason, use the <strong>/token</strong> command to generate a new one.</p>
|
||||
<h4><a class="anchor" name="botfather-commands" href="#botfather-commands"><i class="anchor-icon"></i></a>Botfather commands</h4>
|
||||
<h4><a class="anchor" href="#botfather-commands" id="botfather-commands" name="botfather-commands"><i class="anchor-icon"></i></a>Botfather commands</h4>
|
||||
<p>The remaining commands are pretty self-explanatory:</p>
|
||||
<ul>
|
||||
<li><strong>/mybots</strong> — returns a list of your bots with handy controls to edit their settings</li>
|
||||
<li><strong>/mybots</strong> — returns a list of your bots with handy controls to edit their settings</li>
|
||||
<li><strong>/mygames</strong> — does the same for your games</li>
|
||||
</ul>
|
||||
<p><strong>Edit bots</strong></p>
|
||||
<ul>
|
||||
<li><strong>/setname</strong> – change your bot's name.</li>
|
||||
<li><strong>/setdescription</strong> — change the bot's <strong>description</strong>, a short text of up to 512 characters, describing your bot. Users will see this text at the beginning of the conversation with the bot, titled 'What can this bot do?'.</li>
|
||||
<li><strong>/setabouttext</strong> — change the bot's <strong>about info</strong>, an even shorter text of up to 120 characters. Users will see this text on the bot's profile page. When they share your bot with someone, this text is sent together with the link.</li>
|
||||
<li><strong>/setuserpic</strong> — change the bot's profile pictures. It's always nice to put a face to a name.</li>
|
||||
<li><strong>/setcommands</strong> — change the list of commands supported by your bot. Users will see these commands as suggestions when they type <code>/</code> in the chat with your bot. Each command has a name (must start with a slash ‘/’, alphanumeric plus underscores, no more than 32 characters, case-insensitive), parameters, and a text description. Users will see the list of commands whenever they type '/' in a conversation with your bot.</li>
|
||||
<li><strong>/setname</strong> – change your bot's name.</li>
|
||||
<li><strong>/setdescription</strong> — change the bot's <strong>description</strong>, a short text of up to 512 characters, describing your bot. Users will see this text at the beginning of the conversation with the bot, titled 'What can this bot do?'.</li>
|
||||
<li><strong>/setabouttext</strong> — change the bot's <strong>about info</strong>, an even shorter text of up to 120 characters. Users will see this text on the bot's profile page. When they share your bot with someone, this text is sent together with the link.</li>
|
||||
<li><strong>/setuserpic</strong> — change the bot's profile pictures. It's always nice to put a face to a name.</li>
|
||||
<li><strong>/setcommands</strong> — change the list of commands supported by your bot. Users will see these commands as suggestions when they type <code>/</code> in the chat with your bot. Each command has a name (must start with a slash ‘/’, alphanumeric plus underscores, no more than 32 characters, case-insensitive), parameters, and a text description. Users will see the list of commands whenever they type '/' in a conversation with your bot.</li>
|
||||
<li><strong>/deletebot</strong> — delete your bot and free its username.</li>
|
||||
</ul>
|
||||
<p><strong>Edit settings</strong></p>
|
||||
|
@ -318,30 +305,30 @@
|
|||
<ul>
|
||||
<li><strong>/newgame</strong> — create a new <a href="/bots/games">game</a>.</li>
|
||||
<li><strong>/listgames</strong> — get a list of your games.</li>
|
||||
<li><strong>/editgame</strong> — edit a game.</li>
|
||||
<li><strong>/editgame</strong> — edit a game.</li>
|
||||
<li><strong>/deletegame</strong> — delete an existing game.</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>Please note, that it may take <strong>a few minutes</strong> for changes to take effect.</p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="status-alerts" href="#status-alerts"><i class="anchor-icon"></i></a>Status alerts</h4>
|
||||
<h4><a class="anchor" href="#status-alerts" id="status-alerts" name="status-alerts"><i class="anchor-icon"></i></a>Status alerts</h4>
|
||||
<p>Millions choose Telegram for its speed. To stay competitive in this environment, your bot also needs to be responsive. In order to help developers keep their bots in shape, Botfather will send status alerts if it sees something is wrong.</p>
|
||||
<p>We will be checking the number of replies and the request/response conversion rate for popular bots (~300 requests per minute: but don't write this down as the value may change in the future). If we get abnormally low readings, you will receive a notification from Botfather.</p>
|
||||
<h5><a class="anchor" name="responding-to-alerts" href="#responding-to-alerts"><i class="anchor-icon"></i></a>Responding to alerts</h5>
|
||||
<p>By default, you will only get one alert per bot per hour. Each alert has the following buttons:</p>
|
||||
<p>We will be checking the number of replies and the request/response conversion rate for popular bots (~300 requests per minute: but don't write this down as the value may change in the future). If we get abnormally low readings, you will receive a notification from Botfather.</p>
|
||||
<h5><a class="anchor" href="#responding-to-alerts" id="responding-to-alerts" name="responding-to-alerts"><i class="anchor-icon"></i></a>Responding to alerts</h5>
|
||||
<p>By default, you will only get one alert per bot per hour. Each alert has the following buttons:</p>
|
||||
<ul>
|
||||
<li><strong>Fixed.</strong> Use this if you found an issue with your bot and fixed it. If you press the fix button, we will resume sending alerts in the regular way so that you can see if your fix worked within 5-10 minutes instead of having to wait for an hour.</li>
|
||||
<li><strong>Support.</strong> Use this to open a chat with <a href="https://t.me/botsupport">@BotSupport</a> if you don't see any issues with your bot or if you think the problem is on our side.</li>
|
||||
<li><strong>Mute for 8h/1w.</strong> Use this if you can't fix your bot at the moment. This will disable all alerts for the bot in question for the specified period of time. We do not recommend using this option since your users may migrate to a more stable bot. You can unmute alerts in your bot's settings via Botfather.</li>
|
||||
<li><strong>Support.</strong> Use this to open a chat with <a href="https://t.me/botsupport">@BotSupport</a> if you don't see any issues with your bot or if you think the problem is on our side.</li>
|
||||
<li><strong>Mute for 8h/1w.</strong> Use this if you can't fix your bot at the moment. This will disable all alerts for the bot in question for the specified period of time. We do not recommend using this option since your users may migrate to a more stable bot. You can unmute alerts in your bot's settings via Botfather.</li>
|
||||
</ul>
|
||||
<h5><a class="anchor" name="monitored-issues" href="#monitored-issues"><i class="anchor-icon"></i></a>Monitored issues</h5>
|
||||
<h5><a class="anchor" href="#monitored-issues" id="monitored-issues" name="monitored-issues"><i class="anchor-icon"></i></a>Monitored issues</h5>
|
||||
<p>We will currently notify you about the following issues:</p>
|
||||
<p><strong>1.</strong></p>
|
||||
<pre><code>Too few **private messages** are sent compared to previous weeks: **{value}**</code></pre>
|
||||
<p>Your bot is sending much fewer messages than it did in the previous weeks. This is useful for newsletter-style bots that send out messages without prompts from the users. The larger the value, the more significant the difference. </p>
|
||||
<p><strong>2.</strong></p>
|
||||
<pre><code>Too few replies to incoming **private messages**. Conversion rate: **{value}**</code></pre>
|
||||
<p>Your bot is not replying to all messages that are being sent to it (the request/response conversion rate for your bot was too low for at least two of the last three 5-minute periods). To provide a good user experience, please respond to all messages that are sent to your bot. Respond to <em>message</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <em>send…</em> methods (e.g. <a href="https://core.telegram.org/bots/api#sendmessage">sendMessage</a>).</p>
|
||||
<p>Your bot is not replying to all messages that are being sent to it (the request/response conversion rate for your bot was too low for at least two of the last three 5-minute periods). To provide a good user experience, please respond to all messages that are sent to your bot. Respond to <em>message</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <em>send...</em> methods (e.g. <a href="https://core.telegram.org/bots/api#sendmessage">sendMessage</a>).</p>
|
||||
<p><strong>3.</strong></p>
|
||||
<pre><code>Too few answers to **inline queries**. Conversion rate: **{value}**</code></pre>
|
||||
<p>Your bot is not replying to all inline queries that are being sent to it, calculated in the same way as above. Respond to <em>inline_query</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <a href="/bots/api#answerinlinequery">answerInlineQuery</a>.</p>
|
||||
|
@ -353,9 +340,8 @@ Too few answers to **callback game queries**. Conversion rate: **{value}**</code
|
|||
<p>Please note that the status alerts feature is still being tested and will be improved in the future.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<p>That's it for the introduction. You are now definitely ready to proceed to the <a href="/bots/api"><strong>BOT API MANUAL</strong></a>.</p>
|
||||
<p>If you've got any questions, please check out our <a href="/bots/faq"><strong>Bot FAQ »</strong></a></p>
|
||||
</div>
|
||||
<p>That's it for the introduction. You are now definitely ready to proceed to the <a href="/bots/api"><strong>BOT API MANUAL</strong></a>.</p>
|
||||
<p>If you've got any questions, please check out our <a href="/bots/faq"><strong>Bot FAQ »</strong></a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -42,7 +42,8 @@ You may also find the Bot API…">
|
|||
<h1 id="dev_page_title">Bots FAQ</h1>
|
||||
|
||||
<div id="dev_page_content"><blockquote>
|
||||
<p>If you are new to Telegram bots, we recommend checking out our <a href="/bots"><strong>Introduction to Bots</strong></a> first.<br>You may also find the <strong><a href="/bots/api">Bot API Manual</a></strong> useful.</p>
|
||||
<p>If you are new to Telegram bots, we recommend checking out our <a href="/bots"><strong>Introduction to Bots</strong></a> first.
|
||||
You may also find the <strong><a href="/bots/api">Bot API Manual</a></strong> useful.</p>
|
||||
</blockquote>
|
||||
<p><div class="dev_page_nav_wrap"></p>
|
||||
<p><a href="#general-questions"><strong>General</strong></a></p>
|
||||
|
@ -51,7 +52,7 @@ You may also find the Bot API…">
|
|||
<li><a href="#i-39m-a-developer-where-can-i-find-some-examples">Where can I get some code examples?</a></li>
|
||||
<li><a href="#will-you-add-x-to-the-bot-api">I have a feature request!</a></li>
|
||||
<li><a href="#what-messages-will-my-bot-get">What messages will my bot get?</a></li>
|
||||
<li><a href="#why-doesn-39t-my-bot-see-messages-from-other-bots">Why doesn't my bot see messages from other bots?</a></li>
|
||||
<li><a href="#why-doesn-39t-my-bot-see-messages-from-other-bots">Why doesn't my bot see messages from other bots?</a></li>
|
||||
</ul>
|
||||
<p><a href="#getting-updates"><strong>Getting Updates</strong></a></p>
|
||||
<ul>
|
||||
|
@ -70,27 +71,29 @@ You may also find the Bot API…">
|
|||
<p><a href="#broadcasting-to-users"><strong>Broadcasting to Users</strong></a></p>
|
||||
<ul>
|
||||
<li><a href="#my-bot-is-hitting-limits-how-do-i-avoid-this">How do I avoid hitting limits?</a></li>
|
||||
<li><a href="#how-can-i-message-all-of-my-bot-39s-subscribers-at-once">How do I message all my subscribers?</a><br></div></li>
|
||||
<li><a href="#how-can-i-message-all-of-my-bot-39s-subscribers-at-once">How do I message all my subscribers?</a>
|
||||
</div></li>
|
||||
</ul>
|
||||
<hr>
|
||||
<h3><a class="anchor" name="general-questions" href="#general-questions"><i class="anchor-icon"></i></a>General Questions</h3>
|
||||
<h4><a class="anchor" name="how-do-i-create-a-bot" href="#how-do-i-create-a-bot"><i class="anchor-icon"></i></a>How do I create a bot?</h4>
|
||||
<h3><a class="anchor" href="#general-questions" id="general-questions" name="general-questions"><i class="anchor-icon"></i></a>General Questions</h3>
|
||||
<h4><a class="anchor" href="#how-do-i-create-a-bot" id="how-do-i-create-a-bot" name="how-do-i-create-a-bot"><i class="anchor-icon"></i></a>How do I create a bot?</h4>
|
||||
<p>Creating Telegram bots is super-easy, but you will need at least some skills at computer programming. In order for a bot to work, set up a bot account with <a href="https://telegram.me/botfather">@BotFather</a>, then connect it to your backend server via our <a href="/bots/api">API</a>.</p>
|
||||
<p>Unfortunately, there are no out-of-the-box ways to create a working bot if you are not a developer. But we're sure you'll soon find plenty of bots created by other people to play with.</p>
|
||||
<h4><a class="anchor" name="i-39m-a-developer-where-can-i-find-some-examples" href="#i-39m-a-developer-where-can-i-find-some-examples"><i class="anchor-icon"></i></a>I'm a developer. Where can I find some examples?</h4>
|
||||
<p>Unfortunately, there are no out-of-the-box ways to create a working bot if you are not a developer. But we're sure you'll soon find plenty of bots created by other people to play with.</p>
|
||||
<h4><a class="anchor" href="#im-a-developer-where-can-i-find-some-examples" id="im-a-developer-where-can-i-find-some-examples" name="im-a-developer-where-can-i-find-some-examples"><i class="anchor-icon"></i></a>I'm a developer. Where can I find some examples?</h4>
|
||||
<p>Here are two sample bots, both written in PHP:</p>
|
||||
<ul>
|
||||
<li><a href="/bots/samples/hellobot">Hello Bot</a> demonstrates the basics of the Telegram bot API.</li>
|
||||
<li><a href="https://github.com/kolar/telegram-poll-bot">Simple Poll bot</a> is a more complete example, it supports both long-polling and Webhooks for updates.</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>Many members of our community are building bots and publishing sources.<br>We're collecting them on <a href="/bots/samples"><strong>this page »</strong></a></p>
|
||||
<p>Many members of our community are building bots and publishing sources.
|
||||
We're collecting them on <a href="/bots/samples"><strong>this page »</strong></a></p>
|
||||
</blockquote>
|
||||
<p>Ping us on <a href="https://telegram.me/botsupport">@BotSupport</a> if you've built a bot and would like to share it with others.</p>
|
||||
<h4><a class="anchor" name="will-you-add-x-to-the-bot-api" href="#will-you-add-x-to-the-bot-api"><i class="anchor-icon"></i></a>Will you add X to the Bot API?</h4>
|
||||
<p>The bot API is still pretty young. There are many potential features to consider and implement. We'll be studying what people do with their bots for a while to see which directions will be most important for the platform.</p>
|
||||
<p>Ping us on <a href="https://telegram.me/botsupport">@BotSupport</a> if you've built a bot and would like to share it with others.</p>
|
||||
<h4><a class="anchor" href="#will-you-add-x-to-the-bot-api" id="will-you-add-x-to-the-bot-api" name="will-you-add-x-to-the-bot-api"><i class="anchor-icon"></i></a>Will you add X to the Bot API?</h4>
|
||||
<p>The bot API is still pretty young. There are many potential features to consider and implement. We'll be studying what people do with their bots for a while to see which directions will be most important for the platform.</p>
|
||||
<p>All bot developers are welcome to share ideas for our Bot API with our <a href="https://telegram.me/botsupport"><strong>@BotSupport</strong></a> account.</p>
|
||||
<h4><a class="anchor" name="what-messages-will-my-bot-get" href="#what-messages-will-my-bot-get"><i class="anchor-icon"></i></a>What messages will my bot get?</h4>
|
||||
<h4><a class="anchor" href="#what-messages-will-my-bot-get" id="what-messages-will-my-bot-get" name="what-messages-will-my-bot-get"><i class="anchor-icon"></i></a>What messages will my bot get?</h4>
|
||||
<p><strong>1.</strong> <strong>All bots</strong>, regardless of settings, will receive:</p>
|
||||
<ul>
|
||||
<li>All service messages.</li>
|
||||
|
@ -106,17 +109,17 @@ You may also find the Bot API…">
|
|||
<li>Replies to any messages implicitly or explicitly meant for this bot.</li>
|
||||
</ul>
|
||||
<p><strong>Note</strong> that each particular message can only be available to <strong>one</strong> privacy-enabled bot at a time, i.e., a reply to bot A containing an explicit command for bot B or sent via bot C will only be available to bot A. Replies have the highest priority.</p>
|
||||
<h4><a class="anchor" name="why-doesn-39t-my-bot-see-messages-from-other-bots" href="#why-doesn-39t-my-bot-see-messages-from-other-bots"><i class="anchor-icon"></i></a>Why doesn't my bot see messages from other bots?</h4>
|
||||
<h4><a class="anchor" href="#why-doesnt-my-bot-see-messages-from-other-bots" id="why-doesnt-my-bot-see-messages-from-other-bots" name="why-doesnt-my-bot-see-messages-from-other-bots"><i class="anchor-icon"></i></a>Why doesn't my bot see messages from other bots?</h4>
|
||||
<p>Bots talking to each other could potentially get stuck in unwelcome loops. To avoid this, we decided that bots will not be able to see messages from other bots regardless of mode.</p>
|
||||
<h3><a class="anchor" name="getting-updates" href="#getting-updates"><i class="anchor-icon"></i></a>Getting Updates</h3>
|
||||
<h4><a class="anchor" name="how-do-i-get-updates" href="#how-do-i-get-updates"><i class="anchor-icon"></i></a>How do I get updates?</h4>
|
||||
<p>There are currently two ways of getting updates. You can either use <a href="https://core.telegram.org/bots/api#getupdates">long polling</a> or <a href="https://core.telegram.org/bots/api#setwebhook">Webhooks</a>. Please note that it's <strong>not</strong> possible to get updates via long polling while an outgoing Webhook is set.</p>
|
||||
<h4><a class="anchor" name="long-polling-gives-me-the-same-updates-again-and-again" href="#long-polling-gives-me-the-same-updates-again-and-again"><i class="anchor-icon"></i></a>Long polling gives me the same updates again and again!</h4>
|
||||
<h3><a class="anchor" href="#getting-updates" id="getting-updates" name="getting-updates"><i class="anchor-icon"></i></a>Getting Updates</h3>
|
||||
<h4><a class="anchor" href="#how-do-i-get-updates" id="how-do-i-get-updates" name="how-do-i-get-updates"><i class="anchor-icon"></i></a>How do I get updates?</h4>
|
||||
<p>There are currently two ways of getting updates. You can either use <a href="https://core.telegram.org/bots/api#getupdates">long polling</a> or <a href="https://core.telegram.org/bots/api#setwebhook">Webhooks</a>. Please note that it's <strong>not</strong> possible to get updates via long polling while an outgoing Webhook is set.</p>
|
||||
<h4><a class="anchor" href="#long-polling-gives-me-the-same-updates-again-and-again" id="long-polling-gives-me-the-same-updates-again-and-again" name="long-polling-gives-me-the-same-updates-again-and-again"><i class="anchor-icon"></i></a>Long polling gives me the same updates again and again!</h4>
|
||||
<p>The <a href="/bots/api#getupdates">getUpdates</a> method returns the earliest 100 unconfirmed updates. To confirm an update, use the <em>offset</em> parameter when calling getUpdates like this:</p>
|
||||
<pre><code>offset = update_id of last processed update + 1</code></pre>
|
||||
<p>All updates with <em>update_id</em> less than or equal to <em>offset</em> will be marked as confirmed on the server and will no longer be returned.</p>
|
||||
<h4><a class="anchor" name="i-39m-having-problems-with-webhooks" href="#i-39m-having-problems-with-webhooks"><i class="anchor-icon"></i></a>I'm having problems with Webhooks.</h4>
|
||||
<p>If you've set up your webhook successfully, but are not getting any updates, please remember:</p>
|
||||
<h4><a class="anchor" href="#im-having-problems-with-webhooks" id="im-having-problems-with-webhooks" name="im-having-problems-with-webhooks"><i class="anchor-icon"></i></a>I'm having problems with Webhooks.</h4>
|
||||
<p>If you've set up your webhook successfully, but are not getting any updates, please remember:</p>
|
||||
<ul>
|
||||
<li>You need a valid SSL certificate for webhooks to work.</li>
|
||||
<li>To use a self-signed certificate, you need to upload your public key certificate using the <em>certificate</em> parameter in <a href="/bots/api#setwebhook">setWebhook</a>. Please upload as InputFile, sending a String will not work.</li>
|
||||
|
@ -128,46 +131,44 @@ You may also find the Bot API…">
|
|||
<blockquote>
|
||||
<p>Please check out this new <a href="/bots/webhooks"><strong>WEBHOOK GUIDE</strong></a> to learn all there is to know about webhooks!</p>
|
||||
</blockquote>
|
||||
<h4><a class="anchor" name="i-39m-having-trouble-with-my-self-signed-certificate" href="#i-39m-having-trouble-with-my-self-signed-certificate"><i class="anchor-icon"></i></a>I'm having trouble with my self-signed certificate!</h4>
|
||||
<p>Please take a look at this <a href="/bots/self-signed">self-signed certificate guide</a> we made just for you. If you've read it and still have a question, ping us on botsupport.</p>
|
||||
<h4><a class="anchor" name="how-can-i-make-sure-that-webhook-requests-are-coming-from-telegr" href="#how-can-i-make-sure-that-webhook-requests-are-coming-from-telegr"><i class="anchor-icon"></i></a>How can I make sure that Webhook requests are coming from Telegram?</h4>
|
||||
<p>If you'd like to make sure that the Webhook request comes from Telegram, we recommend using a secret path in the URL you give us, e.g. www.example.com/your_token. Since nobody else knows your bot's token, you can be pretty sure it's us.</p>
|
||||
<h4><a class="anchor" name="how-can-i-make-requests-in-response-to-updates" href="#how-can-i-make-requests-in-response-to-updates"><i class="anchor-icon"></i></a>How can I make requests in response to updates?</h4>
|
||||
<p>This is possible if you're using webhooks. The upside is that you need less requests, the downside — that in this case it's not possible to know that such a request was successful or get its result. </p>
|
||||
<h4><a class="anchor" href="#im-having-trouble-with-my-self-signed-certificate" id="im-having-trouble-with-my-self-signed-certificate" name="im-having-trouble-with-my-self-signed-certificate"><i class="anchor-icon"></i></a>I'm having trouble with my self-signed certificate!</h4>
|
||||
<p>Please take a look at this <a href="/bots/self-signed">self-signed certificate guide</a> we made just for you. If you've read it and still have a question, ping us on botsupport.</p>
|
||||
<h4><a class="anchor" href="#how-can-i-make-sure-that-webhook-requests-are-coming-from-telegram" id="how-can-i-make-sure-that-webhook-requests-are-coming-from-telegram" name="how-can-i-make-sure-that-webhook-requests-are-coming-from-telegram"><i class="anchor-icon"></i></a>How can I make sure that Webhook requests are coming from Telegram?</h4>
|
||||
<p>If you'd like to make sure that the Webhook request comes from Telegram, we recommend using a secret path in the URL you give us, e.g. www.example.com/your_token. Since nobody else knows your bot's token, you can be pretty sure it's us.</p>
|
||||
<h4><a class="anchor" href="#how-can-i-make-requests-in-response-to-updates" id="how-can-i-make-requests-in-response-to-updates" name="how-can-i-make-requests-in-response-to-updates"><i class="anchor-icon"></i></a>How can I make requests in response to updates?</h4>
|
||||
<p>This is possible if you're using webhooks. The upside is that you need less requests, the downside — that in this case it's not possible to know that such a request was successful or get its result. </p>
|
||||
<p>Whenever you receive a webhook update, you have two options:</p>
|
||||
<p><strong>1. Issue POST to https://api.telegram.org/bot<token>/method</strong></p>
|
||||
<p><strong>1. Issue POST to <a href="https://api.telegram.org/bot">https://api.telegram.org/bot</a><token>/method</token></strong></p>
|
||||
<div>
|
||||
<a href="/file/811140979/3/5p52TWl9X2o/5c6d684ee0d6a4399d" target="_blank"><img src="/file/811140979/3/5p52TWl9X2o/5c6d684ee0d6a4399d" title="Confirm and request" class="dev_page_image" style="width:500px;" /></a>
|
||||
<a href="/file/811140979/3/5p52TWl9X2o/5c6d684ee0d6a4399d" target="_blank"><img src="/file/811140979/3/5p52TWl9X2o/5c6d684ee0d6a4399d" title="Confirm and request" class="dev_page_image" style="width:500px;"></a>
|
||||
</div>
|
||||
|
||||
<p><strong>2. Reply directly and give method as JSON payload in the reply</strong></p>
|
||||
<div>
|
||||
<a href="/file/811140266/2/vGxiVmENAos/6cffad00cbe72be7f2" target="_blank"><img src="/file/811140266/2/vGxiVmENAos/6cffad00cbe72be7f2" title="Reply with payload" class="dev_page_image" style="width:500px;" /></a></div>
|
||||
|
||||
<a href="/file/811140266/2/vGxiVmENAos/6cffad00cbe72be7f2" target="_blank"><img src="/file/811140266/2/vGxiVmENAos/6cffad00cbe72be7f2" title="Reply with payload" class="dev_page_image" style="width:500px;"></a></div>
|
||||
<blockquote>
|
||||
<p>You may also want to look at our sample <a href="/bots/samples/hellobot">HelloBot</a>, it offers a PHP implementation of this.</p>
|
||||
</blockquote>
|
||||
<h3><a class="anchor" name="handling-media" href="#handling-media"><i class="anchor-icon"></i></a>Handling Media</h3>
|
||||
<h4><a class="anchor" name="how-do-i-download-files" href="#how-do-i-download-files"><i class="anchor-icon"></i></a>How do I download files?</h4>
|
||||
<h3><a class="anchor" href="#handling-media" id="handling-media" name="handling-media"><i class="anchor-icon"></i></a>Handling Media</h3>
|
||||
<h4><a class="anchor" href="#how-do-i-download-files" id="how-do-i-download-files" name="how-do-i-download-files"><i class="anchor-icon"></i></a>How do I download files?</h4>
|
||||
<p>Use the <a href="/bots/api#getfile">getFile</a> method. Please note that this will only work with files of up to 20 MB in size.</p>
|
||||
<h4><a class="anchor" name="how-do-i-upload-a-large-file" href="#how-do-i-upload-a-large-file"><i class="anchor-icon"></i></a>How do I upload a large file?</h4>
|
||||
<p>Bots can currently send files of any type of up to 50 MB in size, so yes, very large files won't work for now. Sorry. This limit may be changed in the future.</p>
|
||||
<h4><a class="anchor" name="can-i-count-on-file-ids-to-be-persistent" href="#can-i-count-on-file-ids-to-be-persistent"><i class="anchor-icon"></i></a>Can I count on file_ids to be persistent?</h4>
|
||||
<h4><a class="anchor" href="#how-do-i-upload-a-large-file" id="how-do-i-upload-a-large-file" name="how-do-i-upload-a-large-file"><i class="anchor-icon"></i></a>How do I upload a large file?</h4>
|
||||
<p>Bots can currently send files of any type of up to 50 MB in size, so yes, very large files won't work for now. Sorry. This limit may be changed in the future.</p>
|
||||
<h4><a class="anchor" href="#can-i-count-on-file-ids-to-be-persistent" id="can-i-count-on-file-ids-to-be-persistent" name="can-i-count-on-file-ids-to-be-persistent"><i class="anchor-icon"></i></a>Can I count on file_ids to be persistent?</h4>
|
||||
<p>Yes, file_ids can be treated as persistent.</p>
|
||||
<h3><a class="anchor" name="broadcasting-to-users" href="#broadcasting-to-users"><i class="anchor-icon"></i></a>Broadcasting to Users</h3>
|
||||
<h4><a class="anchor" name="my-bot-is-hitting-limits-how-do-i-avoid-this" href="#my-bot-is-hitting-limits-how-do-i-avoid-this"><i class="anchor-icon"></i></a>My bot is hitting limits, how do I avoid this?</h4>
|
||||
<p>When sending messages inside a particular chat, avoid sending more than one message per second. We may allow short bursts that go over this limit, but eventually you'll begin receiving 429 errors.</p>
|
||||
<p>If you're sending bulk notifications to multiple users, the API will not allow more than 30 messages per second or so. Consider spreading out notifications over large intervals of 8—12 hours for best results.</p>
|
||||
<h3><a class="anchor" href="#broadcasting-to-users" id="broadcasting-to-users" name="broadcasting-to-users"><i class="anchor-icon"></i></a>Broadcasting to Users</h3>
|
||||
<h4><a class="anchor" href="#my-bot-is-hitting-limits-how-do-i-avoid-this" id="my-bot-is-hitting-limits-how-do-i-avoid-this" name="my-bot-is-hitting-limits-how-do-i-avoid-this"><i class="anchor-icon"></i></a>My bot is hitting limits, how do I avoid this?</h4>
|
||||
<p>When sending messages inside a particular chat, avoid sending more than one message per second. We may allow short bursts that go over this limit, but eventually you'll begin receiving 429 errors.</p>
|
||||
<p>If you're sending bulk notifications to multiple users, the API will not allow more than 30 messages per second or so. Consider spreading out notifications over large intervals of 8—12 hours for best results.</p>
|
||||
<p>Also note that your bot will not be able to send more than 20 messages per minute to the same group.</p>
|
||||
<h4><a class="anchor" name="how-can-i-message-all-of-my-bot-39s-subscribers-at-once" href="#how-can-i-message-all-of-my-bot-39s-subscribers-at-once"><i class="anchor-icon"></i></a>How can I message all of my bot's subscribers at once?</h4>
|
||||
<p>Unfortunately, at this moment we don't have methods for sending bulk messages, e.g. notifications. We may add something along these lines in the future.</p>
|
||||
<p>In order to avoid hitting our limits when sending out mass notifications, consider spreading them over longer intervals, e.g. 8-12 hours. The API will not allow bulk notifications to more than ~30 users per second, if you go over that, you'll start getting 429 errors.</p>
|
||||
<h4><a class="anchor" href="#how-can-i-message-all-of-my-bots-subscribers-at-once" id="how-can-i-message-all-of-my-bots-subscribers-at-once" name="how-can-i-message-all-of-my-bots-subscribers-at-once"><i class="anchor-icon"></i></a>How can I message all of my bot's subscribers at once?</h4>
|
||||
<p>Unfortunately, at this moment we don't have methods for sending bulk messages, e.g. notifications. We may add something along these lines in the future.</p>
|
||||
<p>In order to avoid hitting our limits when sending out mass notifications, consider spreading them over longer intervals, e.g. 8-12 hours. The API will not allow bulk notifications to more than ~30 users per second, if you go over that, you'll start getting 429 errors.</p>
|
||||
<p>See also: <a href="#my-bot-is-hitting-limits-how-do-i-avoid-this">How to avoid hitting limits?</a></p>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p>If you've got questions that are not answered on this page, ping us at <a href="https://telegram.me/botsupport">@BotSupport</a> in Telegram.<br>We welcome any suggestions for the Bot Platform and API.</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<p>If you've got questions that are not answered on this page, ping us at <a href="https://telegram.me/botsupport">@BotSupport</a> in Telegram.
|
||||
We welcome any suggestions for the Bot Platform and API.</p>
|
||||
</blockquote></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -44,69 +44,55 @@
|
|||
<div class="dev_side_image">
|
||||
<a href="/file/811140373/1/0_42vz9chLs.975647/383dca94f028b1872c" target="_blank"><img src="/file/811140063/2/hlfJUWy75wU.82563/ea57853b3d4d9ab22f" title="Gaming Platform Poster">
|
||||
</a></div>
|
||||
|
||||
<p>Bots can offer their users <strong>HTML5 games</strong> to play solo or to compete against each other in groups and one-on-one chats. Games are a new type of content on Telegram that your bot can send to users.</p>
|
||||
<div><center>
|
||||
<a href="/file/811140035/2/cIULSr61vi4.78261/127282e0bbd66ce3a9" target="_blank"><img src="/file/811140035/2/cIULSr61vi4.78261/127282e0bbd66ce3a9" title="Game in a chat" style="width: 295px; padding: 10px 10px;" /></a></center><br>
|
||||
<a href="/file/811140035/2/cIULSr61vi4.78261/127282e0bbd66ce3a9" target="_blank"><img src="/file/811140035/2/cIULSr61vi4.78261/127282e0bbd66ce3a9" title="Game in a chat" style="width: 295px; padding: 10px 10px;"></a></center><br>
|
||||
</div>
|
||||
|
||||
<blockquote>
|
||||
<p>This introduction is meant for <strong>bot developers</strong>. <a href="https://telegram.org/blog/games"><strong>Click here</strong></a>, in case you'd like something more user-friendly.<br>Check out the <a href="https://telegram.me/gamebot"><strong>@gamebot</strong></a> and <a href="https://telegram.me/gamee"><strong>@gamee</strong></a> bots for examples of what you can do using the new Gaming Platform.</p>
|
||||
<p>This introduction is meant for <strong>bot developers</strong>. <a href="https://telegram.org/blog/games"><strong>Click here</strong></a>, in case you'd like something more user-friendly.
|
||||
Check out the <a href="https://telegram.me/gamebot"><strong>@gamebot</strong></a> and <a href="https://telegram.me/gamee"><strong>@gamee</strong></a> bots for examples of what you can do using the new Gaming Platform.</p>
|
||||
</blockquote>
|
||||
<h3><a class="anchor" name="creating-a-game" href="#creating-a-game"><i class="anchor-icon"></i></a>Creating a Game</h3>
|
||||
<h3><a class="anchor" href="#creating-a-game" id="creating-a-game" name="creating-a-game"><i class="anchor-icon"></i></a>Creating a Game</h3>
|
||||
<p>To get started, send the <code>/newgame</code> command to <a href="https://telegram.me/botfather">@BotFather</a>.You will be prompted for a description text and a photo. You can also upload an optional GIF animation that demostrates your game to the users to make messages with the game more attractive (check out <a href="https://telegram.me/gamebot?game=Lumberjack">Lumberjack</a> or <a href="https://telegram.me/gamebot?game=Corsairs">Corsairs</a> for examples).</p>
|
||||
<h3><a class="anchor" name="launching-the-game" href="#launching-the-game"><i class="anchor-icon"></i></a>Launching the Game</h3>
|
||||
<h3><a class="anchor" href="#launching-the-game" id="launching-the-game" name="launching-the-game"><i class="anchor-icon"></i></a>Launching the Game</h3>
|
||||
<p>Once the game is created, your bot can send it to chats as regular messages, or offer them via <a href="/bots/inline">inline mode</a>. The game message will always have an <a href="/bots/api#inlinekeyboardmarkup">inline</a> <strong>Play button</strong>.</p>
|
||||
<p>When this button is pressed, your bot gets a callback query that indicates the requested game. You provide the correct URL for this particular user and the app automatically opens the game in the in-app browser.</p>
|
||||
<h3><a class="anchor" name="adding-buttons" href="#adding-buttons"><i class="anchor-icon"></i></a>Adding Buttons</h3>
|
||||
<p>If you send the game message without any buttons, it will automatically have a 'Play <em>GameName</em>' button. You can manually add multiple buttons to your game message. Please note that the first button in the first row <strong>must always</strong> be the one that launches the game. You can add more buttons: e.g., for a description of the rules, or a button that links to the game's official community.</p>
|
||||
<h3><a class="anchor" name="tracking-high-scores" href="#tracking-high-scores"><i class="anchor-icon"></i></a>Tracking High Scores</h3>
|
||||
<h3><a class="anchor" href="#adding-buttons" id="adding-buttons" name="adding-buttons"><i class="anchor-icon"></i></a>Adding Buttons</h3>
|
||||
<p>If you send the game message without any buttons, it will automatically have a 'Play <em>GameName</em>' button. You can manually add multiple buttons to your game message. Please note that the first button in the first row <strong>must always</strong> be the one that launches the game. You can add more buttons: e.g., for a description of the rules, or a button that links to the game's official community.</p>
|
||||
<h3><a class="anchor" href="#tracking-high-scores" id="tracking-high-scores" name="tracking-high-scores"><i class="anchor-icon"></i></a>Tracking High Scores</h3>
|
||||
<p>The message with your game will also display high scores for the current chat. When a new high score is set, a service message will be sent to the chat and the message with the current scoreboard will be updated. You can also request the necessary data for building in-game high score tables.</p>
|
||||
<div><center>
|
||||
<br>
|
||||
<a href="/file/811140022/1/m7-46hgmwbI.91190/ad7033bcb879270a69" target="_blank"><img src="/file/811140022/1/m7-46hgmwbI.91190/ad7033bcb879270a69" title="In-game high scores for Lumberjack" style="width: 295px; padding: 0px 20px;" /></a>
|
||||
<a href="/file/811140594/2/WS2fB3n2UGA.149087/270057ff677339717e" target="_blank"><img src="/file/811140594/2/WS2fB3n2UGA.149087/270057ff677339717e" title="Message with the score in the chat" style="width: 295px; padding: 0px 20px;" /></a><br><br>
|
||||
|
||||
<br><br></center></div>
|
||||
|
||||
<h3><a class="anchor" name="sharing-your-game-to-telegram-chats" href="#sharing-your-game-to-telegram-chats"><i class="anchor-icon"></i></a>Sharing Your Game to Telegram Chats</h3>
|
||||
<a href="/file/811140022/1/m7-46hgmwbI.91190/ad7033bcb879270a69" target="_blank"><img src="/file/811140022/1/m7-46hgmwbI.91190/ad7033bcb879270a69" title="In-game high scores for Lumberjack" style="width: 295px; padding: 0px 20px;"></a>
|
||||
<a href="/file/811140594/2/WS2fB3n2UGA.149087/270057ff677339717e" target="_blank"><img src="/file/811140594/2/WS2fB3n2UGA.149087/270057ff677339717e" title="Message with the score in the chat" style="width: 295px; padding: 0px 20px;"></a><br><br>
|
||||
<p><br><br></p></center></div>
|
||||
<h3><a class="anchor" href="#sharing-your-game-to-telegram-chats" id="sharing-your-game-to-telegram-chats" name="sharing-your-game-to-telegram-chats"><i class="anchor-icon"></i></a>Sharing Your Game to Telegram Chats</h3>
|
||||
<p>There are many way for users to spread your game virally if they like it. The interface will always have the standard system button for sharing the game in the top right corner:</p>
|
||||
<div><center>
|
||||
<a href="/file/811140766/2/_wJtf-Zib5I.25531/774eb9b59898526d26" target="_blank"><img src="/file/811140766/2/_wJtf-Zib5I.25531/774eb9b59898526d26" title="Standard share button: iOS" style="width: 295px; padding: 15px 20px;" /></a>
|
||||
|
||||
<a href="/file/811140557/3/ddi8K6x0obQ.34056/a1ca60069b70a81646" target="_blank"><img src="/file/811140557/3/ddi8K6x0obQ.34056/a1ca60069b70a81646" title="Standard share button: Android" style="width: 295px; padding: 15px 20px;" /></a><br><br>
|
||||
|
||||
<a href="/file/811140766/2/_wJtf-Zib5I.25531/774eb9b59898526d26" target="_blank"><img src="/file/811140766/2/_wJtf-Zib5I.25531/774eb9b59898526d26" title="Standard share button: iOS" style="width: 295px; padding: 15px 20px;"></a>
|
||||
<p><a href="/file/811140557/3/ddi8K6x0obQ.34056/a1ca60069b70a81646" target="_blank"><img src="/file/811140557/3/ddi8K6x0obQ.34056/a1ca60069b70a81646" title="Standard share button: Android" style="width: 295px; padding: 15px 20px;"></a><br><br></p>
|
||||
</center></div>
|
||||
|
||||
|
||||
|
||||
<p>You can also create an additional <strong>Share</strong> button inside your HTML page. Pressing this button will send the game to a desired chat along with the user's best score in the game.</p>
|
||||
<p>You can also create an additional <strong>Share</strong> button inside your HTML page. Pressing this button will send the game to a desired chat along with the user's best score in the game.</p>
|
||||
<div><center>
|
||||
|
||||
<a href="/file/811140189/2/SLwHmToemfg.91233/a242854be2b500b4cb" target="_blank"><img src="/file/811140189/2/SLwHmToemfg.91233/a242854be2b500b4cb" title="Gamee: share button" style="width: 295px; padding: 15px 20px;" /></a>
|
||||
<a href="/file/811140978/1/JoBvEad8JaM.148942/dcd741b65b446781b4" target="_blank"><img src="/file/811140978/1/JoBvEad8JaM.148942/dcd741b65b446781b4" title="Shared game with 'just scored'" style="width: 295px; padding: 15px 20px;" /></a>
|
||||
|
||||
|
||||
<br><br></center></div>
|
||||
|
||||
|
||||
<pre><code><a href="/file/811140189/2/SLwHmToemfg.91233/a242854be2b500b4cb" target="_blank"><img src="/file/811140189/2/SLwHmToemfg.91233/a242854be2b500b4cb" title="Gamee: share button" style="width: 295px; padding: 15px 20px;" /></a></code></pre>
|
||||
<p><a href="/file/811140978/1/JoBvEad8JaM.148942/dcd741b65b446781b4" target="_blank"><img src="/file/811140978/1/JoBvEad8JaM.148942/dcd741b65b446781b4" title="Shared game with 'just scored'" style="width: 295px; padding: 15px 20px;"></a></p>
|
||||
<p><br><br></p></center></div>
|
||||
<p>To add the sharing button, include <a href="https://telegram.org/js/games.js">this script</a> at the end of the <code><body></code> tag on your page:</p>
|
||||
<pre><code><script src="https://telegram.org/js/games.js"></script></code></pre>
|
||||
<pre><code><script src="https://telegram.org/js/games.js"></script></code></pre>
|
||||
<p>Then use the method <code>TelegramGameProxy.shareScore()</code> to call the sharing option.</p>
|
||||
<blockquote>
|
||||
<p>Warning: Do not call this method without consent and <strong>direct action</strong> from the user.</p>
|
||||
</blockquote>
|
||||
<p><strong>Example:</strong></p>
|
||||
<pre><code><button onclick="TelegramGameProxy.shareScore()">Share score</button></code></pre>
|
||||
<p>This library will only work when launched from inside Telegram, so please don't use it on ordinary web pages. </p>
|
||||
<h3><a class="anchor" name="using-url-parameters" href="#using-url-parameters"><i class="anchor-icon"></i></a>Using URL Parameters</h3>
|
||||
<pre><code><button onclick="TelegramGameProxy.shareScore()">Share score</button></code></pre>
|
||||
<p>This library will only work when launched from inside Telegram, so please don't use it on ordinary web pages. </p>
|
||||
<h3><a class="anchor" href="#using-url-parameters" id="using-url-parameters" name="using-url-parameters"><i class="anchor-icon"></i></a>Using URL Parameters</h3>
|
||||
<p>If your URL is using a fragment identifier, please note that Telegram Apps could add certain service parameters to the fragment id. The names for such parameters will start in <code>tg</code> (you can check the code that adds them <a href="https://github.com/TelegramMessenger/GamingCommunication/blob/master/games.js#L54">here</a>). Use the <code>TelegramGameProxy.initParams</code> object if you need to read your own parameters from the fragment id.</p>
|
||||
<h3><a class="anchor" name="creating-a-great-html5-experience" href="#creating-a-great-html5-experience"><i class="anchor-icon"></i></a>Creating a Great HTML5 Experience</h3>
|
||||
<p>Please make sure that your HTML5 page is responsive and works well on all Telegram apps and supported platforms. If you find it impossible to support certain conditions or platforms, don't leave your users hanging and at least provide a notification.</p>
|
||||
<h3><a class="anchor" href="#creating-a-great-html5-experience" id="creating-a-great-html5-experience" name="creating-a-great-html5-experience"><i class="anchor-icon"></i></a>Creating a Great HTML5 Experience</h3>
|
||||
<p>Please make sure that your HTML5 page is responsive and works well on all Telegram apps and supported platforms. If you find it impossible to support certain conditions or platforms, don't leave your users hanging and at least provide a notification.</p>
|
||||
<blockquote>
|
||||
<p>See the <a href="/bots/api#games">Bot API Manual</a> for the relevant methods and objects.</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</blockquote></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -42,136 +42,232 @@ Check out the FAQ, if you have questions.…">
|
|||
<h1 id="dev_page_title">Bot Code Examples</h1>
|
||||
|
||||
<div id="dev_page_content"><blockquote>
|
||||
<p>If you want to learn more about Telegram bots, start with our <a href="/bots"><strong>Introduction to Bots »</strong></a><br>Check out the <a href="/bots/faq"><strong>FAQ</strong></a>, if you have questions.</p>
|
||||
<p>If you want to learn more about Telegram bots, start with our <a href="/bots"><strong>Introduction to Bots »</strong></a>
|
||||
Check out the <a href="/bots/faq"><strong>FAQ</strong></a>, if you have questions.</p>
|
||||
</blockquote>
|
||||
<p>Many members of our community are building bots and libraries and publishing their source code. We collect these examples here. Ping us on <a href="https://telegram.me/botsupport">BotSupport</a> if you've built a bot and would like to share its code with others.</p>
|
||||
<h4><a class="anchor" name="php" href="#php"><i class="anchor-icon"></i></a>PHP</h4>
|
||||
<p>Many members of our community are building bots and libraries and publishing their source code. We collect these examples here. Ping us on <a href="https://telegram.me/botsupport">BotSupport</a> if you've built a bot and would like to share its code with others.</p>
|
||||
<h4><a class="anchor" href="#php" id="php" name="php"><i class="anchor-icon"></i></a>PHP</h4>
|
||||
<ul>
|
||||
<li><p><strong>Telegram Bot Api Base</strong>. Clear and simple Telegram Bot API.<br><a href="https://github.com/tg-bot-api/bot-api-base">https://github.com/tg-bot-api/bot-api-base</a></p>
|
||||
<li>
|
||||
<p><strong>Telegram Bot Api Base</strong>. Clear and simple Telegram Bot API.
|
||||
<a href="https://github.com/tg-bot-api/bot-api-base">https://github.com/tg-bot-api/bot-api-base</a></p>
|
||||
</li>
|
||||
<li><p><strong>PHP Telegram API</strong>. A complete async capable Telegram Bot API implementation for PHP7.<br><a href="https://github.com/unreal4u/telegram-api">https://github.com/unreal4u/telegram-api</a></p>
|
||||
<li>
|
||||
<p><strong>PHP Telegram API</strong>. A complete async capable Telegram Bot API implementation for PHP7.
|
||||
<a href="https://github.com/unreal4u/telegram-api">https://github.com/unreal4u/telegram-api</a></p>
|
||||
</li>
|
||||
<li><p><strong>PHP Telegram Bot</strong>. PHP Telegram Bot based on the official Telegram Bot API.<br><a href="https://github.com/php-telegram-bot/core">https://github.com/php-telegram-bot/core</a></p>
|
||||
<li>
|
||||
<p><strong>PHP Telegram Bot</strong>. PHP Telegram Bot based on the official Telegram Bot API.
|
||||
<a href="https://github.com/php-telegram-bot/core">https://github.com/php-telegram-bot/core</a></p>
|
||||
</li>
|
||||
<li><p><strong>Bot API PHP SDK</strong>. Telegram Bot API PHP SDK. Supports Laravel out of the box.<br><a href="https://github.com/irazasyed/telegram-bot-sdk">https://github.com/irazasyed/telegram-bot-sdk</a></p>
|
||||
<li>
|
||||
<p><strong>Bot API PHP SDK</strong>. Telegram Bot API PHP SDK. Supports Laravel out of the box.
|
||||
<a href="https://github.com/irazasyed/telegram-bot-sdk">https://github.com/irazasyed/telegram-bot-sdk</a></p>
|
||||
</li>
|
||||
<li><p><strong>TeleBot</strong>. Easy way to create Telegram bots in PHP. Rich Laravel support out of the box.<br><a href="https://github.com/westacks/telebot">https://github.com/westacks/telebot</a></p>
|
||||
<li>
|
||||
<p><strong>TeleBot</strong>. Easy way to create Telegram bots in PHP. Rich Laravel support out of the box.
|
||||
<a href="https://github.com/westacks/telebot">https://github.com/westacks/telebot</a></p>
|
||||
</li>
|
||||
<li><p><strong>NovaGram</strong>. An Object-Oriented PHP library for Telegram Bots.<br><a href="https://github.com/skrtdev/NovaGram">https://github.com/skrtdev/NovaGram</a></p>
|
||||
<li>
|
||||
<p><strong>NovaGram</strong>. An Object-Oriented PHP library for Telegram Bots.
|
||||
<a href="https://github.com/skrtdev/NovaGram">https://github.com/skrtdev/NovaGram</a></p>
|
||||
</li>
|
||||
<li><p><strong>PHP Telegram Bot</strong>. Telegram bot as it should be.<br><a href="https://github.com/formapro/telegram-bot-php">https://github.com/formapro/telegram-bot-php</a></p>
|
||||
<li>
|
||||
<p><strong>PHP Telegram Bot</strong>. Telegram bot as it should be.
|
||||
<a href="https://github.com/formapro/telegram-bot-php">https://github.com/formapro/telegram-bot-php</a></p>
|
||||
</li>
|
||||
<li><p><strong>PHP Telegram Bot Api</strong>. Native PHP Wrapper for Telegram BOT API.<br><a href="https://github.com/TelegramBot/Api">https://github.com/TelegramBot/Api</a></p>
|
||||
<li>
|
||||
<p><strong>PHP Telegram Bot Api</strong>. Native PHP Wrapper for Telegram BOT API.
|
||||
<a href="https://github.com/TelegramBot/Api">https://github.com/TelegramBot/Api</a></p>
|
||||
</li>
|
||||
<li><p><strong>TuriBot</strong>. A simple way to communicate with Telegram APIs in PHP.<br><a href="https://github.com/davtur19/TuriBot">https://github.com/davtur19/TuriBot</a></p>
|
||||
<li>
|
||||
<p><strong>TuriBot</strong>. A simple way to communicate with Telegram APIs in PHP.
|
||||
<a href="https://github.com/davtur19/TuriBot">https://github.com/davtur19/TuriBot</a></p>
|
||||
</li>
|
||||
<li><p><strong>TelegramBotApiBundle</strong>. A symfony wrapper bundle for Telegram Bot API.<br><a href="https://github.com/borsaco/TelegramBotApiBundle">https://github.com/borsaco/TelegramBotApiBundle</a></p>
|
||||
<li>
|
||||
<p><strong>TelegramBotApiBundle</strong>. A symfony wrapper bundle for Telegram Bot API.
|
||||
<a href="https://github.com/borsaco/TelegramBotApiBundle">https://github.com/borsaco/TelegramBotApiBundle</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="node-js" href="#node-js"><i class="anchor-icon"></i></a>Node.js</h4>
|
||||
<h4><a class="anchor" href="#nodejs" id="nodejs" name="nodejs"><i class="anchor-icon"></i></a>Node.js</h4>
|
||||
<ul>
|
||||
<li><p><strong>Telegraf</strong>. Modern Telegram Bot Framework for Node.js.<br><a href="https://github.com/telegraf/telegraf">https://github.com/telegraf/telegraf</a></p>
|
||||
<li>
|
||||
<p><strong>Telegraf</strong>. Modern Telegram Bot Framework for Node.js.
|
||||
<a href="https://github.com/telegraf/telegraf">https://github.com/telegraf/telegraf</a></p>
|
||||
</li>
|
||||
<li><p><strong>Node-Telegram-bot</strong>. Node.js module to interact with the official Telegram Bot API.<br><a href="https://github.com/yagop/node-telegram-bot-api">https://github.com/yagop/node-telegram-bot-api</a></p>
|
||||
<li>
|
||||
<p><strong>Node-Telegram-bot</strong>. Node.js module to interact with the official Telegram Bot API.
|
||||
<a href="https://github.com/yagop/node-telegram-bot-api">https://github.com/yagop/node-telegram-bot-api</a></p>
|
||||
</li>
|
||||
<li><p><strong>Telebot</strong>. The easy way to write Telegram bots.<br><a href="https://github.com/mullwar/telebot">https://github.com/mullwar/telebot</a></p>
|
||||
<li>
|
||||
<p><strong>Telebot</strong>. The easy way to write Telegram bots.
|
||||
<a href="https://github.com/mullwar/telebot">https://github.com/mullwar/telebot</a></p>
|
||||
</li>
|
||||
<li><p><strong>telegram-bot-api</strong>. Node.js library for Telegram Bot API.<br><a href="https://github.com/mast/telegram-bot-api">https://github.com/mast/telegram-bot-api</a></p>
|
||||
<li>
|
||||
<p><strong>telegram-bot-api</strong>. Node.js library for Telegram Bot API.
|
||||
<a href="https://github.com/mast/telegram-bot-api">https://github.com/mast/telegram-bot-api</a></p>
|
||||
</li>
|
||||
<li><p><strong>Slimbot</strong>. A fuss-free, thin wrapper around Telegram Bot API for Node.js. No frills.<br><a href="https://github.com/edisonchee/slimbot">https://github.com/edisonchee/slimbot</a></p>
|
||||
<li>
|
||||
<p><strong>Slimbot</strong>. A fuss-free, thin wrapper around Telegram Bot API for Node.js. No frills.
|
||||
<a href="https://github.com/edisonchee/slimbot">https://github.com/edisonchee/slimbot</a></p>
|
||||
</li>
|
||||
<li><p><strong>tgapi</strong>. Reactive and with full Flow coverage Telegram Bot API JS implementation.<br><a href="https://github.com/bigslycat/tgapi">https://github.com/bigslycat/tgapi</a></p>
|
||||
<li>
|
||||
<p><strong>tgapi</strong>. Reactive and with full Flow coverage Telegram Bot API JS implementation.
|
||||
<a href="https://github.com/bigslycat/tgapi">https://github.com/bigslycat/tgapi</a></p>
|
||||
</li>
|
||||
<li><p><strong>Botgram</strong>. Practical Telegram Bot microframework.<br><a href="https://github.com/botgram/botgram">https://github.com/botgram/botgram</a></p>
|
||||
<li>
|
||||
<p><strong>Botgram</strong>. Practical Telegram Bot microframework.
|
||||
<a href="https://github.com/botgram/botgram">https://github.com/botgram/botgram</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="rust" href="#rust"><i class="anchor-icon"></i></a>Rust</h4>
|
||||
<h4><a class="anchor" href="#rust" id="rust" name="rust"><i class="anchor-icon"></i></a>Rust</h4>
|
||||
<ul>
|
||||
<li><p><strong>teloxide</strong>. An elegant Telegram bots framework for Rust.<br><a href="https://github.com/teloxide/teloxide">https://github.com/teloxide/teloxide</a></p>
|
||||
<li>
|
||||
<p><strong>teloxide</strong>. An elegant Telegram bots framework for Rust.
|
||||
<a href="https://github.com/teloxide/teloxide">https://github.com/teloxide/teloxide</a></p>
|
||||
</li>
|
||||
<li><p><strong>Telebot</strong>. Write Telegram bots in Rust with Tokio and Futures.<br><a href="https://github.com/bytesnake/telebot">https://github.com/bytesnake/telebot</a></p>
|
||||
<li>
|
||||
<p><strong>Telebot</strong>. Write Telegram bots in Rust with Tokio and Futures.
|
||||
<a href="https://github.com/bytesnake/telebot">https://github.com/bytesnake/telebot</a></p>
|
||||
</li>
|
||||
<li><p><strong>carapax</strong>. A Telegram Bot API framework.<br><a href="https://github.com/tg-rs/carapax">https://github.com/tg-rs/carapax</a></p>
|
||||
<li>
|
||||
<p><strong>carapax</strong>. A Telegram Bot API framework.
|
||||
<a href="https://github.com/tg-rs/carapax">https://github.com/tg-rs/carapax</a></p>
|
||||
</li>
|
||||
<li><p><strong>telegram-bot</strong>. Rust Library for creating a Telegram Bot.<br><a href="https://github.com/telegram-rs/telegram-bot">https://github.com/telegram-rs/telegram-bot</a></p>
|
||||
<li>
|
||||
<p><strong>telegram-bot</strong>. Rust Library for creating a Telegram Bot.
|
||||
<a href="https://github.com/telegram-rs/telegram-bot">https://github.com/telegram-rs/telegram-bot</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="python" href="#python"><i class="anchor-icon"></i></a>Python</h4>
|
||||
<h4><a class="anchor" href="#python" id="python" name="python"><i class="anchor-icon"></i></a>Python</h4>
|
||||
<ul>
|
||||
<li><p><strong>python-telegram-bot</strong>. A wrapper you can't refuse.<br><a href="https://github.com/python-telegram-bot/python-telegram-bot">https://github.com/python-telegram-bot/python-telegram-bot</a></p>
|
||||
<li>
|
||||
<p><strong>python-telegram-bot</strong>. A wrapper you can't refuse.
|
||||
<a href="https://github.com/python-telegram-bot/python-telegram-bot">https://github.com/python-telegram-bot/python-telegram-bot</a></p>
|
||||
</li>
|
||||
<li><p><strong>pyTelegramBotAPI</strong>. Python Telegram Bot API.<br><a href="https://github.com/eternnoir/pyTelegramBotAPI">https://github.com/eternnoir/pyTelegramBotAPI</a></p>
|
||||
<li>
|
||||
<p><strong>pyTelegramBotAPI</strong>. Python Telegram Bot API.
|
||||
<a href="https://github.com/eternnoir/pyTelegramBotAPI">https://github.com/eternnoir/pyTelegramBotAPI</a></p>
|
||||
</li>
|
||||
<li><p><strong>AIOGram</strong>. A pretty simple and fully asynchronous library for Telegram Bot API written with asyncio and aiohttp.<br><a href="https://github.com/aiogram/aiogram">https://github.com/aiogram/aiogram</a></p>
|
||||
<li>
|
||||
<p><strong>AIOGram</strong>. A pretty simple and fully asynchronous library for Telegram Bot API written with asyncio and aiohttp.
|
||||
<a href="https://github.com/aiogram/aiogram">https://github.com/aiogram/aiogram</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="ruby" href="#ruby"><i class="anchor-icon"></i></a>Ruby</h4>
|
||||
<h4><a class="anchor" href="#ruby" id="ruby" name="ruby"><i class="anchor-icon"></i></a>Ruby</h4>
|
||||
<ul>
|
||||
<li><p><strong>Telegram::Bot</strong>. Ruby gem for building Telegram Bot with optional Rails integration.<br><a href="https://github.com/telegram-bot-rb/telegram-bot">https://github.com/telegram-bot-rb/telegram-bot</a></p>
|
||||
<li>
|
||||
<p><strong>Telegram::Bot</strong>. Ruby gem for building Telegram Bot with optional Rails integration.
|
||||
<a href="https://github.com/telegram-bot-rb/telegram-bot">https://github.com/telegram-bot-rb/telegram-bot</a></p>
|
||||
</li>
|
||||
<li><p><strong>telegram-bot-ruby</strong>. Ruby wrapper for Telegram's Bot API.<br><a href="https://github.com/atipugin/telegram-bot-ruby">https://github.com/atipugin/telegram-bot-ruby</a></p>
|
||||
<li>
|
||||
<p><strong>telegram-bot-ruby</strong>. Ruby wrapper for Telegram's Bot API.
|
||||
<a href="https://github.com/atipugin/telegram-bot-ruby">https://github.com/atipugin/telegram-bot-ruby</a></p>
|
||||
</li>
|
||||
<li><p><strong>TelegramBot</strong>. A charismatic Ruby client for Telegram's Bot API.<br><a href="https://github.com/eljojo/telegram_bot">https://github.com/eljojo/telegram_bot</a></p>
|
||||
<li>
|
||||
<p><strong>TelegramBot</strong>. A charismatic Ruby client for Telegram's Bot API.
|
||||
<a href="https://github.com/eljojo/telegram_bot">https://github.com/eljojo/telegram_bot</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="swift" href="#swift"><i class="anchor-icon"></i></a>Swift</h4>
|
||||
<h4><a class="anchor" href="#swift" id="swift" name="swift"><i class="anchor-icon"></i></a>Swift</h4>
|
||||
<ul>
|
||||
<li><p><strong>telegram-bot-swift</strong>. Telegram Bot SDK for Swift.<br><a href="https://github.com/rapierorg/telegram-bot-swift">https://github.com/rapierorg/telegram-bot-swift</a></p>
|
||||
<li>
|
||||
<p><strong>telegram-bot-swift</strong>. Telegram Bot SDK for Swift.
|
||||
<a href="https://github.com/rapierorg/telegram-bot-swift">https://github.com/rapierorg/telegram-bot-swift</a></p>
|
||||
</li>
|
||||
<li><p><strong>Telegrammer</strong>. Telegram Bot Framework written in Swift 5.1 with SwiftNIO network framework.<br><a href="https://github.com/givip/Telegrammer">https://github.com/givip/Telegrammer</a></p>
|
||||
<li>
|
||||
<p><strong>Telegrammer</strong>. Telegram Bot Framework written in Swift 5.1 with SwiftNIO network framework.
|
||||
<a href="https://github.com/givip/Telegrammer">https://github.com/givip/Telegrammer</a></p>
|
||||
</li>
|
||||
<li><p><strong>SwiftyBot</strong>. Swift + Vapor + Telegram.<br><a href="https://github.com/FabrizioBrancati/SwiftyBot">https://github.com/FabrizioBrancati/SwiftyBot</a></p>
|
||||
<li>
|
||||
<p><strong>SwiftyBot</strong>. Swift + Vapor + Telegram.
|
||||
<a href="https://github.com/FabrizioBrancati/SwiftyBot">https://github.com/FabrizioBrancati/SwiftyBot</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="kotlin" href="#kotlin"><i class="anchor-icon"></i></a>Kotlin</h4>
|
||||
<h4><a class="anchor" href="#kotlin" id="kotlin" name="kotlin"><i class="anchor-icon"></i></a>Kotlin</h4>
|
||||
<ul>
|
||||
<li><p><strong>TelegramBotAPI</strong>. Type-safe library for work with Telegram Bot API.<br><a href="https://github.com/InsanusMokrassar/TelegramBotAPI">https://github.com/InsanusMokrassar/TelegramBotAPI</a></p>
|
||||
<li>
|
||||
<p><strong>TelegramBotAPI</strong>. Type-safe library for work with Telegram Bot API.
|
||||
<a href="https://github.com/InsanusMokrassar/TelegramBotAPI">https://github.com/InsanusMokrassar/TelegramBotAPI</a></p>
|
||||
</li>
|
||||
<li><p><strong>Kotlin Telegram Bot</strong>. A wrapper for the Telegram Bot API.<br><a href="https://github.com/kotlin-telegram-bot/kotlin-telegram-bot">https://github.com/kotlin-telegram-bot/kotlin-telegram-bot</a></p>
|
||||
<li>
|
||||
<p><strong>Kotlin Telegram Bot</strong>. A wrapper for the Telegram Bot API.
|
||||
<a href="https://github.com/kotlin-telegram-bot/kotlin-telegram-bot">https://github.com/kotlin-telegram-bot/kotlin-telegram-bot</a></p>
|
||||
</li>
|
||||
<li><p><strong>kt-telegram-bot</strong>. Telegram Bot API library for Kotlin language.<br><a href="https://github.com/elbekD/kt-telegram-bot">https://github.com/elbekD/kt-telegram-bot</a></p>
|
||||
<li>
|
||||
<p><strong>kt-telegram-bot</strong>. Telegram Bot API library for Kotlin language.
|
||||
<a href="https://github.com/elbekD/kt-telegram-bot">https://github.com/elbekD/kt-telegram-bot</a></p>
|
||||
</li>
|
||||
<li><p><strong>Telegraff</strong>. Kotlin DSL for Telegram Bots.<br><a href="https://github.com/ruslanys/telegraff">https://github.com/ruslanys/telegraff</a></p>
|
||||
<li>
|
||||
<p><strong>Telegraff</strong>. Kotlin DSL for Telegram Bots.
|
||||
<a href="https://github.com/ruslanys/telegraff">https://github.com/ruslanys/telegraff</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="java" href="#java"><i class="anchor-icon"></i></a>Java</h4>
|
||||
<h4><a class="anchor" href="#java" id="java" name="java"><i class="anchor-icon"></i></a>Java</h4>
|
||||
<ul>
|
||||
<li><p><strong>TelegramBots</strong>. A simple to use library to create Telegram Bots.<br><a href="https://github.com/rubenlagus/TelegramBots">https://github.com/rubenlagus/TelegramBots</a></p>
|
||||
<li>
|
||||
<p><strong>TelegramBots</strong>. A simple to use library to create Telegram Bots.
|
||||
<a href="https://github.com/rubenlagus/TelegramBots">https://github.com/rubenlagus/TelegramBots</a></p>
|
||||
</li>
|
||||
<li><p><strong>Java API</strong>. Telegram Bot API for Java.<br><a href="https://github.com/pengrad/java-telegram-bot-api">https://github.com/pengrad/java-telegram-bot-api</a></p>
|
||||
<li>
|
||||
<p><strong>Java API</strong>. Telegram Bot API for Java.
|
||||
<a href="https://github.com/pengrad/java-telegram-bot-api">https://github.com/pengrad/java-telegram-bot-api</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="go" href="#go"><i class="anchor-icon"></i></a>Go</h4>
|
||||
<h4><a class="anchor" href="#go" id="go" name="go"><i class="anchor-icon"></i></a>Go</h4>
|
||||
<ul>
|
||||
<li><p><strong>go-telegram-bot-api</strong>. Golang bindings for the Telegram Bot API.<br><a href="https://github.com/go-telegram-bot-api/telegram-bot-api">https://github.com/go-telegram-bot-api/telegram-bot-api</a></p>
|
||||
<li>
|
||||
<p><strong>go-telegram-bot-api</strong>. Golang bindings for the Telegram Bot API.
|
||||
<a href="https://github.com/go-telegram-bot-api/telegram-bot-api">https://github.com/go-telegram-bot-api/telegram-bot-api</a></p>
|
||||
</li>
|
||||
<li><p><strong>telebot</strong>. A Telegram bot framework in Go.<br><a href="https://github.com/tucnak/telebot">https://github.com/tucnak/telebot</a></p>
|
||||
<li>
|
||||
<p><strong>telebot</strong>. A Telegram bot framework in Go.
|
||||
<a href="https://github.com/tucnak/telebot">https://github.com/tucnak/telebot</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a class="anchor" name="other-languages" href="#other-languages"><i class="anchor-icon"></i></a>Other Languages</h4>
|
||||
<h4><a class="anchor" href="#other-languages" id="other-languages" name="other-languages"><i class="anchor-icon"></i></a>Other Languages</h4>
|
||||
<ul>
|
||||
<li><p>C#. <strong>Telegram.bot</strong>. Library.<br><a href="https://github.com/TelegramBots/Telegram.Bot">https://github.com/TelegramBots/Telegram.Bot</a></p>
|
||||
<li>
|
||||
<p>C#. <strong>Telegram.bot</strong>. Library.
|
||||
<a href="https://github.com/TelegramBots/Telegram.Bot">https://github.com/TelegramBots/Telegram.Bot</a></p>
|
||||
</li>
|
||||
<li><p>Elixir. <strong>Nadia</strong>. Telegram Bot API Wrapper.<br><a href="https://github.com/zhyu/nadia">https://github.com/zhyu/nadia</a></p>
|
||||
<li>
|
||||
<p>Elixir. <strong>Nadia</strong>. Telegram Bot API Wrapper.
|
||||
<a href="https://github.com/zhyu/nadia">https://github.com/zhyu/nadia</a></p>
|
||||
</li>
|
||||
<li><p>C++. <strong>tgbot-cpp</strong>. C++ library for Telegram Bot API.<br><a href="https://github.com/reo7sp/tgbot-cpp">https://github.com/reo7sp/tgbot-cpp</a></p>
|
||||
<li>
|
||||
<p>C++. <strong>tgbot-cpp</strong>. C++ library for Telegram Bot API.
|
||||
<a href="https://github.com/reo7sp/tgbot-cpp">https://github.com/reo7sp/tgbot-cpp</a></p>
|
||||
</li>
|
||||
<li><p>Dart. <strong>TeleDart</strong>. A Dart library interfacing with the latest Telegram Bot API.<br><a href="https://github.com/DinoLeung/TeleDart">https://github.com/DinoLeung/TeleDart</a></p>
|
||||
<li>
|
||||
<p>Dart. <strong>TeleDart</strong>. A Dart library interfacing with the latest Telegram Bot API.
|
||||
<a href="https://github.com/DinoLeung/TeleDart">https://github.com/DinoLeung/TeleDart</a></p>
|
||||
</li>
|
||||
<li><p>Lua. <strong>telegram-bot-lua</strong>. A feature-filled Telegram Bot API library.<br><a href="https://github.com/wrxck/telegram-bot-lua">https://github.com/wrxck/telegram-bot-lua</a></p>
|
||||
<li>
|
||||
<p>Lua. <strong>telegram-bot-lua</strong>. A feature-filled Telegram Bot API library.
|
||||
<a href="https://github.com/wrxck/telegram-bot-lua">https://github.com/wrxck/telegram-bot-lua</a></p>
|
||||
</li>
|
||||
<li><p>OCaml. <strong>TelegraML</strong>. An OCaml library for creating bots for Telegram.<br><a href="https://github.com/nv-vn/TelegraML">https://github.com/nv-vn/TelegraML</a></p>
|
||||
<li>
|
||||
<p>OCaml. <strong>TelegraML</strong>. An OCaml library for creating bots for Telegram.
|
||||
<a href="https://github.com/nv-vn/TelegraML">https://github.com/nv-vn/TelegraML</a></p>
|
||||
</li>
|
||||
<li><p>Haskell. <strong>haskell-telegram-api</strong> High-level bindings to the Telegram Bot API based on <a href="https://haskell-servant.github.io/">servant</a> library.<br><a href="https://github.com/klappvisor/haskell-telegram-api">https://github.com/klappvisor/haskell-telegram-api</a></p>
|
||||
<li>
|
||||
<p>Haskell. <strong>haskell-telegram-api</strong> High-level bindings to the Telegram Bot API based on <a href="https://haskell-servant.github.io/">servant</a> library.
|
||||
<a href="https://github.com/klappvisor/haskell-telegram-api">https://github.com/klappvisor/haskell-telegram-api</a></p>
|
||||
</li>
|
||||
<li><p>Scala. <strong>canoe</strong>. Functional Telegram Bot API for Scala.<br><a href="https://github.com/augustjune/canoe">https://github.com/augustjune/canoe</a></p>
|
||||
<li>
|
||||
<p>Scala. <strong>canoe</strong>. Functional Telegram Bot API for Scala.
|
||||
<a href="https://github.com/augustjune/canoe">https://github.com/augustjune/canoe</a></p>
|
||||
</li>
|
||||
<li><p>Scala. <strong>bot4s.telegram</strong>. 100% idiomatic Scala wrapper for the Telegram Bot API.<br><a href="https://github.com/bot4s/telegram">https://github.com/bot4s/telegram</a></p>
|
||||
<li>
|
||||
<p>Scala. <strong>bot4s.telegram</strong>. 100% idiomatic Scala wrapper for the Telegram Bot API.
|
||||
<a href="https://github.com/bot4s/telegram">https://github.com/bot4s/telegram</a></p>
|
||||
</li>
|
||||
<li><p>Perl. <strong>Telegram Bot</strong>. A genuine Perl 6 client for the Telegram's Bot API.<br><a href="https://github.com/GildedHonour/TelegramBot">https://github.com/GildedHonour/TelegramBot</a></p>
|
||||
<li>
|
||||
<p>Perl. <strong>Telegram Bot</strong>. A genuine Perl 6 client for the Telegram's Bot API.
|
||||
<a href="https://github.com/GildedHonour/TelegramBot">https://github.com/GildedHonour/TelegramBot</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -42,33 +42,33 @@ If you have questions, try our FAQ or check out this…">
|
|||
<h1 id="dev_page_title">Hellobot</h1>
|
||||
|
||||
<div id="dev_page_content"><blockquote>
|
||||
<p>This sample PHP bot demonstrates the basics of the <a href="/bots/api">Telegram Bot API</a>.<br>If you have questions, try our <a href="/bots/faq">FAQ</a> or check out <a href="/bots/samples">this page</a> for more examples.</p>
|
||||
<p>This sample PHP bot demonstrates the basics of the <a href="/bots/api">Telegram Bot API</a>.
|
||||
If you have questions, try our <a href="/bots/faq">FAQ</a> or check out <a href="/bots/samples">this page</a> for more examples.</p>
|
||||
</blockquote>
|
||||
<div><br></div>
|
||||
|
||||
<pre><code><?php
|
||||
|
||||
define('BOT_TOKEN', '12345678:replace-me-with-real-token');
|
||||
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
|
||||
define('BOT_TOKEN', '12345678:replace-me-with-real-token');
|
||||
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
|
||||
|
||||
function apiRequestWebhook($method, $parameters) {
|
||||
if (!is_string($method)) {
|
||||
error_log("Method name must be a string\n");
|
||||
error_log("Method name must be a string\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$parameters) {
|
||||
$parameters = array();
|
||||
} else if (!is_array($parameters)) {
|
||||
error_log("Parameters must be an array\n");
|
||||
error_log("Parameters must be an array\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
$parameters["method"] = $method;
|
||||
$parameters["method"] = $method;
|
||||
|
||||
$payload = json_encode($parameters);
|
||||
header('Content-Type: application/json');
|
||||
header('Content-Length: '.strlen($payload));
|
||||
header('Content-Type: application/json');
|
||||
header('Content-Length: '.strlen($payload));
|
||||
echo $payload;
|
||||
|
||||
return true;
|
||||
|
@ -80,7 +80,7 @@ function exec_curl_request($handle) {
|
|||
if ($response === false) {
|
||||
$errno = curl_errno($handle);
|
||||
$error = curl_error($handle);
|
||||
error_log("Curl returned error $errno: $error\n");
|
||||
error_log("Curl returned error $errno: $error\n");
|
||||
curl_close($handle);
|
||||
return false;
|
||||
}
|
||||
|
@ -94,17 +94,17 @@ function exec_curl_request($handle) {
|
|||
return false;
|
||||
} else if ($http_code != 200) {
|
||||
$response = json_decode($response, true);
|
||||
error_log("Request has failed with error {$response['error_code']}: {$response['description']}\n");
|
||||
error_log("Request has failed with error {$response['error_code']}: {$response['description']}\n");
|
||||
if ($http_code == 401) {
|
||||
throw new Exception('Invalid access token provided');
|
||||
throw new Exception('Invalid access token provided');
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
$response = json_decode($response, true);
|
||||
if (isset($response['description'])) {
|
||||
error_log("Request was successful: {$response['description']}\n");
|
||||
if (isset($response['description'])) {
|
||||
error_log("Request was successful: {$response['description']}\n");
|
||||
}
|
||||
$response = $response['result'];
|
||||
$response = $response['result'];
|
||||
}
|
||||
|
||||
return $response;
|
||||
|
@ -112,14 +112,14 @@ function exec_curl_request($handle) {
|
|||
|
||||
function apiRequest($method, $parameters) {
|
||||
if (!is_string($method)) {
|
||||
error_log("Method name must be a string\n");
|
||||
error_log("Method name must be a string\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$parameters) {
|
||||
$parameters = array();
|
||||
} else if (!is_array($parameters)) {
|
||||
error_log("Parameters must be an array\n");
|
||||
error_log("Parameters must be an array\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,7 @@ function apiRequest($method, $parameters) {
|
|||
$val = json_encode($val);
|
||||
}
|
||||
}
|
||||
$url = API_URL.$method.'?'.http_build_query($parameters);
|
||||
$url = API_URL.$method.'?'.http_build_query($parameters);
|
||||
|
||||
$handle = curl_init($url);
|
||||
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
|
||||
|
@ -141,18 +141,18 @@ function apiRequest($method, $parameters) {
|
|||
|
||||
function apiRequestJson($method, $parameters) {
|
||||
if (!is_string($method)) {
|
||||
error_log("Method name must be a string\n");
|
||||
error_log("Method name must be a string\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$parameters) {
|
||||
$parameters = array();
|
||||
} else if (!is_array($parameters)) {
|
||||
error_log("Parameters must be an array\n");
|
||||
error_log("Parameters must be an array\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
$parameters["method"] = $method;
|
||||
$parameters["method"] = $method;
|
||||
|
||||
$handle = curl_init(API_URL);
|
||||
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
|
||||
|
@ -160,47 +160,47 @@ function apiRequestJson($method, $parameters) {
|
|||
curl_setopt($handle, CURLOPT_TIMEOUT, 60);
|
||||
curl_setopt($handle, CURLOPT_POST, true);
|
||||
curl_setopt($handle, CURLOPT_POSTFIELDS, json_encode($parameters));
|
||||
curl_setopt($handle, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
|
||||
curl_setopt($handle, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
|
||||
|
||||
return exec_curl_request($handle);
|
||||
}
|
||||
|
||||
function processMessage($message) {
|
||||
// process incoming message
|
||||
$message_id = $message['message_id'];
|
||||
$chat_id = $message['chat']['id'];
|
||||
if (isset($message['text'])) {
|
||||
$message_id = $message['message_id'];
|
||||
$chat_id = $message['chat']['id'];
|
||||
if (isset($message['text'])) {
|
||||
// incoming text message
|
||||
$text = $message['text'];
|
||||
$text = $message['text'];
|
||||
|
||||
if (strpos($text, "/start") === 0) {
|
||||
apiRequestJson("sendMessage", array('chat_id' => $chat_id, "text" => 'Hello', 'reply_markup' => array(
|
||||
'keyboard' => array(array('Hello', 'Hi')),
|
||||
'one_time_keyboard' => true,
|
||||
'resize_keyboard' => true)));
|
||||
} else if ($text === "Hello" || $text === "Hi") {
|
||||
apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Nice to meet you'));
|
||||
} else if (strpos($text, "/stop") === 0) {
|
||||
if (strpos($text, "/start") === 0) {
|
||||
apiRequestJson("sendMessage", array('chat_id' => $chat_id, "text" => 'Hello', 'reply_markup' => array(
|
||||
'keyboard' => array(array('Hello', 'Hi')),
|
||||
'one_time_keyboard' => true,
|
||||
'resize_keyboard' => true)));
|
||||
} else if ($text === "Hello" || $text === "Hi") {
|
||||
apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Nice to meet you'));
|
||||
} else if (strpos($text, "/stop") === 0) {
|
||||
// stop now
|
||||
} else {
|
||||
apiRequestWebhook("sendMessage", array('chat_id' => $chat_id, "reply_to_message_id" => $message_id, "text" => 'Cool'));
|
||||
apiRequestWebhook("sendMessage", array('chat_id' => $chat_id, "reply_to_message_id" => $message_id, "text" => 'Cool'));
|
||||
}
|
||||
} else {
|
||||
apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'I understand only text messages'));
|
||||
apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'I understand only text messages'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
define('WEBHOOK_URL', 'https://my-site.example.com/secret-path-for-webhooks/');
|
||||
define('WEBHOOK_URL', 'https://my-site.example.com/secret-path-for-webhooks/');
|
||||
|
||||
if (php_sapi_name() == 'cli') {
|
||||
if (php_sapi_name() == 'cli') {
|
||||
// if run from console, set or delete webhook
|
||||
apiRequest('setWebhook', array('url' => isset($argv[1]) && $argv[1] == 'delete' ? '' : WEBHOOK_URL));
|
||||
apiRequest('setWebhook', array('url' => isset($argv[1]) && $argv[1] == 'delete' ? '' : WEBHOOK_URL));
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
$content = file_get_contents("php://input");
|
||||
$content = file_get_contents("php://input");
|
||||
$update = json_decode($content, true);
|
||||
|
||||
if (!$update) {
|
||||
|
@ -208,10 +208,9 @@ if (!$update) {
|
|||
exit;
|
||||
}
|
||||
|
||||
if (isset($update["message"])) {
|
||||
processMessage($update["message"]);
|
||||
}</code></pre>
|
||||
</div>
|
||||
if (isset($update["message"])) {
|
||||
processMessage($update["message"]);
|
||||
}</code></pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,34 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>account.chatThemes</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
hash
|
||||
int
|
||||
|
||||
themes
|
||||
Vector<ChatTheme>
|
||||
|
||||
Type
|
||||
account.ChatThemes">
|
||||
<meta property="og:title" content="account.chatThemes">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
hash
|
||||
int
|
||||
|
||||
themes
|
||||
Vector<ChatTheme>
|
||||
|
||||
Type
|
||||
account.ChatThemes">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +58,46 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/account.chatThemes" >account.chatThemes</a></li></ul></div>
|
||||
<h1 id="dev_page_title">account.chatThemes</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/account.chatThemes" class="current_page_link" >account.chatThemes</a>#fe4cbebd hash:<a href="/type/int" >int</a> themes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChatTheme" >ChatTheme</a>> = <a href="/type/account.ChatThemes" >account.ChatThemes</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>themes</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/ChatTheme">ChatTheme</a>></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/account.ChatThemes">account.ChatThemes</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,18 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>account.chatThemesNotModified</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
account.ChatThemes">
|
||||
<meta property="og:title" content="account.chatThemesNotModified">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
account.ChatThemes">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +42,26 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/account.chatThemesNotModified" >account.chatThemesNotModified</a></li></ul></div>
|
||||
<h1 id="dev_page_title">account.chatThemesNotModified</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/account.chatThemesNotModified" class="current_page_link" >account.chatThemesNotModified</a>#e011e1c4 = <a href="/type/account.ChatThemes" >account.ChatThemes</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<p>This constructor does not require any parameters.</p>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/account.ChatThemes">account.ChatThemes</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -123,6 +123,11 @@
|
|||
<td style="text-align: center;"><a href="/type/bytes">bytes</a></td>
|
||||
<td>Secure random string</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>pending_reset_date</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
|
@ -131,8 +136,7 @@
|
|||
<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4>
|
||||
<h4><a class="anchor" href="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4>
|
||||
<p>How to login to a user's account if they have enabled 2FA, how to change password.</p>
|
||||
<h4><a class="anchor" href="#pattern-matching" id="pattern-matching" name="pattern-matching"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern matching</a></h4>
|
||||
<p>Some methods require the client to verify if the data obtained from an external source matches a certain pattern.</p></div>
|
||||
<h4><a class="anchor" href="#pattern" id="pattern" name="pattern"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern</a></h4></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -78,8 +78,7 @@
|
|||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/account.SentEmailCode">account.SentEmailCode</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pattern-matching" id="pattern-matching" name="pattern-matching"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern matching</a></h4>
|
||||
<p>Some methods require the client to verify if the data obtained from an external source matches a certain pattern.</p></div>
|
||||
<h4><a class="anchor" href="#pattern" id="pattern" name="pattern"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern</a></h4></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>current user identifier</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -73,8 +73,7 @@
|
|||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/auth.PasswordRecovery">auth.PasswordRecovery</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pattern-matching" id="pattern-matching" name="pattern-matching"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern matching</a></h4>
|
||||
<p>Some methods require the client to verify if the data obtained from an external source matches a certain pattern.</p>
|
||||
<h4><a class="anchor" href="#pattern" id="pattern" name="pattern"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern</a></h4>
|
||||
<h4><a class="anchor" href="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4>
|
||||
<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div>
|
||||
|
||||
|
|
|
@ -73,8 +73,7 @@
|
|||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/auth.SentCodeType">auth.SentCodeType</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pattern-matching" id="pattern-matching" name="pattern-matching"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern matching</a></h4>
|
||||
<p>Some methods require the client to verify if the data obtained from an external source matches a certain pattern.</p></div>
|
||||
<h4><a class="anchor" href="#pattern" id="pattern" name="pattern"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern</a></h4></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,18 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>botCommandScopeChatAdmins</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
BotCommandScope">
|
||||
<meta property="og:title" content="botCommandScopeChatAdmins">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
BotCommandScope">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +42,26 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/botCommandScopeChatAdmins" >botCommandScopeChatAdmins</a></li></ul></div>
|
||||
<h1 id="dev_page_title">botCommandScopeChatAdmins</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/botCommandScopeChatAdmins" class="current_page_link" >botCommandScopeChatAdmins</a>#b9aa606a = <a href="/type/BotCommandScope" >BotCommandScope</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<p>This constructor does not require any parameters.</p>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/BotCommandScope">BotCommandScope</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,18 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>botCommandScopeChats</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
BotCommandScope">
|
||||
<meta property="og:title" content="botCommandScopeChats">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
BotCommandScope">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +42,26 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/botCommandScopeChats" >botCommandScopeChats</a></li></ul></div>
|
||||
<h1 id="dev_page_title">botCommandScopeChats</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/botCommandScopeChats" class="current_page_link" >botCommandScopeChats</a>#6fe1a881 = <a href="/type/BotCommandScope" >BotCommandScope</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<p>This constructor does not require any parameters.</p>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/BotCommandScope">BotCommandScope</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>botCommandScopePeer</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
peer
|
||||
InputPeer
|
||||
|
||||
Type
|
||||
BotCommandScope">
|
||||
<meta property="og:title" content="botCommandScopePeer">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
peer
|
||||
InputPeer
|
||||
|
||||
Type
|
||||
BotCommandScope">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +52,41 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/botCommandScopePeer" >botCommandScopePeer</a></li></ul></div>
|
||||
<h1 id="dev_page_title">botCommandScopePeer</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/botCommandScopePeer" class="current_page_link" >botCommandScopePeer</a>#db9d897d peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/BotCommandScope" >BotCommandScope</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>peer</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/BotCommandScope">BotCommandScope</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>botCommandScopePeerAdmins</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
peer
|
||||
InputPeer
|
||||
|
||||
Type
|
||||
BotCommandScope">
|
||||
<meta property="og:title" content="botCommandScopePeerAdmins">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
peer
|
||||
InputPeer
|
||||
|
||||
Type
|
||||
BotCommandScope">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +52,41 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/botCommandScopePeerAdmins" >botCommandScopePeerAdmins</a></li></ul></div>
|
||||
<h1 id="dev_page_title">botCommandScopePeerAdmins</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/botCommandScopePeerAdmins" class="current_page_link" >botCommandScopePeerAdmins</a>#3fd863d1 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/BotCommandScope" >BotCommandScope</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>peer</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/BotCommandScope">BotCommandScope</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,18 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>botCommandScopeUsers</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
BotCommandScope">
|
||||
<meta property="og:title" content="botCommandScopeUsers">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
BotCommandScope">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +42,26 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/botCommandScopeUsers" >botCommandScopeUsers</a></li></ul></div>
|
||||
<h1 id="dev_page_title">botCommandScopeUsers</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/botCommandScopeUsers" class="current_page_link" >botCommandScopeUsers</a>#3c4f04d8 = <a href="/type/BotCommandScope" >BotCommandScope</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<p>This constructor does not require any parameters.</p>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/BotCommandScope">BotCommandScope</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -129,8 +129,28 @@
|
|||
<td>Whether slow mode is enabled for groups to prevent flood in chat</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>call_active</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>call_not_empty</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>fake</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>gigagroup</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.26?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>ID of the channel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -159,11 +179,6 @@
|
|||
<td>Date when the user joined the supergroup/channel, or if the user isn't a member, its creation date</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>version</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td>Version of the channel (always <code>0</code>)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>restriction_reason</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.9?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>></td>
|
||||
<td>Contains the reason why access to this channel must be restricted.</td>
|
||||
|
|
|
@ -2,12 +2,34 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>channelAdminLogEventActionChangeHistoryTTL</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
prev_value
|
||||
int
|
||||
|
||||
new_value
|
||||
int
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<meta property="og:title" content="channelAdminLogEventActionChangeHistoryTTL">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
prev_value
|
||||
int
|
||||
|
||||
new_value
|
||||
int
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +58,46 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionChangeHistoryTTL" >channelAdminLogEventActionChangeHistoryTTL</a></li></ul></div>
|
||||
<h1 id="dev_page_title">channelAdminLogEventActionChangeHistoryTTL</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionChangeHistoryTTL" class="current_page_link" >channelAdminLogEventActionChangeHistoryTTL</a>#6e941a38 prev_value:<a href="/type/int" >int</a> new_value:<a href="/type/int" >int</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>prev_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>new_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -65,12 +65,12 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>prev_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Previous linked chat</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>new_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>New linked chat</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -2,12 +2,34 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>channelAdminLogEventActionChangeTheme</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
prev_value
|
||||
string
|
||||
|
||||
new_value
|
||||
string
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<meta property="og:title" content="channelAdminLogEventActionChangeTheme">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
prev_value
|
||||
string
|
||||
|
||||
new_value
|
||||
string
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +58,46 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionChangeTheme" >channelAdminLogEventActionChangeTheme</a></li></ul></div>
|
||||
<h1 id="dev_page_title">channelAdminLogEventActionChangeTheme</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionChangeTheme" class="current_page_link" >channelAdminLogEventActionChangeTheme</a>#fe69018d prev_value:<a href="/type/string" >string</a> new_value:<a href="/type/string" >string</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>prev_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/string">string</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>new_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/string">string</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>channelAdminLogEventActionDiscardGroupCall</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
call
|
||||
InputGroupCall
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<meta property="og:title" content="channelAdminLogEventActionDiscardGroupCall">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
call
|
||||
InputGroupCall
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +52,41 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionDiscardGroupCall" >channelAdminLogEventActionDiscardGroupCall</a></li></ul></div>
|
||||
<h1 id="dev_page_title">channelAdminLogEventActionDiscardGroupCall</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionDiscardGroupCall" class="current_page_link" >channelAdminLogEventActionDiscardGroupCall</a>#db9f9140 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>call</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/InputGroupCall">InputGroupCall</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>channelAdminLogEventActionParticipantMute</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
participant
|
||||
GroupCallParticipant
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<meta property="og:title" content="channelAdminLogEventActionParticipantMute">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
participant
|
||||
GroupCallParticipant
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +52,41 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionParticipantMute" >channelAdminLogEventActionParticipantMute</a></li></ul></div>
|
||||
<h1 id="dev_page_title">channelAdminLogEventActionParticipantMute</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionParticipantMute" class="current_page_link" >channelAdminLogEventActionParticipantMute</a>#f92424d2 participant:<a href="/type/GroupCallParticipant" >GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>participant</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/GroupCallParticipant">GroupCallParticipant</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>channelAdminLogEventActionParticipantUnmute</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
participant
|
||||
GroupCallParticipant
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<meta property="og:title" content="channelAdminLogEventActionParticipantUnmute">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
participant
|
||||
GroupCallParticipant
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +52,41 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionParticipantUnmute" >channelAdminLogEventActionParticipantUnmute</a></li></ul></div>
|
||||
<h1 id="dev_page_title">channelAdminLogEventActionParticipantUnmute</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionParticipantUnmute" class="current_page_link" >channelAdminLogEventActionParticipantUnmute</a>#e64429c0 participant:<a href="/type/GroupCallParticipant" >GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>participant</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/GroupCallParticipant">GroupCallParticipant</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>channelAdminLogEventActionParticipantVolume</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
participant
|
||||
GroupCallParticipant
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<meta property="og:title" content="channelAdminLogEventActionParticipantVolume">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
participant
|
||||
GroupCallParticipant
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +52,41 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionParticipantVolume" >channelAdminLogEventActionParticipantVolume</a></li></ul></div>
|
||||
<h1 id="dev_page_title">channelAdminLogEventActionParticipantVolume</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionParticipantVolume" class="current_page_link" >channelAdminLogEventActionParticipantVolume</a>#3e7f6847 participant:<a href="/type/GroupCallParticipant" >GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>participant</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/GroupCallParticipant">GroupCallParticipant</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>channelAdminLogEventActionStartGroupCall</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
call
|
||||
InputGroupCall
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<meta property="og:title" content="channelAdminLogEventActionStartGroupCall">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
call
|
||||
InputGroupCall
|
||||
|
||||
Type
|
||||
ChannelAdminLogEventAction">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +52,41 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionStartGroupCall" >channelAdminLogEventActionStartGroupCall</a></li></ul></div>
|
||||
<h1 id="dev_page_title">channelAdminLogEventActionStartGroupCall</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionStartGroupCall" class="current_page_link" >channelAdminLogEventActionStartGroupCall</a>#23209745 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>call</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/InputGroupCall">InputGroupCall</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -138,6 +138,16 @@
|
|||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.13?<a href="/constructor/true">true</a></td>
|
||||
<td><a href="/constructor/channelAdminLogEventActionDeleteMessage">Message deletion events</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>group_call</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>invites</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>ID of the channel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -170,7 +170,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>exported_invite</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/ExportedChatInvite">ExportedChatInvite</a></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/type/ExportedChatInvite">ExportedChatInvite</a></td>
|
||||
<td>Invite link</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -180,7 +180,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>migrated_from_chat_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/long">long</a></td>
|
||||
<td>The chat ID from which this group was <a href="/api/channel">migrated</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -210,7 +210,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>linked_chat_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/long">long</a></td>
|
||||
<td>ID of the linked <a href="/api/discussion">discussion chat</a> for channels</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -238,6 +238,31 @@
|
|||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td>Latest <a href="/api/updates">PTS</a> for this channel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>call</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.21?<a href="/type/InputGroupCall">InputGroupCall</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>ttl_period</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>pending_suggestions</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/type/Vector%20t">Vector</a><<a href="/type/string">string</a>></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>groupcall_default_join_as</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.26?<a href="/type/Peer">Peer</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>theme_emoticon</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.27?<a href="/type/string">string</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Pariticipant user ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -80,17 +80,17 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Admin user ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>inviter_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/long">long</a></td>
|
||||
<td>User that invited the admin to the channel/group</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>promoted_by</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User that promoted the user to admin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -74,13 +74,13 @@
|
|||
<td>Whether the user has left the group</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td>User ID</td>
|
||||
<td><strong>peer</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>kicked_by</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User was kicked by the specified admin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -64,9 +64,9 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td>User ID</td>
|
||||
<td><strong>peer</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -65,12 +65,12 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>inviter_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User that invited me to the channel/supergroup</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -69,6 +69,11 @@
|
|||
<td>The channel participant</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>chats</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>users</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td>
|
||||
<td>Users</td>
|
||||
|
|
|
@ -74,6 +74,11 @@
|
|||
<td>Participants</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>chats</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>users</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td>
|
||||
<td>Users mentioned in participant info</td>
|
||||
|
|
|
@ -89,8 +89,18 @@
|
|||
<td>Whether the group was <a href="/api/channel">migrated</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>call_active</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>call_not_empty</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>ID of the group</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -113,6 +113,16 @@
|
|||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/constructor/true">true</a></td>
|
||||
<td>Whether this admin is anonymous</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>manage_call</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>other</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.12?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
|
|
|
@ -2,12 +2,40 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>chatAdminWithInvites</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
admin_id
|
||||
long
|
||||
|
||||
invites_count
|
||||
int
|
||||
|
||||
revoked_invites_count
|
||||
int
|
||||
|
||||
Type
|
||||
ChatAdminWithInvites">
|
||||
<meta property="og:title" content="chatAdminWithInvites">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
admin_id
|
||||
long
|
||||
|
||||
invites_count
|
||||
int
|
||||
|
||||
revoked_invites_count
|
||||
int
|
||||
|
||||
Type
|
||||
ChatAdminWithInvites">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +64,51 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/chatAdminWithInvites" >chatAdminWithInvites</a></li></ul></div>
|
||||
<h1 id="dev_page_title">chatAdminWithInvites</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/chatAdminWithInvites" class="current_page_link" >chatAdminWithInvites</a>#f2ecef23 admin_id:<a href="/type/long" >long</a> invites_count:<a href="/type/int" >int</a> revoked_invites_count:<a href="/type/int" >int</a> = <a href="/type/ChatAdminWithInvites" >ChatAdminWithInvites</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>admin_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>invites_count</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>revoked_invites_count</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/ChatAdminWithInvites">ChatAdminWithInvites</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Group identifier</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User identifier</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -64,10 +64,55 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>flags</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/%23">#</a></td>
|
||||
<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>revoked</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>permanent</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>link</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/string">string</a></td>
|
||||
<td>Chat invitation link</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>admin_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>date</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>start_date</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>expire_date</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>usage_limit</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>usage</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
|
|
|
@ -65,12 +65,12 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>ID of a group member that is admin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>inviter_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>ID of the user that added the member to the group</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>chat_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Group ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -74,14 +74,14 @@
|
|||
<td>Whether the user has an animated profile picture</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>photo_small</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/FileLocation">FileLocation</a></td>
|
||||
<td>Location of the file corresponding to the small thumbnail for group profile photo</td>
|
||||
<td><strong>photo_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>photo_big</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/FileLocation">FileLocation</a></td>
|
||||
<td>Location of the file corresponding to the small thumbnail for group profile photo</td>
|
||||
<td><strong>stripped_thumb</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/bytes">bytes</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>dc_id</strong></td>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User identifier</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User identifier</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -80,12 +80,12 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>admin_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Chat creator ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>participant_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>ID of the second chat participant</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -64,6 +64,16 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>flags</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/%23">#</a></td>
|
||||
<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>history_deleted</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td>Chat ID</td>
|
||||
|
|
|
@ -90,12 +90,12 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>admin_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Chat creator ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>participant_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>ID of second chat participant</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -2,12 +2,32 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>groupCall</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
join_muted
|
||||
flags.1?true
|
||||
|
||||
can_change_join_muted…">
|
||||
<meta property="og:title" content="groupCall">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
join_muted
|
||||
flags.1?true
|
||||
|
||||
can_change_join_muted…">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +56,121 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/groupCall" >groupCall</a></li></ul></div>
|
||||
<h1 id="dev_page_title">groupCall</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/groupCall" class="current_page_link" >groupCall</a>#d597650c flags:<a href="/type/%23" >#</a> join_muted:flags.1?true can_change_join_muted:flags.2?true join_date_asc:flags.6?true schedule_start_subscribed:flags.8?true can_start_video:flags.9?true record_video_active:flags.11?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> participants_count:<a href="/type/int" >int</a> title:flags.3?<a href="/type/string" >string</a> stream_dc_id:flags.4?<a href="/type/int" >int</a> record_start_date:flags.5?<a href="/type/int" >int</a> schedule_date:flags.7?<a href="/type/int" >int</a> unmuted_video_count:flags.10?<a href="/type/int" >int</a> unmuted_video_limit:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> = <a href="/type/GroupCall" >GroupCall</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>flags</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/%23">#</a></td>
|
||||
<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>join_muted</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>can_change_join_muted</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>join_date_asc</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>schedule_start_subscribed</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>can_start_video</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.9?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>record_video_active</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>access_hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>participants_count</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>title</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>stream_dc_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>record_start_date</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>schedule_date</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>unmuted_video_count</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>unmuted_video_limit</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>version</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/GroupCall">GroupCall</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,38 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>groupCallParticipant</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
muted
|
||||
flags.0?true
|
||||
|
||||
left
|
||||
flags.1?true
|
||||
|
||||
can_self_unmute…">
|
||||
<meta property="og:title" content="groupCallParticipant">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
muted
|
||||
flags.0?true
|
||||
|
||||
left
|
||||
flags.1?true
|
||||
|
||||
can_self_unmute…">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +62,136 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/groupCallParticipant" >groupCallParticipant</a></li></ul></div>
|
||||
<h1 id="dev_page_title">groupCallParticipant</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/groupCallParticipant" class="current_page_link" >groupCallParticipant</a>#eba636fe flags:<a href="/type/%23" >#</a> muted:flags.0?true left:flags.1?true can_self_unmute:flags.2?true just_joined:flags.4?true versioned:flags.5?true min:flags.8?true muted_by_you:flags.9?true volume_by_admin:flags.10?true self:flags.12?true video_joined:flags.15?true peer:<a href="/type/Peer" >Peer</a> date:<a href="/type/int" >int</a> active_date:flags.3?<a href="/type/int" >int</a> source:<a href="/type/int" >int</a> volume:flags.7?<a href="/type/int" >int</a> about:flags.11?<a href="/type/string" >string</a> raise_hand_rating:flags.13?<a href="/type/long" >long</a> video:flags.6?<a href="/type/GroupCallParticipantVideo" >GroupCallParticipantVideo</a> presentation:flags.14?<a href="/type/GroupCallParticipantVideo" >GroupCallParticipantVideo</a> = <a href="/type/GroupCallParticipant" >GroupCallParticipant</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>flags</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/%23">#</a></td>
|
||||
<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>muted</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>left</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>can_self_unmute</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>just_joined</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>versioned</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>min</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>muted_by_you</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.9?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>volume_by_admin</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>self</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.12?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>video_joined</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>peer</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>date</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>active_date</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>source</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>volume</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>about</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/type/string">string</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>raise_hand_rating</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.13?<a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>video</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/GroupCallParticipantVideo">GroupCallParticipantVideo</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>presentation</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/GroupCallParticipantVideo">GroupCallParticipantVideo</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/GroupCallParticipant">GroupCallParticipant</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -103,6 +103,11 @@
|
|||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td>
|
||||
<td>Application download URL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>sticker</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Document">Document</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User identifier</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -2,12 +2,18 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>inlineQueryPeerTypeBroadcast</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
InlineQueryPeerType">
|
||||
<meta property="og:title" content="inlineQueryPeerTypeBroadcast">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
InlineQueryPeerType">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +42,26 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inlineQueryPeerTypeBroadcast" >inlineQueryPeerTypeBroadcast</a></li></ul></div>
|
||||
<h1 id="dev_page_title">inlineQueryPeerTypeBroadcast</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/inlineQueryPeerTypeBroadcast" class="current_page_link" >inlineQueryPeerTypeBroadcast</a>#6334ee9a = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<p>This constructor does not require any parameters.</p>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InlineQueryPeerType">InlineQueryPeerType</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,18 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>inlineQueryPeerTypeMegagroup</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
InlineQueryPeerType">
|
||||
<meta property="og:title" content="inlineQueryPeerTypeMegagroup">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
This constructor does not require any parameters.
|
||||
Type
|
||||
InlineQueryPeerType">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +42,26 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inlineQueryPeerTypeMegagroup" >inlineQueryPeerTypeMegagroup</a></li></ul></div>
|
||||
<h1 id="dev_page_title">inlineQueryPeerTypeMegagroup</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/inlineQueryPeerTypeMegagroup" class="current_page_link" >inlineQueryPeerTypeMegagroup</a>#5ec4be43 = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<p>This constructor does not require any parameters.</p>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InlineQueryPeerType">InlineQueryPeerType</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,46 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>inputBotInlineMessageID64</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
dc_id
|
||||
int
|
||||
|
||||
owner_id
|
||||
long
|
||||
|
||||
id
|
||||
int
|
||||
|
||||
access_hash
|
||||
long
|
||||
|
||||
Type
|
||||
InputBotInlineMessageID">
|
||||
<meta property="og:title" content="inputBotInlineMessageID64">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
dc_id
|
||||
int
|
||||
|
||||
owner_id
|
||||
long
|
||||
|
||||
id
|
||||
int
|
||||
|
||||
access_hash
|
||||
long
|
||||
|
||||
Type
|
||||
InputBotInlineMessageID">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +70,56 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputBotInlineMessageID64" >inputBotInlineMessageID64</a></li></ul></div>
|
||||
<h1 id="dev_page_title">inputBotInlineMessageID64</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/inputBotInlineMessageID64" class="current_page_link" >inputBotInlineMessageID64</a>#b6d915d7 dc_id:<a href="/type/int" >int</a> owner_id:<a href="/type/long" >long</a> id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>dc_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>owner_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>access_hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InputBotInlineMessageID">InputBotInlineMessageID</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>channel_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Channel ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>channel_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>The channel ID</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -2,12 +2,34 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>inputGroupCall</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
id
|
||||
long
|
||||
|
||||
access_hash
|
||||
long
|
||||
|
||||
Type
|
||||
InputGroupCall">
|
||||
<meta property="og:title" content="inputGroupCall">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
id
|
||||
long
|
||||
|
||||
access_hash
|
||||
long
|
||||
|
||||
Type
|
||||
InputGroupCall">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +58,46 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputGroupCall" >inputGroupCall</a></li></ul></div>
|
||||
<h1 id="dev_page_title">inputGroupCall</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/inputGroupCall" class="current_page_link" >inputGroupCall</a>#d8aa840f id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputGroupCall" >InputGroupCall</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>access_hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InputGroupCall">InputGroupCall</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,40 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>inputGroupCallStream</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
call
|
||||
InputGroupCall
|
||||
|
||||
time_ms
|
||||
long
|
||||
|
||||
scale
|
||||
int…">
|
||||
<meta property="og:title" content="inputGroupCallStream">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
call
|
||||
InputGroupCall
|
||||
|
||||
time_ms
|
||||
long
|
||||
|
||||
scale
|
||||
int…">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +64,66 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputGroupCallStream" >inputGroupCallStream</a></li></ul></div>
|
||||
<h1 id="dev_page_title">inputGroupCallStream</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/inputGroupCallStream" class="current_page_link" >inputGroupCallStream</a>#598a92a flags:<a href="/type/%23" >#</a> call:<a href="/type/InputGroupCall" >InputGroupCall</a> time_ms:<a href="/type/long" >long</a> scale:<a href="/type/int" >int</a> video_channel:flags.0?<a href="/type/int" >int</a> video_quality:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>flags</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/%23">#</a></td>
|
||||
<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>call</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/InputGroupCall">InputGroupCall</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>time_ms</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>scale</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>video_channel</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> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>video_quality</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> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InputFileLocation">InputFileLocation</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
<html class="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page not found</title>
|
||||
<title>inputPaymentCredentialsGooglePay</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="">
|
||||
<meta property="og:title" content="Page not found">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
payment_token
|
||||
DataJSON
|
||||
|
||||
Type
|
||||
InputPaymentCredentials">
|
||||
<meta property="og:title" content="inputPaymentCredentialsGooglePay">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
payment_token
|
||||
DataJSON
|
||||
|
||||
Type
|
||||
InputPaymentCredentials">
|
||||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||||
|
||||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||||
|
@ -36,10 +52,41 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div>
|
||||
<h1 id="dev_page_title">Page not found</h1>
|
||||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputPaymentCredentialsGooglePay" >inputPaymentCredentialsGooglePay</a></li></ul></div>
|
||||
<h1 id="dev_page_title">inputPaymentCredentialsGooglePay</h1>
|
||||
|
||||
<div id="dev_page_content">The page has not been saved</div>
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Placeholder in reply markup</a></li><li><a href="?layer=131">131 – Reset Password after a week</a></li><li><a href="?layer=132">132 – Choosing sticker action</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="/api/layers">More...</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<pre class="page_scheme"><code><a href="/constructor/inputPaymentCredentialsGooglePay" class="current_page_link" >inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/InputPaymentCredentials" >InputPaymentCredentials</a>;</code></pre></p>
|
||||
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>payment_token</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/DataJSON">DataJSON</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InputPaymentCredentials">InputPaymentCredentials</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>channel_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Channel identifier</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>channel_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>The identifier of the channel that was seen</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>chat_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Chat idientifier</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -79,22 +79,14 @@
|
|||
<td>The peer whose profile picture should be downloaded</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>volume_id</strong></td>
|
||||
<td><strong>photo_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>Volume ID from <a href="/type/FileLocation">FileLocation</a> met in the profile photo container.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>local_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td>Local ID from <a href="/type/FileLocation">FileLocation</a> met in the profile photo container.</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InputFileLocation">InputFileLocation</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#filelocation" id="filelocation" name="filelocation"><i class="anchor-icon"></i></a><a href="/type/FileLocation">FileLocation</a></h4>
|
||||
<p>Indicates the location of a photo, will be deprecated soon</p></div>
|
||||
<p><a href="/type/InputFileLocation">InputFileLocation</a></p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>User identifier</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong>user_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>The identifier of the user that was seen</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong>chats</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td>
|
||||
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></td>
|
||||
<td>Disallowed chat IDs</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue