From 53081518084226af2965399e29288e25939ed8bb Mon Sep 17 00:00:00 2001 From: GitHub Action <github-action@users.noreply.github.com> Date: Tue, 27 Sep 2022 16:39:26 +0000 Subject: [PATCH] Update content of files --- data/web/corefork.telegram.org/api/auth.html | 74 +++++++++++ .../corefork.telegram.org/api/reactions.html | 4 +- .../method/account.emailVerified | 118 ++++++++++++++++++ .../method/account.emailVerifiedLogin | 118 ++++++++++++++++++ 4 files changed, 312 insertions(+), 2 deletions(-) create mode 100644 data/web/corefork.telegram.org/method/account.emailVerified create mode 100644 data/web/corefork.telegram.org/method/account.emailVerifiedLogin diff --git a/data/web/corefork.telegram.org/api/auth.html b/data/web/corefork.telegram.org/api/auth.html index dc98fd53c3..8d44cc3b73 100644 --- a/data/web/corefork.telegram.org/api/auth.html +++ b/data/web/corefork.telegram.org/api/auth.html @@ -62,6 +62,8 @@ If any of the logout tokens matches the account we're trying to login into and t <p>The system will automatically choose how to send the authorization code; there are multiple possible ways the code can arrive:</p> <ul> <li><a href="/constructor/auth.loggedOut">Logout tokens »</a></li> +<li><a href="#email-verification">Email verification »</a>: the code wasn't sent yet, the user should verify an email that will be used to send the login code.</li> +<li><a href="#email-sign-in">Email verification »</a>: the code was sent to the configured login email.</li> <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> @@ -104,6 +106,78 @@ For example, the latter is required in newer versions of android, to use the <a <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="#email-verification" id="email-verification" name="email-verification"><i class="anchor-icon"></i></a>Email verification</h3> +<pre><code><a href='/constructor/auth.sentCodeTypeSetUpEmailRequired'>auth.sentCodeTypeSetUpEmailRequired</a>#a5491dea flags:<a href='/type/%23'>#</a> apple_signin_allowed:flags.0?<a href='/constructor/true'>true</a> google_signin_allowed:flags.1?<a href='/constructor/true'>true</a> = <a href='/type/auth.SentCodeType'>auth.SentCodeType</a>; + +<a href='/constructor/emailVerifyPurposeLoginSetup'>emailVerifyPurposeLoginSetup</a>#4345be73 phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> = <a href='/type/EmailVerifyPurpose'>EmailVerifyPurpose</a>; + +<a href='/constructor/emailVerificationCode'>emailVerificationCode</a>#922e55a9 code:<a href='/type/string'>string</a> = <a href='/type/EmailVerification'>EmailVerification</a>; +<a href='/constructor/emailVerificationGoogle'>emailVerificationGoogle</a>#db909ec2 token:<a href='/type/string'>string</a> = <a href='/type/EmailVerification'>EmailVerification</a>; +<a href='/constructor/emailVerificationApple'>emailVerificationApple</a>#96d074fd token:<a href='/type/string'>string</a> = <a href='/type/EmailVerification'>EmailVerification</a>; + +<a href='/constructor/account.sentEmailCode'>account.sentEmailCode</a>#811f854f email_pattern:<a href='/type/string'>string</a> length:<a href='/type/int'>int</a> = <a href='/type/account.SentEmailCode'>account.SentEmailCode</a>; + +<a href='/constructor/account.emailVerifiedLogin'>account.emailVerifiedLogin</a>#e1bb0d61 email:<a href='/type/string'>string</a> sent_code:<a href='/type/auth.SentCode'>auth.SentCode</a> = <a href='/type/account.EmailVerified'>account.EmailVerified</a>; + +<a href='/constructor/emailVerifyPurposeLoginChange'>emailVerifyPurposeLoginChange</a>#527d22eb = <a href='/type/EmailVerifyPurpose'>EmailVerifyPurpose</a>; +<a href='/constructor/account.emailVerified'>account.emailVerified</a>#2b96cd1b email:<a href='/type/string'>string</a> = <a href='/type/account.EmailVerified'>account.EmailVerified</a>; + +---functions--- + +<a href='/method/account.sendVerifyEmailCode'>account.sendVerifyEmailCode</a>#98e037bb purpose:<a href='/type/EmailVerifyPurpose'>EmailVerifyPurpose</a> email:<a href='/type/string'>string</a> = <a href='/type/account.SentEmailCode'>account.SentEmailCode</a>; +<a href='/method/account.verifyEmail'>account.verifyEmail</a>#32da4cf purpose:<a href='/type/EmailVerifyPurpose'>EmailVerifyPurpose</a> verification:<a href='/type/EmailVerification'>EmailVerification</a> = <a href='/type/account.EmailVerified'>account.EmailVerified</a>;</code></pre> +<p>Telegram may return a <a href="/constructor/auth.sentCodeTypeSetUpEmailRequired">auth.sentCodeTypeSetUpEmailRequired</a> code type in the <a href="/constructor/auth.sentCode">auth.sentCode</a> constructor returned by <a href="/method/auth.sendCode">auth.sendCode</a>.<br> +In this case, clients should ask the user to verify an email address that will be used to receive the login code as follows: </p> +<ul> +<li> +<p>If the <code>google_signin_allowed</code> or <code>apple_signin_allowed</code> flags are set, users can directly verify their email with Google/Apple ID as specified <a href="https://developers.google.com/identity/sign-in/android/sign-in">here (Google ID) »</a> and <a href="https://developer.apple.com/documentation/sign_in_with_apple">here (Apple ID) »</a>.<br> +After obtaining the ID token, call <a href="/method/account.verifyEmail">account.verifyEmail</a>, providing the following parameters:</p> +<ul> +<li><code>purpose</code> - A <a href="/constructor/emailVerifyPurposeLoginSetup">emailVerifyPurposeLoginSetup</a> constructor</li> +<li><code>purpose.phone_number</code> - The phone number used with <a href="/method/auth.sendCode">auth.sendCode</a></li> +<li><code>purpose.phone_code_hash</code> - The phone code hash contained in the <a href="/constructor/auth.sentCode">auth.sentCode</a> constructor returned by <a href="/method/auth.sendCode">auth.sendCode</a></li> +<li><code>verification</code> - <a href="/constructor/emailVerificationGoogle">emailVerificationGoogle</a> or <a href="/constructor/emailVerificationApple">emailVerificationApple</a></li> +<li><code>verification.token</code> - The ID token returned by the Google ID API.</li> +</ul> +<p>On success, the <a href="/method/account.verifyEmail">account.verifyEmail</a> method will return a <a href="/method/account.emailVerifiedLogin">account.emailVerifiedLogin</a> constructor with an <a href="/constructor/auth.sentCode">auth.sentCode</a> constructor that should be handled <a href="#code-types">as usual »</a>. </p> +</li> +<li> +<p>Otherwise, ask the user to enter an email address and then call <a href="/method/account.sendVerifyEmailCode">account.sendVerifyEmailCode</a>, providing the following parameters:</p> +<ul> +<li><code>email</code> - The email address</li> +<li><code>purpose</code> - A <a href="/constructor/emailVerifyPurposeLoginSetup">emailVerifyPurposeLoginSetup</a> constructor</li> +<li><code>purpose.phone_number</code> - The phone number used with <a href="/method/auth.sendCode">auth.sendCode</a></li> +<li><code>purpose.phone_code_hash</code> - The phone code hash contained in the <a href="/constructor/auth.sentCode">auth.sentCode</a> constructor returned by <a href="/method/auth.sendCode">auth.sendCode</a></li> +</ul> +<p>Once the user receives and inputs the verification code, call <a href="/method/account.verifyEmail">account.verifyEmail</a>, providing the following parameters:</p> +<ul> +<li><code>purpose</code> - A <a href="/constructor/emailVerifyPurposeLoginSetup">emailVerifyPurposeLoginSetup</a> constructor</li> +<li><code>purpose.phone_number</code> - The phone number used with <a href="/method/auth.sendCode">auth.sendCode</a></li> +<li><code>purpose.phone_code_hash</code> - The phone code hash contained in the <a href="/constructor/auth.sentCode">auth.sentCode</a> constructor returned by <a href="/method/auth.sendCode">auth.sendCode</a></li> +<li><code>verification</code> - <a href="/constructor/emailVerificationCode">emailVerificationCode</a></li> +<li><code>verification.code</code> - The verification code received by the user.</li> +</ul> +<p>On success, the <a href="/method/account.verifyEmail">account.verifyEmail</a> method will return a <a href="/method/account.emailVerifiedLogin">account.emailVerifiedLogin</a> constructor with an <a href="/constructor/auth.sentCode">auth.sentCode</a> constructor that should be handled <a href="#code-types">as usual »</a>. </p> +</li> +</ul> +<p>To change the login email after login, pass <a href="/constructor/emailVerifyPurposeLoginChange">emailVerifyPurposeLoginChange</a> as <code>purpose</code>, following the exact same Google ID/Apple ID/email code login flow as above: on success, the <a href="/method/account.verifyEmail">account.verifyEmail</a> method will return a <a href="/method/account.emailVerified">account.emailVerified</a> constructor.</p> +<h3><a class="anchor" href="#email-sign-in" id="email-sign-in" name="email-sign-in"><i class="anchor-icon"></i></a>Email sign in</h3> +<pre><code><a href='/constructor/auth.sentCodeTypeEmailCode'>auth.sentCodeTypeEmailCode</a>#5a159841 flags:<a href='/type/%23'>#</a> apple_signin_allowed:flags.0?<a href='/constructor/true'>true</a> google_signin_allowed:flags.1?<a href='/constructor/true'>true</a> email_pattern:<a href='/type/string'>string</a> length:<a href='/type/int'>int</a> next_phone_login_date:flags.2?<a href='/type/int'>int</a> = <a href='/type/auth.SentCodeType'>auth.SentCodeType</a>; + +<a href='/constructor/emailVerifyPurposeLoginSetup'>emailVerifyPurposeLoginSetup</a>#4345be73 phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> = <a href='/type/EmailVerifyPurpose'>EmailVerifyPurpose</a>; +<a href='/constructor/emailVerifyPurposeLoginChange'>emailVerifyPurposeLoginChange</a>#527d22eb = <a href='/type/EmailVerifyPurpose'>EmailVerifyPurpose</a>; + +<a href='/constructor/emailVerificationCode'>emailVerificationCode</a>#922e55a9 code:<a href='/type/string'>string</a> = <a href='/type/EmailVerification'>EmailVerification</a>; +<a href='/constructor/emailVerificationGoogle'>emailVerificationGoogle</a>#db909ec2 token:<a href='/type/string'>string</a> = <a href='/type/EmailVerification'>EmailVerification</a>; +<a href='/constructor/emailVerificationApple'>emailVerificationApple</a>#96d074fd token:<a href='/type/string'>string</a> = <a href='/type/EmailVerification'>EmailVerification</a>; + +<a href='/constructor/account.emailVerified'>account.emailVerified</a>#2b96cd1b email:<a href='/type/string'>string</a> = <a href='/type/account.EmailVerified'>account.EmailVerified</a>; +<a href='/constructor/account.emailVerifiedLogin'>account.emailVerifiedLogin</a>#e1bb0d61 email:<a href='/type/string'>string</a> sent_code:<a href='/type/auth.SentCode'>auth.SentCode</a> = <a href='/type/account.EmailVerified'>account.EmailVerified</a>; + +---functions--- + +<a href='/method/account.sendVerifyEmailCode'>account.sendVerifyEmailCode</a>#98e037bb purpose:<a href='/type/EmailVerifyPurpose'>EmailVerifyPurpose</a> email:<a href='/type/string'>string</a> = <a href='/type/account.SentEmailCode'>account.SentEmailCode</a>; +<a href='/method/account.verifyEmail'>account.verifyEmail</a>#32da4cf purpose:<a href='/type/EmailVerifyPurpose'>EmailVerifyPurpose</a> verification:<a href='/type/EmailVerification'>EmailVerification</a> = <a href='/type/account.EmailVerified'>account.EmailVerified</a>;</code></pre> <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> diff --git a/data/web/corefork.telegram.org/api/reactions.html b/data/web/corefork.telegram.org/api/reactions.html index bae7977076..e1ccb1b74f 100644 --- a/data/web/corefork.telegram.org/api/reactions.html +++ b/data/web/corefork.telegram.org/api/reactions.html @@ -76,10 +76,10 @@ Send a <a href="/constructor/reactionEmoji">reactionEmoji</a> to react using a n Message authors will receive an <a href="/constructor/updateMessageReactions">updateMessageReactions</a> update when a user reacts to their message. </p> <p><a href="/method/messages.getMessagesReactions">messages.getMessagesReactions</a> can be used to fetch a full list of reactions for one or more messages.<br> Apps should short-poll reactions for visible messages (that weren't sent by the user) once every 15-30 seconds, but only if <code>message.reactions</code> is set. </p> -<p>In groups, <a href="/method/messages.getMessageReactionsList">messages.getMessageReactionsList</a> can be used to fetch the reaction list, along with the sender of each reaction. </p> +<p>In groups, <a href="/method/messages.getMessageReactionsList">messages.getMessageReactionsList</a> can be used to fetch the reaction list, along with the sender of each reaction.<br> +In groups, <a href="/method/messages.reportReaction">messages.reportReaction</a> can be used to report a certain <a href="/api/custom-emoji">custom emoji</a> reaction, specifying the <code>peer</code>, the message <code>id</code> and the user that sent the reaction (<code>reaction_peer</code>). </p> <p><a href="/method/messages.getUnreadReactions">messages.getUnreadReactions</a> is used to fetch messages with unread reactions.<br> Use <a href="/method/messages.readReactions">messages.readReactions</a> to mark all reactions as read in a certain chat.</p> -<p>Use <a href="/method/messages.reportReaction">messages.reportReaction</a> to report a certain <a href="/api/custom-emoji">custom emoji</a> reaction, specifying the <code>peer</code>, the message <code>id</code> and the user that sent the reaction (<code>reaction_peer</code>).</p> <h3><a class="anchor" href="#animated-normal-emojis" id="animated-normal-emojis" name="animated-normal-emojis"><i class="anchor-icon"></i></a>Animated normal emojis</h3> <pre><code><a href='/constructor/reactionEmoji'>reactionEmoji</a>#1b2286b8 emoticon:<a href='/type/string'>string</a> = <a href='/type/Reaction'>Reaction</a>; diff --git a/data/web/corefork.telegram.org/method/account.emailVerified b/data/web/corefork.telegram.org/method/account.emailVerified new file mode 100644 index 0000000000..83487e984b --- /dev/null +++ b/data/web/corefork.telegram.org/method/account.emailVerified @@ -0,0 +1,118 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Page not found</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="og:image" content=""> + <meta property="og:description" content=""> + <link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4"> +<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png"> +<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png"> +<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon-16x16.png"> +<link rel="alternate icon" href="/img/favicon.ico" type="image/x-icon" /> + <link href="/css/bootstrap.min.css?3" rel="stylesheet"> + + <link href="/css/telegram.css?232" rel="stylesheet" media="screen"> + <style> + </style> + </head> + <body class="preload"> + <div class="dev_page_wrap"> + <div class="dev_page_head navbar navbar-static-top navbar-tg"> + <div class="navbar-inner"> + <div class="container clearfix"> + <ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul> + <ul class="nav navbar-nav"> + <li><a href="//telegram.org/">Home</a></li> +<li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li> +<li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li> +<li class="active"><a href="/api">API</a></li> +<li class=""><a href="/mtproto">Protocol</a></li> +<li class=""><a href="/schema">Schema</a></li> + </ul> + </div> + </div> + </div> + <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="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div> + <h1 id="dev_page_title">Page not found</h1> + + <div id="dev_page_content">The page has not been saved</div> + +</div> + + </div> + </div> + <div class="footer_wrap"> + <div class="footer_columns_wrap footer_desktop"> + <div class="footer_column footer_column_telegram"> + <h5>Telegram</h5> + <div class="footer_telegram_description"></div> + Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. + </div> + + <div class="footer_column"> + <h5><a href="//telegram.org/faq">About</a></h5> + <ul> + <li><a href="//telegram.org/faq">FAQ</a></li> + <li><a href="//telegram.org/privacy">Privacy</a></li> + <li><a href="//telegram.org/press">Press</a></li> + </ul> + </div> + <div class="footer_column"> + <h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5> + <ul> + <li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li> + <li><a href="//telegram.org/android">Android</a></li> + <li><a href="//telegram.org/dl/web">Mobile Web</a></li> + </ul> + </div> + <div class="footer_column"> + <h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5> + <ul> + <li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li> + <li><a href="//macos.telegram.org/">macOS</a></li> + <li><a href="//telegram.org/dl/web">Web-browser</a></li> + </ul> + </div> + <div class="footer_column footer_column_platform"> + <h5><a href="//core.telegram.org/">Platform</a></h5> + <ul> + <li><a href="//core.telegram.org/api">API</a></li> + <li><a href="//translations.telegram.org/">Translations</a></li> + <li><a href="//instantview.telegram.org/">Instant View</a></li> + </ul> + </div> + </div> + <div class="footer_columns_wrap footer_mobile"> + <div class="footer_column"> + <h5><a href="//telegram.org/faq">About</a></h5> + </div> + <div class="footer_column"> + <h5><a href="//telegram.org/blog">Blog</a></h5> + </div> + <div class="footer_column"> + <h5><a href="//telegram.org/apps">Apps</a></h5> + </div> + <div class="footer_column"> + <h5><a href="//core.telegram.org/">Platform</a></h5> + </div> + <div class="footer_column"> + <h5><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)">Twitter</a></h5> + </div> + </div> +</div> + </div> + <script src="/js/main.js?46"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/web/corefork.telegram.org/method/account.emailVerifiedLogin b/data/web/corefork.telegram.org/method/account.emailVerifiedLogin new file mode 100644 index 0000000000..83487e984b --- /dev/null +++ b/data/web/corefork.telegram.org/method/account.emailVerifiedLogin @@ -0,0 +1,118 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Page not found</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="og:image" content=""> + <meta property="og:description" content=""> + <link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4"> +<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png"> +<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png"> +<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon-16x16.png"> +<link rel="alternate icon" href="/img/favicon.ico" type="image/x-icon" /> + <link href="/css/bootstrap.min.css?3" rel="stylesheet"> + + <link href="/css/telegram.css?232" rel="stylesheet" media="screen"> + <style> + </style> + </head> + <body class="preload"> + <div class="dev_page_wrap"> + <div class="dev_page_head navbar navbar-static-top navbar-tg"> + <div class="navbar-inner"> + <div class="container clearfix"> + <ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul> + <ul class="nav navbar-nav"> + <li><a href="//telegram.org/">Home</a></li> +<li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li> +<li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li> +<li class="active"><a href="/api">API</a></li> +<li class=""><a href="/mtproto">Protocol</a></li> +<li class=""><a href="/schema">Schema</a></li> + </ul> + </div> + </div> + </div> + <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="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li></li></ul></div> + <h1 id="dev_page_title">Page not found</h1> + + <div id="dev_page_content">The page has not been saved</div> + +</div> + + </div> + </div> + <div class="footer_wrap"> + <div class="footer_columns_wrap footer_desktop"> + <div class="footer_column footer_column_telegram"> + <h5>Telegram</h5> + <div class="footer_telegram_description"></div> + Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. + </div> + + <div class="footer_column"> + <h5><a href="//telegram.org/faq">About</a></h5> + <ul> + <li><a href="//telegram.org/faq">FAQ</a></li> + <li><a href="//telegram.org/privacy">Privacy</a></li> + <li><a href="//telegram.org/press">Press</a></li> + </ul> + </div> + <div class="footer_column"> + <h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5> + <ul> + <li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li> + <li><a href="//telegram.org/android">Android</a></li> + <li><a href="//telegram.org/dl/web">Mobile Web</a></li> + </ul> + </div> + <div class="footer_column"> + <h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5> + <ul> + <li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li> + <li><a href="//macos.telegram.org/">macOS</a></li> + <li><a href="//telegram.org/dl/web">Web-browser</a></li> + </ul> + </div> + <div class="footer_column footer_column_platform"> + <h5><a href="//core.telegram.org/">Platform</a></h5> + <ul> + <li><a href="//core.telegram.org/api">API</a></li> + <li><a href="//translations.telegram.org/">Translations</a></li> + <li><a href="//instantview.telegram.org/">Instant View</a></li> + </ul> + </div> + </div> + <div class="footer_columns_wrap footer_mobile"> + <div class="footer_column"> + <h5><a href="//telegram.org/faq">About</a></h5> + </div> + <div class="footer_column"> + <h5><a href="//telegram.org/blog">Blog</a></h5> + </div> + <div class="footer_column"> + <h5><a href="//telegram.org/apps">Apps</a></h5> + </div> + <div class="footer_column"> + <h5><a href="//core.telegram.org/">Platform</a></h5> + </div> + <div class="footer_column"> + <h5><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)">Twitter</a></h5> + </div> + </div> +</div> + </div> + <script src="/js/main.js?46"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> +