Update content of files

This commit is contained in:
GitHub Action 2021-11-14 11:09:33 +00:00
parent 9106029103
commit 8a64c0a72f
42 changed files with 18705 additions and 0 deletions

View file

@ -0,0 +1,641 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Bot API changelog</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram.
To learn how to create…">
<meta property="og:title" content="Bot API changelog">
<meta property="og:image" content="bf055cf23fb6ab0d9b">
<meta property="og:description" content="The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram.
To learn how to create…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><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"></div>
<h1 id="dev_page_title">Bot API changelog</h1>
<div id="dev_page_content"><!-- scroll_nav -->
<blockquote>
<p>The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram.<br>To learn how to create and set up a bot, please consult our <a href="https://core.telegram.org/bots"><strong>Introduction to Bots »</strong></a></p>
</blockquote>
<p>You will find all changes to our <a href="/bots/api"><strong>Bot API</strong></a> on this page.</p>
<h3><a class="anchor" name="recent-changes" href="#recent-changes"><i class="anchor-icon"></i></a>Recent changes</h3>
<blockquote>
<p>Subscribe to <a href="https://t.me/botnews">@BotNews</a> to be the first to know about the latest updates and join the discussion in <a href="https://t.me/bottalk">@BotTalk</a></p>
</blockquote>
<h3><a class="anchor" name="november-5-2021" href="#november-5-2021"><i class="anchor-icon"></i></a>November 5, 2021</h3>
<p><strong>Bot API 5.4</strong></p>
<ul>
<li>Added the the parameter <code>creates_join_request</code> to the methods <a href="/bots/api#createchatinvitelink">createChatInviteLink</a> and <a href="/bots/api#editchatinvitelink">editChatInviteLink</a> for managing chat invite links that create join requests (read more about this on our <a href="https://telegram.org/blog/shared-media-scrolling-calendar-join-requests-and-more#join-requests-for-groups-and-channels">blog</a>).</li>
<li>Added the fields <code>creates_join_request</code> and <code>pending_join_request_count</code> to the class <a href="/bots/api#chatinvitelink">ChatInviteLink</a>.</li>
<li>Added the field <code>name</code> to the class <a href="/bots/api#chatinvitelink">ChatInviteLink</a> and the parameters <code>name</code> to the methods <a href="/bots/api#createchatinvitelink">createChatInviteLink</a> and <a href="/bots/api#editchatinvitelink">editChatInviteLink</a> for managing <a href="https://telegram.org/blog/shared-media-scrolling-calendar-join-requests-and-more#unique-names-for-invite-links">invite link names</a>.</li>
<li>Added updates about new requests to join the chat, represented by the class <a href="/bots/api#chatjoinrequest">ChatJoinRequest</a> and the field <em>chat_join_request</em> in the <a href="/bots/api#update">Update</a> class. The bot must be an administrator in the chat with the <em>can_invite_users</em> administrator right to receive these updates.</li>
<li>Added the methods <a href="/bots/api#approvechatjoinrequest">approveChatJoinRequest</a> and <a href="/bots/api#declinechatjoinrequest">declineChatJoinRequest</a> for managing requests to join the chat.</li>
<li>Added support for the <em>choose_sticker</em> action in the method <a href="/bots/api#sendchataction">sendChatAction</a>.</li>
</ul>
<hr>
<blockquote>
<p><strong><img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /> WARNING! <img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /></strong><br>User identifiers will become bigger than <code>2^31 - 1</code> before the end of this year and it will be no longer possible to store them in a signed 32-bit integer type. User identifiers will have up to 52 significant bits, so a 64-bit integer or double-precision float type would still be safe for storing them. Please make sure that your code can correctly handle such user identifiers.</p>
</blockquote>
<hr>
<h3><a class="anchor" name="june-25-2021" href="#june-25-2021"><i class="anchor-icon"></i></a>June 25, 2021</h3>
<p><strong>Bot API 5.3</strong></p>
<p><strong>Personalized Commands</strong></p>
<ul>
<li>Bots can now show lists of commands tailored to specific situations - including localized commands for users with different languages, as well as different commands based on chat type or for specific chats, and special lists of commands for chat admins.</li>
<li>Added the class <a href="/bots/api#botcommandscope">BotCommandScope</a>, describing the scope to which bot commands apply.</li>
<li>Added the parameters <code>scope</code> and <code>language_code</code> to the method <a href="/bots/api#setmycommands">setMyCommands</a> to allow bots specify different commands for different chats and users.</li>
<li>Added the parameters <code>scope</code> and <code>language_code</code> to the method <a href="/bots/api#getmycommands">getMyCommands</a>.</li>
<li>Added the method <a href="/bots/api#deletemycommands">deleteMyCommands</a> to allow deletion of the bot&#39;s commands for the given scope and user language.</li>
<li>Improved visibility of bot commands in Telegram apps with the new &#39;Menu&#39; button in chats with bots, read more on the <a href="https://telegram.org/blog/animated-backgrounds#bot-menu">blog</a>.</li>
</ul>
<p><strong>Custom Placeholders</strong></p>
<ul>
<li>Added the ability to specify a custom input field placeholder in the classes <a href="/bots/api#replykeyboardmarkup">ReplyKeyboardMarkup</a> and <a href="/bots/api#forcereply">ForceReply</a>.</li>
</ul>
<p><strong>And More</strong></p>
<ul>
<li>Improved documentation of the class <a href="/bots/api#chatmember">ChatMember</a> by splitting it into 6 subclasses.</li>
<li>Renamed the method <code>kickChatMember</code> to <a href="/bots/api#banchatmember">banChatMember</a>. The old method name can still be used.</li>
<li>Renamed the method <code>getChatMembersCount</code> to <a href="/bots/api#getchatmembercount">getChatMemberCount</a>. The old method name can still be used.</li>
<li>Values of the field <code>file_unique_id</code> in objects of the type <a href="/bots/api#photosize">PhotoSize</a> and of the fields <code>small_file_unique_id</code> and <code>big_file_unique_id</code> in objects of the type <a href="/bots/api#chatphoto">ChatPhoto</a> were changed.</li>
</ul>
<hr>
<blockquote>
<p><strong><img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /> WARNING! <img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /></strong><br>After one of the upcoming Bot API updates, user identifiers will become bigger than <code>2^31 - 1</code> and it will be no longer possible to store them in a signed 32-bit integer type. User identifiers will have up to 52 significant bits, so a 64-bit integer or double-precision float type would still be safe for storing them. Please make sure that your code can correctly handle such user identifiers.</p>
</blockquote>
<hr>
<h3><a class="anchor" name="april-26-2021" href="#april-26-2021"><i class="anchor-icon"></i></a>April 26, 2021</h3>
<p><strong>Bot API 5.2</strong></p>
<ul>
<li>Support for <a href="https://telegram.org/blog/payments-2-0-scheduled-voice-chats">Payments 2.0</a>, see <a href="https://core.telegram.org/bots/payments">this manual</a> for more details about the <strong>Bot Payments API</strong>.</li>
<li>Added the type <a href="/bots/api#inputinvoicemessagecontent">InputInvoiceMessageContent</a> to support sending invoices as inline query results.</li>
<li>Allowed sending invoices to group, supergroup and channel chats.</li>
<li>Added the fields <em>max_tip_amount</em> and <em>suggested_tip_amounts</em> to the method <a href="/bots/api#sendinvoice">sendInvoice</a> to allow adding optional tips to the payment.</li>
<li>The parameter <em>start_parameter</em> of the method <a href="/bots/api#sendinvoice">sendInvoice</a> became optional. If the parameter isn&#39;t specified, the invoice can be paid directly from forwarded messages.</li>
<li>Added the field <em>chat_type</em> to the class <a href="/bots/api#inlinequery">InlineQuery</a>, containing the type of the chat, from which the inline request was sent.</li>
<li>Added the type <a href="/bots/api#voicechatscheduled">VoiceChatScheduled</a> and the field <em>voice_chat_scheduled</em> to the class <a href="/bots/api#message">Message</a>.</li>
<li>Fixed an error in <a href="/bots/api#sendchataction">sendChatAction</a> documentation to correctly mention “record_voice” and “upload_voice” instead of “record_audio” and “upload_audio” for related to voice note actions. Old action names will still work for backward compatibility.</li>
</ul>
<hr>
<blockquote>
<p><strong><img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /> WARNING! <img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /></strong><br>After the next Bot API update (Bot API 5.3) there will be a one-time change of the value of the field <code>file_unique_id</code> in objects of the type <a href="/bots/api#photosize">PhotoSize</a> and of the fields <code>small_file_unique_id</code> and <code>big_file_unique_id</code> in objects of the type <a href="/bots/api#chatphoto">ChatPhoto</a>.</p>
</blockquote>
<hr>
<blockquote>
<p><strong><img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /> WARNING! <img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /></strong><br>Service messages about non-bot users joining the chat will be soon removed from large groups. We recommend using the “chat_member” update as a replacement.</p>
</blockquote>
<hr>
<blockquote>
<p><strong><img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /> WARNING! <img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /></strong><br>After one of the upcoming Bot API updates, user identifiers will become bigger than <code>2^31 - 1</code> and it will be no longer possible to store them in a signed 32-bit integer type. User identifiers will have up to 52 significant bits, so a 64-bit integer or double-precision float type would still be safe for storing them. Please make sure that your code can correctly handle such user identifiers.</p>
</blockquote>
<hr>
<h3><a class="anchor" name="march-9-2021" href="#march-9-2021"><i class="anchor-icon"></i></a>March 9, 2021</h3>
<p><strong>Bot API 5.1</strong></p>
<p><strong>Added two new update types</strong></p>
<ul>
<li>Added updates about member status changes in chats, represented by the class <a href="/bots/api#chatmemberupdated">ChatMemberUpdated</a> and the fields <em>my_chat_member</em> and <em>chat_member</em> in the <a href="/bots/api#update">Update</a> class. The bot must be an administrator in the chat to receive <em>chat_member</em> updates about other chat members. By default, only <em>my_chat_member</em> updates about the bot itself are received.</li>
</ul>
<p><strong>Improved Invite Links</strong></p>
<ul>
<li>Added the class <a href="/bots/api#chatinvitelink">ChatInviteLink</a>, representing an invite link to a chat.</li>
<li>Added the method <a href="/bots/api#createchatinvitelink">createChatInviteLink</a>, which can be used to create new invite links in addition to the primary invite link.</li>
<li>Added the method <a href="/bots/api#editchatinvitelink">editChatInviteLink</a>, which can be used to edit non-primary invite links created by the bot.</li>
<li>Added the method <a href="/bots/api#revokechatinvitelink">revokeChatInviteLink</a>, which can be used to revoke invite links created by the bot.</li>
</ul>
<p><strong>Voice Chat Info</strong></p>
<ul>
<li>Added the type <a href="/bots/api#voicechatstarted">VoiceChatStarted</a> and the field <em>voice_chat_started</em> to the class <a href="/bots/api#message">Message</a>.</li>
<li>Added the type <a href="/bots/api#voicechatended">VoiceChatEnded</a> and the field <em>voice_chat_ended</em> to the class <a href="/bots/api#message">Message</a>.</li>
<li>Added the type <a href="/bots/api#voicechatparticipantsinvited">VoiceChatParticipantsInvited</a> and the field <em>voice_chat_participants_invited</em> to the class <a href="/bots/api#message">Message</a>.</li>
<li>Added the new administrator privilege <em>can_manage_voice_chats</em> to the class <a href="/bots/api#chatmember">ChatMember</a> and parameter <em>can_manage_voice_chats</em> to the method <a href="/bots/api#promotechatmember">promoteChatMember</a>. For now, bots can use this privilege only for passing to other administrators.</li>
</ul>
<p><strong>And More</strong></p>
<ul>
<li>Added the type <a href="/bots/api#messageautodeletetimerchanged">MessageAutoDeleteTimerChanged</a> and the field <em>message_auto_delete_timer_changed</em> to the class <a href="/bots/api#message">Message</a>.</li>
<li>Added the parameter <em>revoke_messages</em> to the method <a href="/bots/api#kickchatmember">kickChatMember</a>, allowing to delete all messages from a group for the user who is being removed.</li>
<li>Added the new administrator privilege <em>can_manage_chat</em> to the class <a href="/bots/api#chatmember">ChatMember</a> and parameter <em>can_manage_chat</em> to the method <a href="/bots/api#promotechatmember">promoteChatMember</a>. This administrator right is implied by any other administrator privilege.</li>
<li>Supported the new <em>bowling</em> animation for the random <a href="/bots/api#dice">dice</a>. Choose between different animations (dice, darts, basketball, football, bowling, slot machine) by specifying the <em>emoji</em> parameter in the method <a href="/bots/api#senddice">sendDice</a>.</li>
</ul>
<hr>
<blockquote>
<p><strong><img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /> WARNING! <img class="emoji" src="//telegram.org/img/emoji/40/E29AA0.png" width="20" height="20" alt="⚠️" /></strong><br>After one of the upcoming Bot API updates, some user identifiers will become bigger than <code>2^31 - 1</code> and it will be no longer possible to store them in a signed 32-bit integer type. User identifiers will have up to 52 significant bits, so a 64-bit integer or double-precision float type would still be safe for storing them. Please make sure that your code can correctly handle such user identifiers.</p>
</blockquote>
<hr>
<h3><a class="anchor" name="november-4-2020" href="#november-4-2020"><i class="anchor-icon"></i></a>November 4, 2020</h3>
<p>Introducing <strong>Bot API 5.0</strong></p>
<p><strong>Run Your Own Bot API Server</strong></p>
<ul>
<li>Bot API source code is now available at <a href="https://github.com/tdlib/telegram-bot-api">telegram-bot-api</a>. You can now run your <strong>own Bot API server</strong> locally, boosting your bots&#39; performance.</li>
<li>Added the method <a href="/bots/api#logout">logOut</a>, which can be used to log out from the cloud Bot API server before launching your bot locally. You <strong>must</strong> log out the bot before running it locally, otherwise there is no guarantee that the bot will receive all updates.</li>
<li>Added the method <a href="/bots/api#close">close</a>, which can be used to close the bot instance before moving it from one local server to another.</li>
</ul>
<p><strong>Transfer Bot Ownership</strong></p>
<ul>
<li>You can now use <a href="https://t.me/botfather">@BotFather</a> to transfer your existing bots to another Telegram account. </li>
</ul>
<p><strong>Webhooks</strong></p>
<ul>
<li>Added the parameter <em>ip_address</em> to the method <a href="/bots/api#setwebhook">setWebhook</a>, allowing to bypass DNS resolving and use the specified fixed IP address to send webhook requests.</li>
<li>Added the field <em>ip_address</em> to the class <a href="/bots/api#webhookinfo">WebhookInfo</a>, containing the current IP address used for webhook connections creation.</li>
<li>Added the ability to drop all pending updates when changing webhook URL using the parameter <em>drop_pending_updates</em> in the methods <a href="/bots/api#setwebhook">setWebhook</a> and <a href="/bots/api#deletewebhook">deleteWebhook</a>.</li>
</ul>
<p><strong>Working with Groups</strong></p>
<ul>
<li>The <a href="/bots/api#getchat">getChat</a> request now returns the user&#39;s bio for private chats if available.</li>
<li>The <a href="/bots/api#getchat">getChat</a> request now returns the identifier of the linked chat for supergroups and channels, i.e. the discussion group identifier for a channel and vice versa.</li>
<li>The <a href="/bots/api#getchat">getChat</a> request now returns the location to which the supergroup is connected (see <a href="https://telegram.org/blog/contacts-local-groups">Local Groups</a>). Added the class <a href="/bots/api#chatlocation">ChatLocation</a> to represent the location.</li>
<li>Added the parameter <em>only_if_banned</em> to the method <a href="/bots/api#unbanchatmember">unbanChatMember</a> to allow safe unban.</li>
</ul>
<p><strong>Working with Files</strong></p>
<ul>
<li>Added the field <em>file_name</em> to the classes <a href="/bots/api#audio">Audio</a> and <a href="/bots/api#video">Video</a>, containing the name of the original file.</li>
<li>Added the ability to disable server-side file content type detection using the parameter <em>disable_content_type_detection</em> in the method <a href="/bots/api#senddocument">sendDocument</a> and the class <a href="/bots/api#inputmediadocument">inputMediaDocument</a>.</li>
</ul>
<p><strong>Multiple Pinned Messages</strong></p>
<ul>
<li>Added the ability to <strong>pin messages in private chats</strong>.</li>
<li>Added the parameter <em>message_id</em> to the method <a href="/bots/api#unpinchatmessage">unpinChatMessage</a> to allow unpinning of the specific pinned message.</li>
<li>Added the method <a href="/bots/api#unpinallchatmessages">unpinAllChatMessages</a>, which can be used to unpin all pinned messages in a chat.</li>
</ul>
<p><strong>File Albums</strong></p>
<ul>
<li>Added support for sending and receiving audio and document albums in the method <a href="/bots/api#sendmediagroup">sendMediaGroup</a>.</li>
</ul>
<p><strong>Live Locations</strong></p>
<ul>
<li>Added the field <em>live_period</em> to the class <a href="/bots/api#location">Location</a>, representing a maximum period for which the live location can be updated.</li>
<li>Added support for live location <a href="https://en.wikipedia.org/wiki/Heading_(navigation&#41;">heading</a>: added the field <em>heading</em> to the classes <a href="/bots/api#location">Location</a>, <a href="/bots/api#inlinequeryresultlocation">InlineQueryResultLocation</a>, <a href="/bots/api#inputlocationmessagecontent">InputLocationMessageContent</a> and the parameter <em>heading</em> to the methods <a href="/bots/api#sendlocation">sendLocation</a> and <a href="/bots/api#editmessagelivelocation">editMessageLiveLocation</a>.</li>
<li>Added support for proximity alerts in live locations: added the field <em>proximity_alert_radius</em> to the classes <a href="/bots/api#location">Location</a>, <a href="/bots/api#inlinequeryresultlocation">InlineQueryResultLocation</a>, <a href="/bots/api#inputlocationmessagecontent">InputLocationMessageContent</a> and the parameter <em>proximity_alert_radius</em> to the methods <a href="/bots/api#sendlocation">sendLocation</a> and <a href="/bots/api#editmessagelivelocation">editMessageLiveLocation</a>.</li>
<li>Added the type <a href="/bots/api#proximityalerttriggered">ProximityAlertTriggered</a> and the field <em>proximity_alert_triggered</em> to the class <a href="/bots/api#message">Message</a>.</li>
<li>Added possibility to specify the horizontal accuracy of a location. Added the field <em>horizontal_accuracy</em> to the classes <a href="/bots/api#location">Location</a>, <a href="/bots/api#inlinequeryresultlocation">InlineQueryResultLocation</a>, <a href="/bots/api#inputlocationmessagecontent">InputLocationMessageContent</a> and the parameter <em>horizontal_accuracy</em> to the methods <a href="/bots/api#sendlocation">sendLocation</a> and <a href="/bots/api#editmessagelivelocation">editMessageLiveLocation</a>.</li>
</ul>
<p><strong>Anonymous Admins</strong></p>
<ul>
<li>Added the field <em>sender_chat</em> to the class <a href="/bots/api#message">Message</a>, containing the sender of a message which is a chat (group or channel). For backward compatibility in non-channel chats, the field <em>from</em> in such messages will contain the user 777000 for messages automatically forwarded to the discussion group and the user 1087968824 (<a href="https://t.me/GroupAnonymousBot">@GroupAnonymousBot</a>) for messages from anonymous group administrators.</li>
<li>Added the field <em>is_anonymous</em> to the class <a href="/bots/api#chatmember">chatMember</a>, which can be used to distinguish anonymous chat administrators.</li>
<li>Added the parameter <em>is_anonymous</em> to the method <a href="/bots/api#promotechatmember">promoteChatMember</a>, which allows to promote anonymous chat administrators. The bot itself should have the <em>is_anonymous</em> right to do this. Despite the fact that bots can have the <em>is_anonymous</em> right, they will never appear as anonymous in the chat. Bots can use the right only for passing to other administrators.</li>
<li>Added the custom title of an anonymous message sender to the class <a href="/bots/api#message">Message</a> as <em>author_signature</em>.</li>
</ul>
<p><strong>And More</strong></p>
<ul>
<li>Added the method <a href="/bots/api#copymessage">copyMessage</a>, which sends a copy of any message.</li>
<li>Maximum poll question length increased to 300.</li>
<li>Added the ability to manually specify text entities instead of specifying the <em>parse_mode</em> in the classes <a href="/bots/api#inputmediaphoto">InputMediaPhoto</a>, <a href="/bots/api#inputmediavideo">InputMediaVideo</a>, <a href="/bots/api#inputmediaanimation">InputMediaAnimation</a>, <a href="/bots/api#inputmediaaudio">InputMediaAudio</a>, <a href="/bots/api#inputmediadocument">InputMediaDocument</a>, <a href="/bots/api#inlinequeryresultphoto">InlineQueryResultPhoto</a>, <a href="/bots/api#inlinequeryresultgif">InlineQueryResultGif</a>, <a href="/bots/api#inlinequeryresultmpeg4gif">InlineQueryResultMpeg4Gif</a>, <a href="/bots/api#inlinequeryresultvideo">InlineQueryResultVideo</a>, <a href="/bots/api#inlinequeryresultaudio">InlineQueryResultAudio</a>, <a href="/bots/api#inlinequeryresultvoice">InlineQueryResultVoice</a>, <a href="/bots/api#inlinequeryresultdocument">InlineQueryResultDocument</a>, <a href="/bots/api#inlinequeryresultcachedphoto">InlineQueryResultCachedPhoto</a>, <a href="/bots/api#inlinequeryresultcachedgif">InlineQueryResultCachedGif</a>, <a href="/bots/api#inlinequeryresultcachedmpeg4gif">InlineQueryResultCachedMpeg4Gif</a>, <a href="/bots/api#inlinequeryresultcachedvideo">InlineQueryResultCachedVideo</a>, <a href="/bots/api#inlinequeryresultcachedaudio">InlineQueryResultCachedAudio</a>, <a href="/bots/api#inlinequeryresultcachedvoice">InlineQueryResultCachedVoice</a>, <a href="/bots/api#inlinequeryresultcacheddocument">InlineQueryResultCachedDocument</a>, <a href="/bots/api#inputtextmessagecontent">InputTextMessageContent</a> and the methods <a href="/bots/api#sendmessage">sendMessage</a>, <a href="/bots/api#sendphoto">sendPhoto</a>, <a href="/bots/api#sendvideo">sendVideo</a>, <a href="/bots/api#sendanimation">sendAnimation</a>, <a href="/bots/api#sendaudio">sendAudio</a>, <a href="/bots/api#senddocument">sendDocument</a>, <a href="/bots/api#sendvoice">sendVoice</a>, <a href="/bots/api#sendpoll">sendPoll</a>, <a href="/bots/api#editmessagetext">editMessageText</a>, <a href="/bots/api#editmessagecaption">editMessageCaption</a>.</li>
<li>Added the fields <em>google_place_id</em> and <em>google_place_type</em> to the classes <a href="/bots/api#venue">Venue</a>, <a href="/bots/api#inlinequeryresultvenue">InlineQueryResultVenue</a>, <a href="/bots/api#inputvenuemessagecontent">InputVenueMessageContent</a> and the optional parameters <em>google_place_id</em> and <em>google_place_type</em> to the method <a href="/bots/api#sendvenue">sendVenue</a> to support Google Places as a venue API provider.</li>
<li>Added the field <em>allow_sending_without_reply</em> to the methods <a href="/bots/api#sendmessage">sendMessage</a>, <a href="/bots/api#sendphoto">sendPhoto</a>, <a href="/bots/api#sendvideo">sendVideo</a>, <a href="/bots/api#sendanimation">sendAnimation</a>, <a href="/bots/api#sendaudio">sendAudio</a>, <a href="/bots/api#senddocument">sendDocument</a>, <a href="/bots/api#sendsticker">sendSticker</a>, <a href="/bots/api#sendvideonote">sendVideoNote</a>, <a href="/bots/api#sendvoice">sendVoice</a>, <a href="/bots/api#sendlocation">sendLocation</a>, <a href="/bots/api#sendvenue">sendVenue</a>, <a href="/bots/api#sendcontact">sendContact</a>, <a href="/bots/api#sendpoll">sendPoll</a>, <a href="/bots/api#senddice">sendDice</a>, <a href="/bots/api#sendinvoice">sendInvoice</a>, <a href="/bots/api#sendgame">sendGame</a>, <a href="/bots/api#sendmediagroup">sendMediaGroup</a> to allow sending messages not a as reply if the replied-to message has already been deleted.</li>
</ul>
<p><strong>And Last but not Least</strong></p>
<ul>
<li>Supported the new <strong>football</strong> and <strong>slot machine</strong> animations for the random <a href="/bots/api#dice">dice</a>. Choose between different animations (dice, darts, basketball, football, slot machine) by specifying the <em>emoji</em> parameter in the method <a href="/bots/api#senddice">sendDice</a>.</li>
</ul>
<h3><a class="anchor" name="june-4-2020" href="#june-4-2020"><i class="anchor-icon"></i></a>June 4, 2020</h3>
<p><strong>Bot API 4.9</strong></p>
<ul>
<li>Added the new field <em>via_bot</em> to the <a href="/bots/api#message">Message</a> object. You can now know which bot was used to send a message.</li>
<li>Supported video thumbnails for inline <a href="/bots/api#inlinequeryresultgif">GIF</a> and <a href="/bots/api#inlinequeryresultmpeg4gif">MPEG4</a> animations.</li>
<li>Supported the new basketball animation for the random <a href="/bots/api#dice">dice</a>. Choose between different animations (dice, darts, basketball) by specifying the <em>emoji</em> parameter in the method <a href="/bots/api#senddice">sendDice</a>.</li>
</ul>
<h3><a class="anchor" name="april-24-2020" href="#april-24-2020"><i class="anchor-icon"></i></a>April 24, 2020</h3>
<p><strong>Bot API 4.8</strong></p>
<ul>
<li>Supported explanations for <a href="https://telegram.org/blog/400-million#better-quizzes">Quizzes 2.0</a>. Add explanations by specifying the parameters <em>explanation</em> and <em>explanation_parse_mode</em> in the method <a href="/bots/api#sendpoll">sendPoll</a>.</li>
<li>Added the fields <em>explanation</em> and <em>explanation_entities</em> to the <a href="/bots/api#poll">Poll</a> object.</li>
<li>Supported timed polls that automatically close at a certain date and time. Set up by specifying the parameter <em>open_period</em> or <em>close_date</em> in the method <a href="/bots/api#sendpoll">sendPoll</a>.</li>
<li>Added the fields <em>open_period</em> and <em>close_date</em> to the <a href="/bots/api#poll">Poll</a> object.</li>
<li>Supported the new <a href="https://telegram.org/blog/400-million#bullseye">darts</a> animation for the dice mini-game. Choose between the default dice animation and darts animation by specifying the parameter <em>emoji</em> in the method <a href="/bots/api#senddice">sendDice</a>.</li>
<li>Added the field <em>emoji</em> to the <a href="/bots/api#dice">Dice</a> object.</li>
</ul>
<h3><a class="anchor" name="march-30-2020" href="#march-30-2020"><i class="anchor-icon"></i></a>March 30, 2020</h3>
<p><strong>Bot API 4.7</strong></p>
<ul>
<li>Added the method <a href="/bots/api#senddice">sendDice</a> for sending a dice message, which will have a random value from 1 to 6. (Yes, we&#39;re aware of the <em>“proper”</em> singular of <em>die</em>. But it&#39;s awkward, and we decided to help it change. One dice at a time!)</li>
<li>Added the field <a href="/bots/api#dice">dice</a> to the <a href="/bots/api#message">Message</a> object.</li>
<li>Added the method <a href="/bots/api#getmycommands">getMyCommands</a> for getting the current list of the bot&#39;s commands.</li>
<li>Added the method <a href="/bots/api#setmycommands">setMyCommands</a> for changing the list of the bot&#39;s commands through the Bot API instead of <a href="https://t.me/botfather">@BotFather</a>.</li>
<li>Added the ability to create animated sticker sets by specifying the parameter <em>tgs_sticker</em> instead of <em>png_sticker</em> in the method <a href="/bots/api#createnewstickerset">createNewStickerSet</a>.</li>
<li>Added the ability to add animated stickers to sets created by the bot by specifying the parameter <em>tgs_sticker</em> instead of <em>png_sticker</em> in the method <a href="/bots/api#addstickertoset">addStickerToSet</a>.</li>
<li>Added the field <em>thumb</em> to the <a href="/bots/api#stickerset">StickerSet</a> object.</li>
<li>Added the ability to change thumbnails of sticker sets created by the bot using the method <a href="/bots/api#setstickersetthumb">setStickerSetThumb</a>.</li>
</ul>
<h3><a class="anchor" name="january-23-2020" href="#january-23-2020"><i class="anchor-icon"></i></a>January 23, 2020</h3>
<p><strong>Bot API 4.6</strong></p>
<ul>
<li>Supported <a href="https://telegram.org/blog/polls-2-0-vmq">Polls 2.0</a>.</li>
<li>Added the ability to send non-anonymous, multiple answer, and quiz-style polls: added the parameters <em>is_anonymous</em>, <em>type</em>, <em>allows_multiple_answers</em>, <em>correct_option_id</em>, <em>is_closed</em> options to the method <a href="/bots/api#sendpoll">sendPoll</a>.</li>
<li>Added the object <a href="/bots/api#keyboardbuttonpolltype">KeyboardButtonPollType</a> and the field <em>request_poll</em> to the object <a href="/bots/api#keyboardbutton">KeyboardButton</a>.</li>
<li>Added updates about changes of user answers in non-anonymous polls, represented by the object <a href="/bots/api#pollanswer">PollAnswer</a> and the field <em>poll_answer</em> in the <a href="/bots/api#update">Update</a> object. </li>
<li>Added the fields <em>total_voter_count</em>, <em>is_anonymous</em>, <em>type</em>, <em>allows_multiple_answers</em>, <em>correct_option_id</em> to the <a href="/bots/api#poll">Poll</a> object.</li>
<li>Bots can now send polls to private chats.</li>
<li>Added more information about the bot in response to the <a href="/bots/api#getme">getMe</a> request: added the fields <em>can_join_groups</em>, <em>can_read_all_group_messages</em> and <em>supports_inline_queries</em> to the <a href="/bots/api#user">User</a> object.</li>
<li>Added the optional field <em>language</em> to the <a href="/bots/api#messageentity">MessageEntity</a> object.</li>
</ul>
<h3><a class="anchor" name="december-31-2019" href="#december-31-2019"><i class="anchor-icon"></i></a>December 31, 2019</h3>
<p><strong>Bot API 4.5</strong></p>
<ul>
<li>Added support for two new <a href="/bots/api#messageentity">MessageEntity</a> types, <em>underline</em> and <em>strikethrough</em>.</li>
<li>Added support for nested <a href="/bots/api#messageentity">MessageEntity</a> objects. Entities can now contain other entities. If two entities have common characters then one of them is fully contained inside the other.</li>
<li>Added support for nested entities and the new tags <code>&lt;u&gt;/&lt;ins&gt;</code> (for underlined text) and <code>&lt;s&gt;/&lt;strike&gt;/&lt;del&gt;</code> (for strikethrough text) in parse mode HTML.</li>
<li>Added a new parse mode, <a href="/bots/api#markdownv2-style">MarkdownV2</a>, which supports nested entities and two new entities <code>__</code> (for underlined text) and <code>~</code> (for strikethrough text). Parse mode <a href="/bots/api#markdown-style">Markdown</a> remains unchanged for backward compatibility.</li>
<li>Added the field <em>file_unique_id</em> to the objects <a href="/bots/api#animation">Animation</a>, <a href="/bots/api#audio">Audio</a>, <a href="/bots/api#document">Document</a>, <a href="/bots/api#passportfile">PassportFile</a>, <a href="/bots/api#photosize">PhotoSize</a>, <a href="/bots/api#sticker">Sticker</a>, <a href="/bots/api#video">Video</a>, <a href="/bots/api#videonote">VideoNote</a>, <a href="/bots/api#voice">Voice</a>, <a href="/bots/api#file">File</a> and the fields <em>small_file_unique_id</em> and <em>big_file_unique_id</em> to the object <a href="/bots/api#chatphoto">ChatPhoto</a>. The new fields contain a unique file identifier, which is supposed to be the same over time and for different bots, but can&#39;t be used to download or reuse the file.</li>
<li>Added the field <em>custom_title</em> to the <a href="/bots/api#chatmember">ChatMember</a> object.</li>
<li>Added the new method <a href="/bots/api#setchatadministratorcustomtitle">setChatAdministratorCustomTitle</a> to manage the custom titles of administrators promoted by the bot.</li>
<li>Added the field <em>slow_mode_delay</em> to the <a href="/bots/api#chat">Chat</a> object.</li>
</ul>
<h3><a class="anchor" name="july-29-2019" href="#july-29-2019"><i class="anchor-icon"></i></a>July 29, 2019</h3>
<p><strong>Bot API 4.4</strong></p>
<ul>
<li>Added support for <a href="https://telegram.org/blog/animated-stickers"><strong>animated stickers</strong></a>. New field <em>is_animated</em> in <a href="/bots/api#sticker">Sticker</a> and <a href="/bots/api#stickerset">StickerSet</a> objects, animated stickers can now be used in <a href="/bots/api#sendsticker">sendSticker</a> and <a href="/bots/api#inlinequeryresultcachedsticker">InlineQueryResultCachedSticker</a>.</li>
<li>Added support for <a href="https://telegram.org/blog/permissions-groups-undo"><strong>default permissions</strong></a> in groups. New object <a href="/bots/api#chatpermissions">ChatPermissions</a>, containing actions which a member can take in a chat. New field <em>permissions</em> in the <a href="/bots/api#chat">Chat</a> object; new method <a href="/bots/api#setchatpermissions">setChatPermissions</a>.</li>
<li>The field <em>all_members_are_administrators</em> has been removed from the documentation for the <a href="/bots/api#chat">Chat</a> object. The field is still returned in the object for backward compatibility, but new bots should use the <em>permissions</em> field instead.</li>
<li>Added support for more permissions for group and supergroup members: added the new field <em>can_send_polls</em> to <a href="/bots/api#chatmember">ChatMember</a> object, added <em>can_change_info</em>, <em>can_invite_users</em>, <em>can_pin_messages</em> in <a href="/bots/api#chatmember">ChatMember</a> object for restricted users (previously available only for administrators).</li>
<li>The method <a href="/bots/api#restrictchatmember">restrictChatMember</a> now takes the new user permissions in a single argument of the type <a href="/bots/api#chatpermissions">ChatPermissions</a>. The old way of passing parameters will keep working for a while for backward compatibility.</li>
<li>Added <em>description</em> support for basic groups (previously available in supergroups and channel chats). You can pass a group&#39;s chat_id to <a href="/bots/api#setchatdescription">setChatDescription</a> and receive the group&#39;s description in the <a href="/bots/api#chat">Chat</a> object in the response to <a href="/bots/api#getchat">getChat</a> method.</li>
<li>Added <em>invite_link</em> support for basic groups (previously available in supergroups and channel chats). You can pass a group&#39;s chat_id to <a href="/bots/api#exportchatinvitelink">exportChatInviteLink</a> and receive the group&#39;s invite link in the <a href="/bots/api#chat">Chat</a> object in the response to <a href="/bots/api#getchat">getChat</a> method.</li>
<li>File identifiers from the <a href="/bots/api#chatphoto">ChatPhoto</a> object are now invalidated and can no longer be used whenever the photo is changed.</li>
<li>All <strong>webhook requests</strong> from the Bot API are now coming from the subnets <code>149.154.160.0/20</code> and <code>91.108.4.0/22</code>. Most users won&#39;t need to do anything to continue receiving webhooks. If you control inbound access with a firewall, you may need to update your configuration. You can always find the list of actual IP addresses of servers used to send webhooks there: <a href="/bots/webhooks"><a href="https://core.telegram.org/bots/webhooks">https://core.telegram.org/bots/webhooks</a></a>.</li>
<li>As of the <strong>next Bot API</strong> update (<strong>version 4.5</strong>), nested <a href="/bots/api#messageentity">MessageEntity</a> objects will be allowed in message texts and captions. Please make sure that your code can correctly handle such entities.</li>
</ul>
<h3><a class="anchor" name="may-31-2019" href="#may-31-2019"><i class="anchor-icon"></i></a>May 31, 2019</h3>
<p><strong>Bot API 4.3</strong></p>
<ul>
<li>Added support for <a href="https://telegram.org/blog/privacy-discussions-web-bots#meet-seamless-web-bots"><strong>Seamless Telegram Login</strong></a> on external websites.</li>
<li>Added the new object <a href="/bots/api#loginurl">LoginUrl</a> and the new field <em>login_url</em> to the <a href="/bots/api#inlinekeyboardbutton">InlineKeyboardButton</a> object which allows to <strong>automatically authorize</strong> users before they go to a URL specified by the bot. Users will be asked to confirm authorization in their Telegram app (needs version 5.7 or higher) when they press the button:</li>
</ul>
<div class="blog_image_wrap">
<a href="/file/811140015/1734/8VZFkwWXalM.97872/6127fa62d8a0bf2b3c" target="_blank"><img src="/file/811140909/1631/20k1Z53eiyY.23995/c541e89b74253623d9" title="TITLE" alt="TITLE" srcset="/file/811140015/1734/8VZFkwWXalM.97872/6127fa62d8a0bf2b3c , 2x" /></a>
</div>
<p><strong>Also in this update:</strong></p>
<ul>
<li>Added the field <code>reply_markup</code> to the <a href="/bots/api#message">Message</a> object, containing the inline keyboard attached to the message.</li>
<li>If a message with an inline keyboard is forwarded, the forwarded message will now have an inline keyboard if the keyboard contained only <em>url</em> and <em>login_url</em> buttons or if the message was sent via a bot and the keyboard contained only <em>url</em>, <em>login_url</em>, <em>switch_inline_query</em> or <em>switch_inline_query_current_chat</em> buttons. In the latter case, <em>switch_inline_query_current_chat</em> buttons are replaced with <em>switch_inline_query</em> buttons.</li>
<li>Bots now receive the <em>edited_message</em> <a href="/bots/api#update">Update</a> even if only <em>Message.reply_markup</em> has changed.</li>
<li>Bots that have the <em>can_edit_messages</em> right in a channel can now use the method <a href="/bots/api#editmessagereplymarkup">editMessageReplyMarkup</a> for messages written by other administrators forever without the 48 hours limit.</li>
<li>Don&#39;t forget that starting in <strong>July 2019</strong>, <strong>webhook requests</strong> from Bot API will be coming from the subnets <code>149.154.160.0/20</code> and <code>91.108.4.0/22</code>. Most users won&#39;t need to do anything to continue receiving webhooks. If you control inbound access with a firewall, you may need to update your configuration. You can always find the list of actual IP addresses of servers used to send webhooks there: <a href="/bots/webhooks"><a href="https://core.telegram.org/bots/webhooks">https://core.telegram.org/bots/webhooks</a></a>.</li>
</ul>
<h3><a class="anchor" name="april-14-2019" href="#april-14-2019"><i class="anchor-icon"></i></a>April 14, 2019</h3>
<p><strong>Bot API 4.2</strong></p>
<ul>
<li>Added support for native polls: added the object <a href="/bots/api#poll">Poll</a>, the methods <a href="/bots/api#sendpoll">sendPoll</a> and <a href="/bots/api#stoppoll">stopPoll</a> and the field <em>poll</em> in the <a href="/bots/api#message">Message</a> and <a href="/bots/api#update">Update</a> objects.</li>
<li>The method <a href="/bots/api#deletemessage">deleteMessage</a> can now be used to delete messages sent by a user to the bot in private chats within 48 hours.</li>
<li>Added support for pinned messages in basic groups in addition to supergroups and channel chats: you can pass group&#39;s chat_id to <a href="/bots/api#pinchatmessage">pinChatMessage</a> and <a href="/bots/api#unpinchatmessage">unpinChatMessage</a>, and receive the pinned group message in <a href="/bots/api#chat">Chat</a> object.</li>
<li>Added the field <em>is_member</em> to the <a href="/bots/api#chatmember">ChatMember</a> object, which can be used to find whether a restricted user is a member of the chat.</li>
<li>Added the field <em>forward_sender_name</em> to the <a href="/bots/api#message">Message</a> object, containing name of the sender who has opted to hide their account.</li>
<li>Starting in July 2019, webhook requests from Bot API will be coming from the subnets <code>149.154.160.0/20</code> and <code>91.108.4.0/22</code>. Most users won&#39;t need to do anything to continue receiving webhooks. If you control inbound access with a firewall, you may need to update your configuration. You can always find the list of actual IP addresses of servers used to send webhooks there: <a href="/bots/webhooks"><a href="https://core.telegram.org/bots/webhooks">https://core.telegram.org/bots/webhooks</a></a>.</li>
<li>Document thumbnails now should be inscribed in a 320x320 square instead of 90x90.</li>
</ul>
<h3><a class="anchor" name="august-27-2018" href="#august-27-2018"><i class="anchor-icon"></i></a>August 27, 2018</h3>
<p><strong>Bot API 4.1</strong></p>
<ul>
<li>Added support for translated versions of documents in <a href="/passport">Telegram Passport</a>.</li>
<li>New field <em>translation</em> in <a href="/bots/api#encryptedpassportelement">EncryptedPassportElement</a>.</li>
<li>New errors: <a href="/bots/api#passportelementerrortranslationfile">PassportElementErrorTranslationFile</a> and <a href="/bots/api#passportelementerrortranslationfile">PassportElementErrorTranslationFiles</a> and <a href="/bots/api#passportelementerrorunspecified">PassportElementErrorUnspecified</a>.</li>
</ul>
<h3><a class="anchor" name="july-26-2018" href="#july-26-2018"><i class="anchor-icon"></i></a>July 26, 2018</h3>
<p><strong>Bot API 4.0</strong>.</p>
<ul>
<li>Added support for <a href="https://telegram.org/blog/passport"><strong>Telegram Passport</strong></a>. See the official announcement on the <a href="https://telegram.org/blog">blog</a> and the <a href="https://core.telegram.org/passport">manual</a> for details.</li>
<li>Added support for <strong>editing the media content of messages</strong>: added the method <a href="/bots/api#editmessagemedia">editMessageMedia</a> and new types <a href="/bots/api#inputmediaanimation">InputMediaAnimation</a>, <a href="/bots/api#inputmediaaudio">InputMediaAudio</a>, and <a href="/bots/api#inputmediadocument">InputMediaDocument</a>.</li>
<li>Added the field <em>thumb</em> to the <a href="/bots/api#audio">Audio</a> object to contain the thumbnail of the album cover to which the music file belongs.</li>
<li>Added support for attaching custom thumbnails to uploaded files. For animations, audios, videos and video notes, which are less than 10 MB in size, thumbnails are generated automatically.</li>
<li><code>tg://</code> URLs now can be used in inline keyboard url buttons and <code>text_link</code> message entities. </li>
<li>Added the method <a href="/bots/api#sendanimation">sendAnimation</a>, which can be used instead of <a href="/bots/api#senddocument">sendDocument</a> to send animations, specifying their duration, width and height.</li>
<li>Added the field <a href="/bots/api#animation">animation</a> to the <a href="/bots/api#message">Message</a> object. For backward compatibility, when this field is set, the <em>document</em> field will be also set.</li>
<li>Added two new <a href="/bots/api#messageentity">MessageEntity</a> types: <em>cashtag</em> and <em>phone_number</em>.</li>
<li>Added support for Foursquare venues: added the new field <em>foursquare_type</em> to the objects <a href="/bots/api#venue">Venue</a>, <a href="/bots/api#inlinequeryresultvenue">InlineQueryResultVenue</a> and <a href="/bots/api#inputvenuemessagecontent">InputVenueMessageContent</a>, and the parameter <em>foursquare_type</em> to the <a href="/bots/api#sendvenue">sendVenue</a> method.</li>
<li>You can now create inline mentions of users, who have pressed your bot&#39;s callback buttons.</li>
<li>You can now use the <code>Retry-After</code> response header to configure the delay after which the Bot API will retry the request after an unsuccessful response from a webhook.</li>
<li>If a webhook returns the HTTP error <code>410 Gone</code> for all requests for more than 23 hours successively, it can be automatically removed.</li>
<li>Added <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> support when sharing contacts: added the field <em>vcard</em> to the objects <a href="/bots/api#contact">Contact</a>, <a href="/bots/api#inlinequeryresultcontact">InlineQueryResultContact</a>, <a href="/bots/api#inputcontactmessagecontent">InputContactMessageContent</a> and the method <a href="/bots/api#sendcontact">sendContact</a>.</li>
</ul>
<h3><a class="anchor" name="february-13-2018" href="#february-13-2018"><i class="anchor-icon"></i></a>February 13, 2018</h3>
<p><strong>Bot API 3.6</strong>.</p>
<ul>
<li>Supported <a href="https://core.telegram.org/bots/api#formatting-options">text formatting</a> in media captions. Specify the desired <em>parse_mode</em> (<a href="https://core.telegram.org/bots/api#markdown-style">Markdown</a> or <a href="https://core.telegram.org/bots/api#html-style">HTML</a>) when you provide a caption.</li>
<li>In supergroups, if the bot receives a message that is a reply, it will also receive the message to which that message is replying even if the original message is inaccessible due to the bot&#39;s privacy settings. (In other words, replying to any message in a supergroup with a message that mentions the bot or features a command for it acts as forwarding the original message to the bot). </li>
<li>Added the new field <em>connected_website</em> to <a href="/bots/api#message">Message</a>. The bot will receive a message with this field in a private chat when a user logs in on the bot&#39;s connected website using the <a href="https://core.telegram.org/widgets/login">Login Widget</a> and allows sending messages from your bot.</li>
<li>Added the new parameter <em>supports_streaming</em> to the <a href="/bots/api#sendvideo">sendVideo</a> method and a field with the same name to the <a href="/bots/api#inputmediavideo">InputMediaVideo</a> object.</li>
</ul>
<h3><a class="anchor" name="november-17-2017" href="#november-17-2017"><i class="anchor-icon"></i></a>November 17, 2017</h3>
<p><strong>Bot API 3.5</strong>.</p>
<ul>
<li>Added the new method <a href="/bots/api#sendmediagroup">sendMediaGroup</a> and two kinds of <a href="/bots/api#inputmedia">InputMedia</a> objects to support the new <a href="https://telegram.org/blog/albums-saved-messages">albums feature</a>.</li>
<li>Added support for pinning messages in channels. <a href="/bots/api#pinchatmessage">pinChatMessage</a> and <a href="/bots/api#unpinchatmessage">unpinChatMessage</a> accept channels.</li>
<li>Added the new fields <em>provider_data</em>, <em>send_phone_number_to_provider</em>, <em>send_email_to_provider</em> to <a href="/bots/api#sendinvoice">sendInvoice</a> for sharing information about the invoice with the payment provider.</li>
</ul>
<h3><a class="anchor" name="october-11-2017" href="#october-11-2017"><i class="anchor-icon"></i></a>October 11, 2017</h3>
<p><strong>Bot API 3.4</strong>.</p>
<ul>
<li>Bots can now send and receive <a href="https://telegram.org/blog/live-locations">Live Locations</a>. Added new field <em>live_period</em> to the <a href="/bots/api#sendlocation">sendLocation</a> method and the <a href="/bots/api#editmessagelivelocation">editMessageLiveLocation</a> and <a href="/bots/api#stopmessagelivelocation">stopMessageLiveLocation</a> methods as well as the necessary objects for inline bots.</li>
<li>Bots can use the new <a href="/bots/api#setchatstickerset">setChatStickerSet</a> and <a href="/bots/api#deletechatstickerset">deleteChatStickerSet</a> methods to manage <a href="https://telegram.org/blog#stickers-of-the-group">group sticker sets</a>.</li>
<li>The <a href="/bots/api#getchat">getChat</a> request now returns the group&#39;s sticker set for supergroups if available.</li>
<li>Bots now receive entities from media captions in the new field <em>caption_entities</em> in <a href="/bots/api#message">Message</a>.</li>
</ul>
<h3><a class="anchor" name="august-23-2017" href="#august-23-2017"><i class="anchor-icon"></i></a>August 23, 2017</h3>
<p><strong>Bot API 3.3</strong>.</p>
<ul>
<li>Bots can now mention users via <a href="/bots/api#formatting-options">inline mentions</a>, without using usernames.</li>
<li><a href="/bots/api#getchat">getChat</a> now also returns pinned messages in supergroups, if present. Added the new field <em>pinned_message</em> to the <a href="/bots/api#chat">Chat</a> object.</li>
<li>Added the new fields <em>author_signature</em> and <em>forward_signature</em> to the <a href="/bots/api#message">Message</a> object.</li>
<li>Added the new field <em>is_bot</em> to the <a href="/bots/api#user">User</a> object.</li>
</ul>
<h3><a class="anchor" name="july-21-2017" href="#july-21-2017"><i class="anchor-icon"></i></a>July 21, 2017</h3>
<p><strong>Bot API 3.2</strong>. Teach your bot to handle <a href="/bots/api#stickers">stickers and sticker sets</a>.</p>
<ul>
<li>Added new methods for working with stickers: <a href="/bots/api#getstickerset">getStickerSet</a>, <a href="/bots/api#uploadstickerfile">uploadStickerFile</a>, <a href="/bots/api#createnewstickerset">createNewStickerSet</a>, <a href="/bots/api#addstickertoset">addStickerToSet</a>, <a href="/bots/api#setstickerpositioninset">setStickerPositionInSet</a>, and <a href="/bots/api#deletestickerfromset">deleteStickerFromSet</a>.</li>
<li>Added the fields <em>set_name</em> and <em>mask_position</em> to the <a href="/bots/api#sticker">Sticker</a> object, plus two new objects, <a href="/bots/api#stickerset">StickerSet</a>, and <a href="/bots/api#maskposition">MaskPosition</a>.</li>
</ul>
<h3><a class="anchor" name="june-30-2017" href="#june-30-2017"><i class="anchor-icon"></i></a>June 30, 2017</h3>
<p><strong>Bot API 3.1</strong>. Build your own robotic police force for supergoups with these new methods for admin bots:</p>
<ul>
<li>Added new methods <a href="/bots/api#restrictchatmember">restrictChatMember</a> and <a href="/bots/api#promotechatmember">promoteChatMember</a> to manage users and admins, added new parameter <em>until_date</em> to <a href="/bots/api#kickchatmember">kickChatMember</a> for temporary bans.</li>
<li>Added new methods <a href="/bots/api#exportchatinvitelink">exportChatInviteLink</a>, <a href="/bots/api#setchatphoto">setChatPhoto</a>, <a href="/bots/api#deletechatphoto">deleteChatPhoto</a>, <a href="/bots/api#setchattitle">setChatTitle</a>, <a href="/bots/api#setchatdescription">setChatDescription</a>, <a href="/bots/api#pinchatmessage">pinChatMessage</a> and <a href="/bots/api#unpinchatmessage">unpinChatMessage</a> to manage groups and channels.</li>
<li>Added the new fields <em>photo</em>, <em>description</em> and <em>invite_link</em> to the <a href="/bots/api#chat">Chat</a> object.</li>
<li>Added the new fields <em>until_date</em>, <em>can_be_edited</em>, <em>can_change_info</em>, <em>can_post_messages</em>, <em>can_edit_messages</em>, <em>can_delete_messages</em>, <em>can_invite_users</em>, <em>can_restrict_members</em>, <em>can_pin_messages</em>, <em>can_promote_members</em>, <em>can_send_messages</em>, <em>can_send_media_messages</em>, <em>can_send_other_messages</em> and <em>can_add_web_page_previews</em> to the <a href="/bots/api#chatmember">ChatMember</a> object.</li>
</ul>
<h3><a class="anchor" name="may-18-2017" href="#may-18-2017"><i class="anchor-icon"></i></a>May 18, 2017</h3>
<p>Introducing <strong>Bot API 3.0</strong>.</p>
<p><strong>NEW Payment Platform</strong></p>
<p>See <a href="/bots/payments">Introduction to Bot Payments</a> for a brief overview. If you&#39;re not a developer, you may like <a href="https://telegram.org/blog/payments">this user-friendly blog post</a> better.</p>
<ul>
<li>Your bot can now accept <a href="/bots/api#payments">payments</a> for goods and services via Telegram. </li>
<li>Added new kinds of <a href="/bots/api#update">updates</a>, <em>shipping_query</em> and <em>pre_checkout_query</em>, and new types of <a href="/bots/api#message">message</a> content, <em>invoice</em> and <em>successful_payment</em>.</li>
<li>Added new methods for payments: <a href="/bots/api#sendinvoice">sendInvoice</a>, <a href="/bots/api#answershippingquery">answerShippingQuery</a>, and <a href="/bots/api#answerprecheckoutquery">answerPreCheckoutQuery</a>.</li>
<li>Added a new type of button, the <strong>pay</strong> button to <a href="/bots/api#inlinekeyboardbutton">InlineKeyboardButton</a>.</li>
</ul>
<p><strong>NEW Video Messages</strong></p>
<ul>
<li>As of Telegram v.4.0, users can send short rounded <a href="https://telegram.org/blog/payments">video messages</a>, using an interface similar to that of voice notes.</li>
<li>Added the <a href="/bots/api#sendvideonote">sendVideoNote</a> method, the new field <em>video_note</em> to <a href="/bots/api#message">Message</a>, the fields <em>record_video_note</em> or <em>upload_video_note</em> to <a href="/bots/api#sendchataction">sendChatAction</a>.</li>
</ul>
<p><strong>NEW Multilingual Bots</strong></p>
<ul>
<li>The <a href="/bots/api#user">User</a> object now may have a <em>language_code</em> field that contains the <a href="https://en.wikipedia.org/wiki/IETF_language_tag">IETF language tag</a> of the user&#39;s language.</li>
<li>Thanks to this, your bot can now offer localized responses to users that speak different languages.</li>
</ul>
<p><strong>More power to admin bots</strong></p>
<ul>
<li><a href="/bots/api#unbanchatmember">unbanChatMemeber</a> now also works in channels!</li>
<li>New method <a href="/bots/api#deletemessages">deleteMessage</a> that allows the bot to delete its own messages, as well as messages posted by other in groups and channels where the bot is an administrator.</li>
</ul>
<p><strong>Minor Changes</strong></p>
<ul>
<li>Replaced the field <em>new_chat_member</em> in <a href="/bots/api#message">Message</a> with <em>new_chat_members</em> (the old field will still be available for a while for compatibility purposes).</li>
<li><a href="https://core.telegram.org/bots/api#inlinekeyboardbutton">Inline keyboards</a> with <em>switch_inline_query</em> and <em>switch_inline_query_current_chat</em> can no longer be sent to channels because they are useless there.</li>
<li>New fields <em>gif_duration</em> in <a href="/bots/api#inlinequeryresultgif">InlineQueryResultGif</a> and <em>mpeg4_duration</em> in <a href="/bots/api#inlinequeryresultmpeg4gif">InlineQueryResultMpeg4Gif</a>.</li>
</ul>
<h3><a class="anchor" name="december-4-2016" href="#december-4-2016"><i class="anchor-icon"></i></a>December 4, 2016</h3>
<p>Introducing <strong>Bot API 2.3.1</strong>, a nifty little update that will give you more control over how your bot gets its updates.</p>
<ul>
<li>Use the new field <em>max_connections</em> in <a href="/bots/api#setwebhook">setWebhook</a> to optimize your bot&#39;s server load</li>
<li>Use <em>allowed_updates</em> in <a href="/bots/api#setwebhook">setWebhook</a> and <a href="/bots/api#getupdates">getUpdates</a> to selectively subscribe to updates of a certain type. Among other things, this allows you to stop getting updates about new posts in channels where your bot is an admin.</li>
<li><a href="/bots/api#deletewebhook">deleteWebhook</a> moved out of <a href="/bots/api#setwebhook">setWebhook</a> to get a whole separate method for itself.</li>
</ul>
<h3><a class="anchor" name="november-21-2016" href="#november-21-2016"><i class="anchor-icon"></i></a>November 21, 2016</h3>
<p><strong>Bot API 2.3</strong></p>
<ul>
<li>Modified <a href="/bots/faq#what-messages-will-my-bot-get"><strong>bot privacy mode</strong></a> for the sake of consistency. </li>
<li><p>Your bot can now get <strong>updates about posts in channels</strong>. Added new fields <em>channel_post</em> and <em>edited_channel_post</em> to <a href="/bots/#update">Update</a>.</p>
</li>
<li><p>You can now update high scores to a lower value by using the new <em>force</em> parameter in <a href="/bots/#setgamescore">setGameScore</a>. Handy for punishing <strong>cheaters</strong> or fixing errors in your game&#39;s High Score table.</p>
</li>
<li>Starting today, messages with high scores will be updated with new high scores by default. Use <em>disable_edit_message</em> in <a href="/bots/#setgamescore">setGameScore</a> if you don&#39;t want this.</li>
<li>The <em>edit_message</em> parameter from <a href="/bots/#setgamescore">setGameScore</a> is no longer in use. For backward compatibility, it will be taken into account for a while, unless <em>disable_edit_message</em> is passed explicitly.</li>
<li>Added the new field <em>forward_from_message_id</em> to <a href="/bots/#message">Message</a>.</li>
<li>Added the new parameter <em>cache_time</em> to <a href="/bots/#answercallbackquery">answerCallbackQuery</a>. Will eventually work in Telegram apps — somewhere after version 3.14, maybe 3.15.</li>
<li>Renamed <em>hide_keyboard</em> to <em>remove_keyboard</em> in <a href="/bots/#replykeyboardremove">ReplyKeyboardRemove</a> for clarity. <em>hide_keyboard</em> will still work for a while for backward compatibility.</li>
</ul>
<h3><a class="anchor" name="october-3-2016" href="#october-3-2016"><i class="anchor-icon"></i></a>October 3, 2016</h3>
<p><strong>Bot API 2.2.</strong> <a href="/bots/games">Introducing a new Gaming Platform!</a> See <a href="/bots/games">this introduction</a> for a brief overview.<br>If you&#39;re not a developer, you may like <a href="https://telegram.org/blog/games"><strong>this user-friendly blog post</strong></a> better.</p>
<ul>
<li>New tools for building <a href="/bots/api#games"><strong>HTML5 games</strong></a>.</li>
<li>New method <a href="/bots/api#sendgame">sendGame</a>, new object <a href="/bots/api#inlinequeryresultgame">InlineQueryResultGame</a>, new field <em>game</em> in <a href="/bots/api#message">Message</a>.</li>
<li>New parameter <em>url</em> in <a href="/bots/api#answercallbackquery">answerCallbackQuery</a>. Create a game and accept the conditions using Botfather to send custom urls that open your games for the user.</li>
<li>New field <em>callback_game</em> in <a href="/bots/api#inlinekeyboardbutton">InlineKeyboardButton</a>, new fields <em>game_short_name</em> and <em>chat_instance</em> in <a href="/bots/api#callbackquery">CallbackQuery</a>, new object <a href="/bots/api#callbackgame">CallbackGame</a>. </li>
<li>New methods <a href="/bots/api#setgamescore">setGameScore</a> and <a href="/bots/api#getgamehighscores">getGameHighScores</a>.</li>
</ul>
<p><strong>Other changes</strong></p>
<ul>
<li>Making life easier for webhook users. Added a detailed <a href="https://core.telegram.org/bots/webhooks"><strong>Guide to All Things Webhook</strong></a> that describes every pothole you can run into on the webhook road.</li>
<li><p>New method <a href="/bots/api#getwebhookinfo">getWebhookInfo</a> to check current webhook status.</p>
</li>
<li><p>Added the option to specify an <strong>HTTP URL</strong> for a file in all methods where <a href="/bots/api#inputfile">InputFile</a> or <em>file_id</em> can be used (except voice messages). Telegram will get the file from the specified URL and send it to the user. Files must be smaller than 5 MB for photos and smaller than 20 MB for all other types of content.</p>
</li>
<li>Use the new <em>url</em> parameter in <a href="/bots/api#answercallbackquery">answerCallbackQuery</a> to create buttons that open your bot with user-specific parameters.</li>
<li>Added new field <em>switch_inline_query_current_chat</em> in <a href="/bots/api#inlinekeyboardbutton">InlineKeyboardButton</a>.</li>
<li>Added <em>caption</em> fields to <a href="/bots/api#sendaudio">sendAudio</a>, <a href="/bots/api#sendvoice">sendVoice</a>, <a href="/bots/api#inlinequeryresultaudio">InlineQueryResultAudio</a>, <a href="/bots/api#inlinequeryresultvoice">InlineQueryResultVoice</a>, <a href="/bots/api#inlinequeryresultcachedaudio">InlineQueryResultCachedAudio</a>, and <a href="/bots/api#inlinequeryresultcachedvoice">InlineQueryResultCachedVoice</a>.</li>
</ul>
<ul>
<li>New field <em>all_members_are_administrators</em> in the <a href="/bots/api#chat">Chat</a> object.</li>
<li>Certain server responses may now contain the new <a href="/bots/api#responseparameters"><em>parameters</em></a> field with expanded info on errors that occurred while processing your requests.</li>
</ul>
<h3><a class="anchor" name="may-25-2016" href="#may-25-2016"><i class="anchor-icon"></i></a>May 25, 2016</h3>
<ul>
<li><a href="/bots/api#inlinekeyboardmarkup">Inline keyboards</a> may now be used in group chats. Channels coming soon.</li>
<li>Check out <a href="https://telegram.me/vote">@vote</a> and <a href="https://telegram.me/like">@like</a> for examples.</li>
</ul>
<h3><a class="anchor" name="may-22-2016" href="#may-22-2016"><i class="anchor-icon"></i></a>May 22, 2016</h3>
<ul>
<li><strong>Bot API 2.1.</strong> Added more tools for group administrator bots. Your bot can now get a list of administrators and members count in a group, check a user&#39;s current status (administrator, creator, left the group, kicked from the group), and leave a group.</li>
<li>Added new methods: <a href="/bots/api#getchat">getChat</a>, <a href="/bots/api#leavechat">leaveChat</a>, <a href="/bots/api#getchatadministrators">getChatAdministrators</a>, <a href="/bots/api#getchatmember">getChatMember</a>, <a href="/bots/api#getchatmemberscount">getChatMembersCount</a>.</li>
<li>Added support for <a href="https://telegram.org/blog/edit">edited messages</a> and <a href="https://telegram.org/blog/edit#new-mentions">new mentions</a> from Telegram v.3.9. New fields: <em>edited_message</em> in <a href="/bots/api#update">Update</a>, <em>edit_date</em> in <a href="/bots/api#message">Message</a>, <em>user</em> in <a href="/bots/api#messageentity">MessageEntity</a>. New value <em>text_mention</em> for the <em>type</em> field in <a href="/bots/api#messageentity">MessageEntity</a>.</li>
</ul>
<h3><a class="anchor" name="may-12-2016" href="#may-12-2016"><i class="anchor-icon"></i></a>May 12, 2016</h3>
<ul>
<li>Added consistency to what messages bots get in groups and supergroups. <a href="/bots/faq#what-messages-will-my-bot-get">See updated FAQ for details »</a></li>
</ul>
<h3><a class="anchor" name="may-6-2016" href="#may-6-2016"><i class="anchor-icon"></i></a>May 6, 2016</h3>
<ul>
<li>Added the field <em>emoji</em> to the <a href="/bots/api#sticker">Sticker</a> object. Your bot can now know the emoji a sticker corresponds to.</li>
<li>Added the field <em>forward_from_chat</em> to the <a href="/bots/api#message">Message</a> object for messages forwarded from channels.</li>
</ul>
<h3><a class="anchor" name="april-9-2016" href="#april-9-2016"><i class="anchor-icon"></i></a>April 9, 2016</h3>
<p>Introducing <strong>Bot API 2.0</strong>. Check out <a href="/bots/2-0-intro">this page</a> for a review of this major update.</p>
<ul>
<li>New <a href="/bots/2-0-intro#new-inline-keyboards"><strong>inline keyboards</strong></a> with <strong>callback</strong> and <strong>URL buttons</strong>. Added new objects <a href="/bots/api#inlinekeyboardmarkup">InlineKeyboardMarkup</a>, <a href="/bots/api#inlinekeyboardbutton">InlineKeyboardButton</a> and <a href="/bots/api#callbackquery">CallbackQuery</a>, added <em>reply_markup</em> fields to all <a href="/bots/api#inlinequeryresult">InlineQueryResult</a> objects. Added field <em>callback_query</em> to the <a href="/bots/api#update">Update</a> object, new method <a href="/bots/api#answercallbackquery">answerCallbackQuery</a>.</li>
<li>Bots can now <a href="/bots/api#updating-messages"><strong>edit</strong> their messages</a>. Added methods <a href="/bots/api#editmessagetext">editMessageText</a>, <a href="/bots/api#editmessagecaption">editMessageCaption</a>, <a href="/bots/api#editmessagereplymarkup">editMessageReplyMarkup</a>.</li>
<li>Bots can request <strong>location</strong> and <strong>phone number</strong> from the user. The <em>keyboard</em> field in the object <a href="/bots/api#replykeyboardmarkup">ReplyKeyboardMarkup</a> now supports <a href="/bots/api#keyboardbutton">KeyboardButton</a>, a new object that can have the fields <em>request_location</em> and <em>request_contact</em>.</li>
</ul>
<p><strong>Inline bots</strong></p>
<ul>
<li>Added support for all content types available on Telegram. <strong>19 types</strong> of <a href="/bots/api#inlinequeryresult">InlineQueryResult</a> objects are now supported.</li>
<li>Inline bots can now <strong>substitute</strong> all kinds of content with text. Added 4 types of <a href="/bots/api#inputmessagecontent">InputMessageContent</a> objects.</li>
<li>Your inline bot can also ask users for permission to use their location. Added the new Botfather command <code>/setinlinegeo</code>, added field <em>location</em> to the <a href="/bots/api#inlinequery">InlineQuery</a> object, added fields <em>location</em> and <em>inline_message_id</em> to the <a href="/bots/api#choseninlineresult">ChosenInlineResult</a> object.</li>
<li>Added an easy way to <strong>switch</strong> between inline mode and a private chat with the bot useful for settings, establishing external connections and teaching users how to use your bot in inline mode. Added parameters <em>switch_pm_text</em> and <em>switch_pm_parameter</em> to the method <a href="/bots/api#answerinlinequery">answerInlineQuery</a>.</li>
</ul>
<p><strong>Miscellaneous</strong></p>
<ul>
<li>Added group <strong>administration</strong> tools. New methods <a href="/bots/api#kickchatmember">kickChatMember</a> and <a href="/bots/api#unbanchatmember">unbanChatMember</a>.</li>
<li>Added fields <em>venue</em>, <em>pinned_message</em> and <em>entities</em> to the <a href="/bots/api#message">Message</a> object. Added new objects <a href="/bots/api#messageentity">MessageEntity</a> and <a href="/bots/api#venue">Venue</a>, new methods <a href="/bots/api#sendvenue">sendVenue</a> and <a href="/bots/api#sendcontact">sendContact</a>.</li>
<li>Renamed the fields <em>new_chat_participant</em> and <em>left_chat_participant</em> of the <a href="/bots/api#message">Message</a> object to <em>new_chat_member</em> and <em>left_chat_member</em>.</li>
</ul>
<h3><a class="anchor" name="february-20-2016" href="#february-20-2016"><i class="anchor-icon"></i></a>February 20, 2016</h3>
<ul>
<li>Added the <em>disable_notification</em> parameter to all methods that send messages or any kind.</li>
<li>Removed backward compatibility from the method <a href="/bots/api#sendaudio">sendAudio</a>. Voice messages now must be sent using the method <a href="/bots/api#sendvoice">sendVoice</a>. There is no more need to specify a non-empty title or performer while sending the audio by <em>file_id</em>.</li>
</ul>
<h3><a class="anchor" name="january-20-2016" href="#january-20-2016"><i class="anchor-icon"></i></a>January 20, 2016</h3>
<ul>
<li>By the way, you can use both HTML-style and markdown-style formatting in your bot&#39;s messages to send bold, italic or fixed-width text and inline links. All official Telegram clients support this. See <a href="/bots/api#formatting-options">Formatting options</a> for details.</li>
</ul>
<h3><a class="anchor" name="january-14-2016" href="#january-14-2016"><i class="anchor-icon"></i></a>January 14, 2016</h3>
<ul>
<li>You can now <a href="/bots/inline#collecting-feedback">collect feedback</a> on which results provided by your inline bot get chosen by the users. Added the <code>setinlinefeedback</code> command for Botfather, new type <a href="/bots/api#choseninlineresult">ChosenInlineResult</a>, new field <em>chosen_inline_result</em> to the <a href="/bots/api#update">Update</a> object.</li>
</ul>
<h3><a class="anchor" name="january-4-2016" href="#january-4-2016"><i class="anchor-icon"></i></a>January 4, 2016</h3>
<ul>
<li>Added support for <a href="/bots/inline">Inline Mode</a>, a new way for people to contact your bot by typing its username and a query in the text input field in any chat. Enable by sending <code>/setinline</code> to <a href="https://telegram.me/botfather">@BotFather</a>.</li>
<li>New optional field <em>inline_query</em> added to the <a href="/bots/api#update">Update</a> object.</li>
<li>Added new method <a href="/bots/api#answerinlinequery">answerInlineQuery</a> and new objects <a href="/bots/api#inlinequery">InlineQuery</a>, <a href="/bots/api#inlinequeryresultarticle">InlineQueryResultArticle</a>, <a href="/bots/api#inlinequeryresultphoto">InlineQueryResultPhoto</a>, <a href="/bots/api#inlinequeryresultgif">InlineQueryResultGif</a>, <a href="/bots/api#inlinequeryresultmpeg4gif">InlineQueryResultMpeg4Gif</a> and <a href="/bots/api#inlinequeryresultvideo">InlineQueryResultVideo</a>.</li>
</ul>
<h3><a class="anchor" name="november-2015" href="#november-2015"><i class="anchor-icon"></i></a>November, 2015</h3>
<ul>
<li>Added support for <a href="https://telegram.org/blog/supergroups">supergroups</a>. The <em>Type</em> field in the <a href="/bots/api#chat">Chat</a> object can now contain &#39;supergroup&#39;.</li>
<li>New optional fields added to the <a href="/bots/api#message">Message</a> object: <em>supergroup_chat_created</em>, <em>migrate_to_chat_id</em>, <em>migrate_from_chat_id</em> and <em>channel_chat_created</em>.</li>
</ul>
<h3><a class="anchor" name="october-8-2015" href="#october-8-2015"><i class="anchor-icon"></i></a>October 8, 2015</h3>
<ul>
<li>Added initial channel support for bots (no Telegram clients support this at the moment, please wait for updates):</li>
<li>The <em>Chat</em> field in the <a href="/bots/api#message">Message</a> is now of the new type <a href="/bots/api#chat">Chat</a>.</li>
<li>You can now pass a channel username (in the format <code>@channelusername</code>) in the place of <em>chat_id</em> in all methods (and instead of <em>from_chat_id</em> in <a href="/bots/api#forwardmessage">forwardMessage</a>). For this to work, the bot must be an administrator in the channel (and that&#39;s exactly what Telegram clients don&#39;t support yet — adding bots as administrators coming soon).</li>
</ul>
<h3><a class="anchor" name="september-18-2015" href="#september-18-2015"><i class="anchor-icon"></i></a>September 18, 2015</h3>
<ul>
<li>Bots can now download files and media sent by users.</li>
<li>Added <a href="/bots/api#getfile">getFile</a> and <a href="/bots/api#file">File</a>.</li>
</ul>
<h3><a class="anchor" name="september-7-2015" href="#september-7-2015"><i class="anchor-icon"></i></a>September 7, 2015</h3>
<ul>
<li>You can now <a href="/bots/api#making-requests">pass parameters</a> using <em>application/json</em> (please note that this doesn&#39;t work for file uploads: use <em>multipart/form-data</em> to upload files).</li>
<li>Added very basic <a href="/bots/api#using-markdown">markdown support</a>. New field <em>parse_mode</em> added to <a href="/bots/api#sendmessage">sendMessage</a>. For the moment messages with markdown will be displayed correctly only in Telegram for <strong>Android</strong>. Other official apps will catch up soon.</li>
</ul>
<h3><a class="anchor" name="august-29-2015" href="#august-29-2015"><i class="anchor-icon"></i></a>August 29, 2015</h3>
<ul>
<li>Added support for self-signed certificates: upload your certificate using the <em>certificate</em> parameter in the <a href="/bots/api#setwebhook">setWebhook</a> method.</li>
<li>You can now make <a href="/bots/api#making-requests-when-getting-updates">new requests</a> when responding to webhook updates.</li>
</ul>
<h3><a class="anchor" name="august-15-2015" href="#august-15-2015"><i class="anchor-icon"></i></a>August 15, 2015</h3>
<ul>
<li>Added new type <strong><a href="/bots/api#voice">Voice</a></strong> and new method <a href="/bots/api#sendvoice"><strong>sendVoice</strong></a> for sending voice messages.</li>
<li>Earlier <strong><a href="/bots/api#audio">Audio</a></strong> and <strong><a href="/bots/api#sendaudio">sendAudio</a></strong> should now be used for sending music files. Telegram clients will show such files in the in-app music player. If you were using <a href="/bots/api#sendaudio"><strong>sendAudio</strong></a> for your bot to send voice messages, please use <a href="/bots/api#sendaudio"><strong>sendVoice</strong></a> instead.</li>
<li>Added optional fields <em>performer</em>, <em>title</em> to the <a href="/bots/api#audio"><strong>Audio</strong></a> object and <a href="/bots/api#sendaudio"><strong>sendAudio</strong></a> method.</li>
<li>Added optional field <em>voice</em> to the <a href="/bots/api#message"><strong>Message</strong></a> object.</li>
</ul>
<h3><a class="anchor" name="july-2015" href="#july-2015"><i class="anchor-icon"></i></a>July 2015</h3>
<ul>
<li>The <strong>thumb</strong> field is now optional for <a href="/bots/api#video">Video</a>, <a href="/bots/api#sticker">Sticker</a> and <a href="/bots/api#document">Document</a> objects</li>
<li>The API now supports both video and photo captions. The <strong>caption</strong> field has been removed from the <a href="/bots/api#video">Video</a> object and added to the <a href="/bots/api#message">Message</a> object instead. </li>
<li><strong>caption</strong> and <strong>duration</strong> optional fields have been added to the <a href="/bots/api#sendvideo">sendVideo</a> method.</li>
<li>Fixed typo: <strong>user_id</strong> in the Contact object is now correctly labeled as Integer, not String</li>
</ul>
<h3><a class="anchor" name="june-24-2015" href="#june-24-2015"><i class="anchor-icon"></i></a>June 24, 2015</h3>
<p>The bot platform was <a href="https://telegram.org/blog/bot-revolution">officially launched</a>.</p>
<blockquote>
<p><strong><a href="/bots/api">Back to the Bot API Manual »</a></strong></p>
</blockquote>
</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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script src="/js/jquery.min.js?1"></script>
<script src="/js/bootstrap.min.js"></script>
<script>window.initDevPageNav&&initDevPageNav();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,132 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>inputCheckPasswordEmpty</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="There is no password">
<meta property="og:title" content="inputCheckPasswordEmpty">
<meta property="og:image" content="">
<meta property="og:description" content="There is no password">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class="active"><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="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputCheckPasswordEmpty" >inputCheckPasswordEmpty</a></li></ul></div>
<h1 id="dev_page_title">inputCheckPasswordEmpty</h1>
<div id="dev_page_content"><p>There is no password</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/inputCheckPasswordEmpty" class="current_page_link" >inputCheckPasswordEmpty</a>#9880f658 = <a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</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/InputCheckPasswordSRP">InputCheckPasswordSRP</a></p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,150 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>messages.historyImport</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="ID of a specific chat import session, click here for more info ».">
<meta property="og:title" content="messages.historyImport">
<meta property="og:image" content="">
<meta property="og:description" content="ID of a specific chat import session, click here for more info ».">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class="active"><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="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messages.historyImport" >messages.historyImport</a></li></ul></div>
<h1 id="dev_page_title">messages.historyImport</h1>
<div id="dev_page_content"><p>ID of a specific <a href="/api/import">chat import session, click here for more info »</a>.</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/messages.historyImport" class="current_page_link" >messages.historyImport</a>#1662af0b id:<a href="/type/long" >long</a> = <a href="/type/messages.HistoryImport" >messages.HistoryImport</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><a href="/api/import">History import ID</a></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/messages.HistoryImport">messages.HistoryImport</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="#imported-messages" id="imported-messages" name="imported-messages"><i class="anchor-icon"></i></a><a href="/api/import">Imported messages</a></h4>
<p>Telegram allows importing messages and media from foreign chat apps.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,132 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>speakingInGroupCallAction</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="User is currently speaking in the group call">
<meta property="og:title" content="speakingInGroupCallAction">
<meta property="og:image" content="">
<meta property="og:description" content="User is currently speaking in the group call">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class="active"><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="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/speakingInGroupCallAction" >speakingInGroupCallAction</a></li></ul></div>
<h1 id="dev_page_title">speakingInGroupCallAction</h1>
<div id="dev_page_content"><p>User is currently speaking in the group call</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/speakingInGroupCallAction" class="current_page_link" >speakingInGroupCallAction</a>#d92c2285 = <a href="/type/SendMessageAction" >SendMessageAction</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/SendMessageAction">SendMessageAction</a></p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,132 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>storage.fileWebp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="WEBP image. MIME type: image/webp.">
<meta property="og:title" content="storage.fileWebp">
<meta property="og:image" content="">
<meta property="og:description" content="WEBP image. MIME type: image/webp.">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class="active"><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="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/storage.fileWebp" >storage.fileWebp</a></li></ul></div>
<h1 id="dev_page_title">storage.fileWebp</h1>
<div id="dev_page_content"><p>WEBP image. MIME type: <code>image/webp</code>.</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/storage.fileWebp" class="current_page_link" >storage.fileWebp</a>#1081464c = <a href="/type/storage.FileType" >storage.FileType</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/storage.FileType">storage.FileType</a></p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,165 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>updates.channelDifferenceEmpty</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="There are no new updates">
<meta property="og:title" content="updates.channelDifferenceEmpty">
<meta property="og:image" content="">
<meta property="og:description" content="There are no new updates">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class="active"><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="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updates.channelDifferenceEmpty" >updates.channelDifferenceEmpty</a></li></ul></div>
<h1 id="dev_page_title">updates.channelDifferenceEmpty</h1>
<div id="dev_page_content"><p>There are no new updates</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/updates.channelDifferenceEmpty" class="current_page_link" >updates.channelDifferenceEmpty</a>#3e11affb flags:<a href="/type/%23" >#</a> final:flags.0?true pts:<a href="/type/int" >int</a> timeout:flags.1?<a href="/type/int" >int</a> = <a href="/type/updates.ChannelDifference" >updates.ChannelDifference</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>final</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>Whether there are more updates that must be fetched (always false)</td>
</tr>
<tr>
<td><strong>pts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td>The latest <a href="/api/updates">PTS</a></td>
</tr>
<tr>
<td><strong>timeout</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>Clients are supposed to refetch the channel difference after timeout seconds have elapsed</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/updates.ChannelDifference">updates.ChannelDifference</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="#working-with-updates" id="working-with-updates" name="working-with-updates"><i class="anchor-icon"></i></a><a href="/api/updates">Working with Updates</a></h4>
<p>How to subscribe to updates and handle them properly.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,187 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>messages.getGameHighScores</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Get highscores of a game">
<meta property="og:title" content="messages.getGameHighScores">
<meta property="og:image" content="">
<meta property="og:description" content="Get highscores of a game">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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><a href="/method/messages.getGameHighScores" >messages.getGameHighScores</a></li></ul></div>
<h1 id="dev_page_title">messages.getGameHighScores</h1>
<div id="dev_page_content"><p>Get highscores of a game</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/messages.highScores" >messages.highScores</a>#9a3bfd99 scores:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/HighScore" >HighScore</a>&gt; users:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/User" >User</a>&gt; = <a href="/type/messages.HighScores" >messages.HighScores</a>;
---functions---
<a href="/method/messages.getGameHighScores" class="current_page_link" >messages.getGameHighScores</a>#e822649d peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/int" >int</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/messages.HighScores" >messages.HighScores</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>Where was the game sent</td>
</tr>
<tr>
<td><strong>id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td>ID of message with game media attachment</td>
</tr>
<tr>
<td><strong>user_id</strong></td>
<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td>
<td>Get high scores made by a certain user</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/messages.HighScores">messages.HighScores</a></p>
<h3><a class="anchor" href="#possible-errors" id="possible-errors" name="possible-errors"><i class="anchor-icon"></i></a>Possible errors</h3>
<table class="table">
<thead>
<tr>
<th>Code</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>400</td>
<td>MESSAGE_ID_INVALID</td>
<td>The provided message id is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>USER_BOT_REQUIRED</td>
<td>This method can only be called by a bot.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#bots-can-use-this-method" id="bots-can-use-this-method" name="bots-can-use-this-method"><i class="anchor-icon"></i></a>Bots can use this method</h3></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,217 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>messages.getReplies</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Get messages in a reply thread">
<meta property="og:title" content="messages.getReplies">
<meta property="og:image" content="">
<meta property="og:description" content="Get messages in a reply thread">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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><a href="/method/messages.getReplies" >messages.getReplies</a></li></ul></div>
<h1 id="dev_page_title">messages.getReplies</h1>
<div id="dev_page_content"><p>Get messages in a reply thread</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/messages.messages" >messages.messages</a>#8c718e87 messages:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/Message" >Message</a>&gt; chats:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/Chat" >Chat</a>&gt; users:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/User" >User</a>&gt; = <a href="/type/messages.Messages" >messages.Messages</a>;
<a href="/constructor/messages.messagesSlice" >messages.messagesSlice</a>#3a54685e flags:<a href="/type/%23" >#</a> inexact:flags.1?true count:<a href="/type/int" >int</a> next_rate:flags.0?<a href="/type/int" >int</a> offset_id_offset:flags.2?<a href="/type/int" >int</a> messages:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/Message" >Message</a>&gt; chats:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/Chat" >Chat</a>&gt; users:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/User" >User</a>&gt; = <a href="/type/messages.Messages" >messages.Messages</a>;
<a href="/constructor/messages.channelMessages" >messages.channelMessages</a>#64479808 flags:<a href="/type/%23" >#</a> inexact:flags.1?true pts:<a href="/type/int" >int</a> count:<a href="/type/int" >int</a> offset_id_offset:flags.2?<a href="/type/int" >int</a> messages:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/Message" >Message</a>&gt; chats:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/Chat" >Chat</a>&gt; users:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/User" >User</a>&gt; = <a href="/type/messages.Messages" >messages.Messages</a>;
<a href="/constructor/messages.messagesNotModified" >messages.messagesNotModified</a>#74535f21 count:<a href="/type/int" >int</a> = <a href="/type/messages.Messages" >messages.Messages</a>;
---functions---
<a href="/method/messages.getReplies" class="current_page_link" >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>;</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>Peer</td>
</tr>
<tr>
<td><strong>msg_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td>Message ID</td>
</tr>
<tr>
<td><strong>offset_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets">Offsets for pagination, for more info click here</a></td>
</tr>
<tr>
<td><strong>offset_date</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets">Offsets for pagination, for more info click here</a></td>
</tr>
<tr>
<td><strong>add_offset</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets">Offsets for pagination, for more info click here</a></td>
</tr>
<tr>
<td><strong>limit</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td>Maximum number of results to return, <a href="/api/offsets">see pagination</a></td>
</tr>
<tr>
<td><strong>max_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td>If a positive value was transferred, the method will return only messages with ID smaller than max_id</td>
</tr>
<tr>
<td><strong>min_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td>If a positive value was transferred, the method will return only messages with ID bigger than min_id</td>
</tr>
<tr>
<td><strong>hash</strong></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>
</tbody>
</table>
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/messages.Messages">messages.Messages</a></p>
<h3><a class="anchor" href="#possible-errors" id="possible-errors" name="possible-errors"><i class="anchor-icon"></i></a>Possible errors</h3>
<table class="table">
<thead>
<tr>
<th>Code</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>400</td>
<td>MSG_ID_INVALID</td>
<td>Invalid message ID provided.</td>
</tr>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>
</tbody>
</table>
<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="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,181 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>messages.readMentions</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Mark mentions as read">
<meta property="og:title" content="messages.readMentions">
<meta property="og:image" content="">
<meta property="og:description" content="Mark mentions as read">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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><a href="/method/messages.readMentions" >messages.readMentions</a></li></ul></div>
<h1 id="dev_page_title">messages.readMentions</h1>
<div id="dev_page_content"><p>Mark mentions as read</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/messages.affectedHistory" >messages.affectedHistory</a>#b45c69d1 pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> offset:<a href="/type/int" >int</a> = <a href="/type/messages.AffectedHistory" >messages.AffectedHistory</a>;
---functions---
<a href="/method/messages.readMentions" class="current_page_link" >messages.readMentions</a>#f0189d3 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/messages.AffectedHistory" >messages.AffectedHistory</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>Dialog</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/messages.AffectedHistory">messages.AffectedHistory</a></p>
<h3><a class="anchor" href="#possible-errors" id="possible-errors" name="possible-errors"><i class="anchor-icon"></i></a>Possible errors</h3>
<table class="table">
<thead>
<tr>
<th>Code</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>400</td>
<td>CHANNEL_INVALID</td>
<td>The provided channel is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>CHANNEL_PRIVATE</td>
<td>You haven't joined this channel/supergroup.</td>
</tr>
<tr>
<td>400</td>
<td>MSG_ID_INVALID</td>
<td>Invalid message ID provided.</td>
</tr>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>
</tbody>
</table></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,202 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Binary serialization and abstract TL types</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="TL Language defines abstract data types in the spirit of a general theory of types (more accurately, Martin-Löfs theories…">
<meta property="og:title" content="Binary serialization and abstract TL types">
<meta property="og:image" content="">
<meta property="og:description" content="TL Language defines abstract data types in the spirit of a general theory of types (more accurately, Martin-Löfs theories…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class="active"><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="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/TL-abstract-types" >Binary serialization and abstract TL types</a></li></ul></div>
<h1 id="dev_page_title">Binary serialization and abstract TL types</h1>
<div id="dev_page_content"><p><a href="TL">TL Language</a> defines <em>abstract</em> data types in the spirit of a general theory of types (more accurately, Martin-Löfs theories of dependent intuitionistic types) without specifying the values of these types should be represented in memory, when saved to disk, or transmitted over a network. In contrast, the article on <a href="serialize">binary serialization</a> discusses the problem of effective serialization of values of abstract types. To this end, the concept of a <em>concrete</em> or <em>serialized</em> type has been defined as the sets of serializations of all possible values of the corresponding abstract type. In this case, the serializations take values in the set A<em> of words in the alphabet </em>A*, which consists of 2^32 characters -- 32-bit integers.</p>
<p>In order to use a TL schema (e.g. “program”) in the TL language to describe the serialization of values of abstract types, we should explain how the concrete type <em>[T]</em> (subset <em>[T]</em> of A^<em>) is associated with the abstract type </em>T<em> (defined in TL), and how the values of the abstract type </em>T<em> correspond to the values of the concrete type </em>[T]<em> (i.e. the elements of </em>[T]*).</p>
<p>Serialization is the process of constructing an element of <em>[T]</em> based on a value of the abstract type <em>T</em>. The reverse process is deserialization. </p>
<p>Values of the abstract type <em>T</em> may be represented in a different way. Typically, some sort of trees or graphs are used in memory or, if desired, a set of nodes may be used, each of which contains a certain tag (“node type”) and several pointers to other nodes and/or values of built-in primitive types such as <code>int</code>. However, for general discussions it is useful to write the values of abstract type <em>T</em> as a string, more specifically, an S-expression. Recall that an S-expression is either an atom (the value of a primitive type, for example, an integer or a string constant in quotation marks; or an identifier that corresponds to a built-in or defined function) or a space-delimited list of S-expressions ending in parentheses. In our case, we use S-expressions, the first element of which is a combinator identifier, while the remaining elements (the number of which depends on the combinators arity) are S-expressions representing elements of the chosen combinators fields (or parameters). Moreover, the type of the arguments S-expressions and the type of the S-expressions of the result (e.g. the associated expression) must match.</p>
<p>For example, for the schema</p>
<pre><code>pair x:int y:int = Pair;
pnil = PairList;
pcons hd:Pair tl:PairList = PairList;</code></pre>
<p>the following are examples of the abstract type <code>PairList</code>, written as S-expressions: </p>
<pre><code>(pnil)
(pcons (pair 2 3) (pcons (pair 9 4) (pnil)))</code></pre>
<p>We usually write <em>E : T</em> (read "<em>E</em> of type <em>T</em>”) when we want to say that <em>E</em> is a value of type <em>T</em>. We assume there is a built-in type <em>Type</em> whose values are types. Thus, writing <em>T : Type</em> means that <em>T</em> is a type.</p>
<p>For example, we can write:</p>
<pre><code>PairList : Type;
(pcons (pair 2 3) (pcons (pair 9 4) (pnil))) : PairList;</code></pre>
<p>Converting an abstract value to a serialized value, generally speaking, is straightforward (and, if desired, can be defined by induction):</p>
<ul>
<li>
<p>It is the serialization of values <em>n</em> of the primitive type <code>int</code> (as a single-symbol word in the alphabet <em>A</em>)</p>
</li>
<li>
<p>The serialization of a string constant (a value of the primitive type string) is a sequence of the 32-bit numbers defined in <a href="serialize">Binary serialization</a>.</p>
</li>
<li>
<p>The serialization of the S-expression <code>(C E1 ... Er) : T</code>, where <code>C</code> is a combinator with arity <em>r</em> with argument types <em>T1</em>, ..., <em>Tr</em> and result type <em>T</em> (e.g. <em>C : T1-&gt;T2-&gt;...-&gt;Tr-&gt;T</em>) is the concatenation of the <em>combinator number</em> <em>C</em> (a 32-bit number that unambiguously identifies the combinator, usually equal to the CRC-32 of the string of its TL description) and the serializations of the values <em>E1</em> of type <em>T1</em>, <em>E2</em> of type <em>T2</em>, ..., <em>Er</em> of type <em>Tr</em>.</p>
</li>
</ul>
<p>If we use <em>[T]</em> to denote the concrete type corresponding to the abstract <em>T</em>, and <em>[E]</em> to denote an element of <em>[T]</em> corresponding to the value <em>E</em> of type <em>T</em>, then the last rule may be written as:</p>
<ul>
<li><em>[T]</em> is the combination, for each constructor of type <em>C</em> <em>T1-&gt;T2-&gt;...-&gt;Tr-&gt;T</em> (i.e. that returns a value of type <em>T</em>), of direct products <em>{C} x [T1] x [T2] x ... x [Tr]</em>, where <em>{C}</em> is a single-element set consisting of the combinator number <em>C</em>. Because <em>{C}&lt;&gt;{C'}</em> when <em>C&lt;&gt;C</em>, this defines a mutually single-valued mapping of the values of the abstract type <em>T</em> (written using S-expressions) to the set <em>[T]</em>.</li>
</ul>
<p>Values of the built-in clothed types <code>Int</code> and <code>String</code> and serialized as if they were defined using <code>int x:int = Int;</code> and <code>string s:string = String;</code>, i.e. the serialization of integer constant or a string is preceded by number of the <code>int</code> or <code>string</code> combinator (constructor). In S-expressions, this may be written as <code>(int 5)</code> or <code>(string "Test")</code>.</p>
<p>However, what has been described above does not account for certain subtleties, such as the existence of naked types, or the difference between functions (active combinators whose application may be reduced, e.g. calculated) and constructors (passive combinators for which there are not and cannot be reduction rules). Furthermore, we have not explained how to handle polymorphic types and <a href="TL-optargs">optional combinator parameters</a>. We will attempt to explain this now.</p>
<h3><a class="anchor" href="#constants-surface-values-and-functional-values" id="constants-surface-values-and-functional-values" name="constants-surface-values-and-functional-values"><i class="anchor-icon"></i></a>Constants, surface values, and functional values</h3>
<p>By dividing combinators into constructors and functions, we can introduce the following classes of expressions (values) of the abstract type <em>T</em>:</p>
<ul>
<li>
<p><em>Constant expressions</em>: for the types <code>int</code> and <code>string</code>, these are all integer/string constants; for <em>T</em>, these are all expressions like <em>(C E1 ... Er) : T</em>, where the combinator <em>C : T1-&gt;T2-&gt;...-&gt;Tr-&gt;T</em> is a constructor, and <em>Ei : Ti</em> is constant expressions of types <em>Ti</em>. In other words, a constant expression is an S-expression consisting of only constructors and constant of primitive types.</p>
</li>
<li>
<p><em>Surface expressions</em> are expressions that outwardly contain a functional combinator whose arguments, however, are constant expressions of the appropriate types. In other words, the functional combinator is resolved only at the outer level. (This is not entirely true; see the full explanation below).</p>
</li>
<li>
<p><em>Functional expressions</em>: These are expressions that may contain any combinators or constants at all levels.</p>
</li>
</ul>
<p>In practice, we most frequently need constant values (for storage and passing any data structures, in particular, responses to RPC queries) and surface expressions (for example, as RPC queries: then the functional combinator of the outer level is the name of the RPC function that we want to call, while its parameters are the arguments, which are constant values, for invoking the function). In some cases, arbitrary functional expressions are helpful (for example, it we want to remotely transmit the result of one RPC query to a different RPC query).</p>
<p>We will use <em>c(T)</em> to denote a subtype of the abstract type <em>T</em>, whose values are constant expressions of type <em>T</em>. Clearly, <em>c(T)</em> possesses approximately the same constructors as <em>T</em> itself (with the types of all arguments <em>Ti</em> replaced by <em>c(Ti)</em>, but it does not have functional combinators.</p>
<p>Analogously, we will use <em>f(T)</em> to denote a subtype of <em>T</em>, whose values are surface expressions of type <em>T</em>. Clearly, the combinators of <em>f(T)</em> are essentially functional combinators of type <em>T</em>, but <em>c()</em> applies to the types of these combinators arguments: The combinator <em>A : T1-&gt;...-&gt;Tr-&gt;T</em> turns into <em>A' : c(T1)-&gt;...-&gt;c(Tr)-&gt;f(T)</em>. (See the clarification of this rule below.)</p>
<p>Thus, we have defined two “functionals” <em>c : Type -&gt; Type</em> and <em>f : Type -&gt; Type</em>, such that <em>forall T : Type, c(T) :- T</em> and <em>forall T : Type, f(T) :- T</em> (writing <em>T :- T'</em> means that <em>T</em> is contained in <em>T'</em>, or that <em>T</em> is a subtype of <em>T'</em>).</p>
<p>We will assume that <em>c</em> and <em>f</em> are idempotent.</p>
<h3><a class="anchor" href="#naked-types" id="naked-types" name="naked-types"><i class="anchor-icon"></i></a>Naked types</h3>
<p>From the perspective of abstract type theory, naked types (in contrast to built-in primitive types like <code>int</code> and <code>string</code> are unnecessary. However, they are extremely useful in practice.</p>
<p>Therefore, TL introduces the (partially defined) idempotent unary operator <code>%</code>, which turns a standard functional (e.g. an expression of type <em>...-&gt;Type</em> or simply <em>Type</em>) into a different standard functional of the same type. If <em>T</em> is a type, then from an abstract theoretical point of view, <code>%T</code> is equivalent to <em>c(T)</em>. In other words, the values of <code>%T</code> are the constant values of <em>T</em>. If <em>T</em> is a <em>k</em>-arity standard expression, then <em>T : S1 -&gt; ... -&gt; Sk -&gt; Type</em>, where each <em>Si=Type</em> or <em>#</em>, then by definition <code>%T</code> is a <em>k</em>-arity standard expression with the same arity, which is defined by the equation <em>(%T) a1 ... ak = % (T a1 ... ak)</em>. </p>
<p>When a <em>constant</em> value of type <code>%T</code> is serialized, it is first serialized as a value of type <em>T</em> (assuming that <em>T</em> is not already a naked type itself). Then the first character of the serialization is discarded (e.g. the name of the enclosing combinator). Therefore, <code>%T</code> is a only a valid type expression if there is not more than one constructor for <code>%T</code>. The expression <code>%T</code>, where <em>T : S1 -&gt; ... -&gt; Sk -&gt; Type</em>, is valid, if for <em>any</em> choice of parameters <em>a1 : S1, ... , ak : Sk</em>, the type <em>T a1 ... ak</em> does not have more than one constructor. Using <code>%</code> in other instances is incorrect.</p>
<p>If for every value of the parameters <em>a1 : S1, ..., ak : Sk</em>, there is exactly one constructor <em>C</em> for <em>T a1 ... ak</em>, then TL allows writing <code>C a1 ... ak</code> instead of <code>%T a1 ... ak</code> or <code>%(T a1 .. ak)</code>. In other words, in certain situations the identifier <code>C</code> is a synonym for <code>%T</code>. This is only allowed in the context of a type (when specifying the type of a combinators field or result).</p>
<p>Moreover, it is assumed that <code>%Int = int</code> and <code>%String = string</code>.</p>
<h3><a class="anchor" href="#-modifier" id="-modifier" name="-modifier"><i class="anchor-icon"></i></a><code>!</code> modifier</h3>
<p>In TL, the idempotent operator <code>!</code> can modify any type, actually making surface values be allowed when its constant values are serialized. However, if <em>T</em> is a standard function like <em>S1-&gt;..-&gt;Sr-&gt;Type</em>, then <em>!T</em> is defined using the equation <code>(!T) a1 ... ar = !(T a1 ... ar)</code>, for any <em>a1:S1</em>, ..., <em>ar:Sr</em>.</p>
<p>The <code>!</code> operator is only allowed in a definition of the types of fields of functional combinators. It is usually used as a type prefix, for example:</p>
<pre><code>set_timeout {X:Type} timeout:int f:!X = X;</code></pre>
<p>In this case, the <code>set_timeout</code> “wrapper” is defined. It takes two explicit parameters: the integer <code>timeout</code> and a surface expression of type <code>X</code>. <em>X : Type</em> is itself an implicit parameter (it is not explicitly stated, rather it is inferred from the values of the other parameters and their types). A similar kind of wrapper may be helpful for modifying the action of RPC queries (which are surface expressions of various types). For example, suppose we have the function</p>
<pre><code>factorial n:int = int;</code></pre>
<p>then we can wrap the RPC query <code>(factorial 100)</code> as follows: <code>(set_timeout 200 (factorial 100))</code>. This expression is still a surface value of type <code>int</code>, which means it can be passed as an RPC query.</p>
<p>A consecutive pair of two computations is another example:</p>
<pre><code>pair {X Y : Type} x:X y:Y = Pair X Y; // constructor
seq_pair {X Y : Type} x:!X y:!Y = Pair X Y; // functional wrapper for sequential computation
par_pair {X Y : Type} x:!X y:!Y = Pair X Y; // functional wrapper for parallel computation</code></pre>
<p>Now the RPC query <code>(seq_pair (factorial 2) (factorial 3)) : Pair int int</code> first calculates factorial 2, then factorial 3, and returns the pair <code>(pair 2 6)</code>. In this case, the sequence of operations isnt important, because they do not have side effects. It would have been just as well to use <code>(par_pair (factorial 2) (factorial 3))</code>. However, this is not always the case.</p>
<p>We can also define an analogy to a “comma” operation:</p>
<pre><code>comma {X Y : Type} x:!X y:!Y = Y;</code></pre>
<p>For example, this operation could first calculate <code>x</code>, then forget the result, calculate <code>y</code>, and return <code>y</code>. </p>
<p>Note that the semantics of the <code>seq_pair</code>, <code>par_pair</code> and <code>comma</code> wrappers are indeed defined where they are implemented (like the semantics of all other functional combinators), not by their TL declaration.</p>
<p>In principle, polymorphic wrappers like <code>set_timeout</code> can also be applied, for example, to “annotate” a RPC responses constant values. For example, the server might return a response to a query together with the time it was calculated. However, a value of type <em>!X</em> must be constant, because that is what is expected as the enclosing expressions value. In other words, <code>set_timeout 239 E</code> is a constant/surface value of type <em>X</em> if and only if <em>E</em> is such itself.</p>
<h3><a class="anchor" href="#-modifier" id="-modifier" name="-modifier"><i class="anchor-icon"></i></a><code>$</code> modifier</h3>
<p>The idempotent modifier <code>$</code> permits the use of arbitrary functional values of an appropriate type in contexts where only constants or surface values are usually allowed. It recursively transforms all combinators for all of the types involved, canceling the action of <code>%</code> and affixing <code>$</code> to the parameter types and result of all combinators (<code>$</code> is also added to the front of the transformed combinators). Moreover, built-in types are also transformed (in the final stage): <code>$int = Int</code> and <code>$string = String</code>.</p>
<p>This may be useful to create an RPC query that performs a “deep computation” of the expression passed to it:</p>
<pre><code>compute {X:Type} expr:$X = X;</code></pre>
<p>For example, now we can transmit the following as an RPC query:</p>
<pre><code>(compute ($factorial ($factorial (int 3)))) : int</code></pre>
<p>(Note that the three has become clothed; the combinator $factorial has type $int -&gt; $int).</p>
<p>This is very powerful tool. It does not have to be implemented in very simple versions of TL. <code>$</code> is not encountered in currently used TL schemas.</p>
<h3><a class="anchor" href="#more-on-modifiers" id="more-on-modifiers" name="more-on-modifiers"><i class="anchor-icon"></i></a>More on modifiers</h3>
<p>In fact, at least in terms of its application to serialization, the TL language by default implies the <em>c()</em> modifier around all combinators parameter types and results, while <code>!</code> and <code>$</code> cancel it (more accurately, <code>!</code> only cancels, and in some sense <code>$</code> reverses the meaning). This is why there is no explicit <code>c()</code> modifier in TL and why it is assumed that all functions only accept constant values and return constant results, unless otherwise specified.</p>
<p>You may think that some functional combinators may have a type such as <code>partial_factorial n:int = $int;</code> and that the RPC query <code>(partial_factorial 3)</code> might then unexpectedly return <code>($product (int 3) ($product (int 2) ($product (int 1) (int 1)))) : $int</code> ...</p>
<p>It is probably more correct to think about the <code>!</code> modifier as follows. All types initially include only constant values (and only constructors). The <code>!</code> modifier makes a new type (its twin) out of each type. This new type has no inherent constructors. Functional combinators differ from constructors in that <code>!</code> is implicitly added in front of their results type. After this, the (local or remote) process of calculating the expression can be represented using the polymorphic function <code>eval : !X -&gt; X</code>.</p>
<h3><a class="anchor" href="#optional-combinator-parameters-and-their-values" id="optional-combinator-parameters-and-their-values" name="optional-combinator-parameters-and-their-values"><i class="anchor-icon"></i></a>Optional combinator parameters and their values</h3>
<p>See <a href="TL-optargs">Optional combinator parameters and their values</a>.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,251 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Formal description of TL combinators</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Formal declaration of TL combinators
Main article: Formal description of TL. See also TL Language.
Combinators in TL are…">
<meta property="og:title" content="Formal description of TL combinators">
<meta property="og:image" content="">
<meta property="og:description" content="Formal declaration of TL combinators
Main article: Formal description of TL. See also TL Language.
Combinators in TL are…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class="active"><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="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/TL-combinators" >Formal description of TL combinators</a></li></ul></div>
<h1 id="dev_page_title">Formal description of TL combinators</h1>
<div id="dev_page_content"><p><a href="/mtproto/TL-combinators">Formal declaration of TL combinators</a></p>
<p>Main article: <a href="TL-formal">Formal description of TL</a>. See also <a href="TL">TL Language</a>.</p>
<p>Combinators in TL are declared as follows:</p>
<div class="richcode">
<p><em>combinator-decl</em> ::= <em>full-combinator-id</em> { <em>opt-args</em> } { <em>args</em> } <code>=</code> <em>result-type</em> <code>;</code><br>
<em>full-combinator-id</em> ::= <em>lc-ident-full</em> | <code>_</code><br>
<em>combinator-id</em> ::= <em>lc-ident-ns</em> | <code>_</code><br>
<em>opt-args</em> ::= <code>{</code> <em>var-ident</em> { <em>var-ident</em> } : [<em>excl-mark</em>] <em>type-expr</em> <code>}</code><br>
<em>args</em> ::= <em>var-ident-opt</em> <code>:</code> [ <em>conditional-arg-def</em> ] [ <code>!</code> ] <em>type-term</em><br>
<em>args</em> ::= [ <em>var-ident-opt</em> <code>:</code> ] [ <em>multiplicity</em> <code>*</code>] <code>[</code> { <em>args</em> } <code>]</code><br>
<em>args</em> ::= <code>(</code> <em>var-ident-opt</em> { <em>var-ident-opt</em> } <code>:</code> [<code>!</code>] <em>type-term</em> <code>)</code><br>
<em>args</em> ::= [ <code>!</code> ] <em>type-term</em><br>
<em>multiplicity</em> ::= <em>nat-term</em><br>
<em>var-ident-opt</em> ::= <em>var-ident</em> | <code>_</code><br>
<em>conditional-arg-def</em> ::= <em>var-ident</em> [ <code>.</code> <em>nat-const</em> ] <code>?</code><br>
<em>result-type</em> ::= <em>boxed-type-ident</em> { <em>subexpr</em> }<br>
<em>result-type</em> ::= <em>boxed-type-ident</em> <code>&lt;</code> <em>subexpr</em> { <code>,</code> <em>subexpr</em> } <code>&gt;</code> </p>
</div>
<p>We shall clarify what all this means.</p>
<ul>
<li>
<p>A combinator identifier is either an identifier starting with a lowercase Latin letter (<em>lc-ident</em>), or a namespace identifier (also <em>lc-ident</em>) followed by a period and another <em>lc-ident</em>. Therefore, <code>cons</code> and <code>lists.get</code> are valid combinator identifiers.</p>
</li>
<li>
<p>A combinator has a <em>name</em>, also known as a <em>number</em> (not to be confused with the <em>designation</em>) -- a 32-bit number that unambiguously determines it. It is either calculated automatically (see below) or it is explicitly assigned in the declaration. To do this, a hash mark (<code>#</code>) and exactly 8 hexadecimal digits -- the combinators name -- are added to the identifier of the combinator being defined.</p>
</li>
<li>
<p>A combinators declaration begins with its identifier, to which its name (separated by a hash mark) may have been added.</p>
</li>
<li>
<p>After the combinator identifier comes the main part of the declaration, which consists of declarations of <em>fields</em> (or <em>variables</em>), including an indication of their <em>types</em>.</p>
</li>
<li>
<p>First come declarations of optional fields (of which there may be several or none at all). Then there are the declarations of the required fields (there may not be any of these either).</p>
</li>
<li>
<p>Any identifier that begins with an uppercase or lowercase letter and which does not contain references to a namespace can be a field (variable) identifier. Using <em>uc-ident</em> for identifiers of variable types and <em>lc-indent</em> for other variables is good practice. </p>
</li>
<li>
<p>Next a combinator declaration contains the equals sign (<code>=</code>) and the result type (it may be composite or appearing for the first time). The result type may be polymorphic and/or dependent; any fields of the defined constructors fields of type <code>Type</code> or <code>#</code> may be returned (as subexpressions).</p>
</li>
<li>
<p>A combinator declaration is terminated with a semicolon.</p>
</li>
</ul>
<p>In what follows, a constructors <em>fields</em>, <em>variables</em>, and <em>arguments</em> mean the same thing.</p>
<h3><a class="anchor" href="#optional-field-declarations" id="optional-field-declarations" name="optional-field-declarations"><i class="anchor-icon"></i></a>Optional field declarations</h3>
<ul>
<li>
<p>These have the form <code>{</code> <em>field_1</em> ... <em>field_k</em> <code>:</code> <em>type-expr</em> <code>}</code>, where <em>field_i</em> is a variable (field) identifier that is unique within the scope of the combinator declaration, and <em>type-expr</em> is a type shared by all of the fields. </p>
</li>
<li>
<p>If <em>k&gt;1</em>, this entry is functionally equivalent to <code>{</code> <em>field_1</em> <code>:</code> <em>type-expr</em> <code>}</code> ... <code>{</code> <em>field_k</em> <code>:</code> <em>type-expr</em> <code>}</code>. </p>
</li>
<li>
<p>All optional fields must be explicitly named (using <code>_</code> instead of <em>field_i</em> is not allowed).</p>
</li>
<li>
<p>Moreover, at present the names of all optional fields must share the combinators result type (possibly more than once) and themselves be of type <code>#</code> (i,e., <code>nat</code>) or <code>Type</code>. Therefore, if the exact result type is known, it is possible to determine the values of all of the combinators implicit parameters (possibly obtaining a contradiction of the form <code>2=3</code> in doing so, which means that the combinator is not allowed in the context).</p>
</li>
</ul>
<h3><a class="anchor" href="#required-field-declarations" id="required-field-declarations" name="required-field-declarations"><i class="anchor-icon"></i></a>Required field declarations</h3>
<ul>
<li>
<p>These may have the form <code>(</code> <em>field_1</em> ... <em>field_k</em> <code>:</code> <em>type-expr</em> <code>)</code>, similar to an optional field declaration, but with parentheses. This entry is equivalent to <code>(</code> <em>field_1</em> <code>:</code> <em>type-expr</em> <code>)</code> ... <code>(</code> <em>field_k</em> : <em>type-expr</em> <code>)</code>, where the fields are defined one at a time.</p>
</li>
<li>
<p>The underscore sign (<code>_</code>) can be used as names of one or more fields (<em>field_i</em>), indicating that the field is anonymous (the exact name is unimportant).</p>
</li>
<li>
<p>One field may be declared without outer parentheses, like this: <em>field_id</em> <code>:</code> <em>type-expr</em>. Here, however, if <em>type-expr</em> is a complex type, parentheses may be necessary around <em>type-expr</em> (this is reflected in BNF).</p>
</li>
<li>
<p>Furthermore, one anonymous field may be declared using a <em>type-expr</em> entry, functionally equivalent to <code>_</code> <code>:</code> <em>type-expr</em>.</p>
</li>
<li>
<p>Required field declarations follow one after another, separated by spaces (by any number of whitespace symbols, to be more precise).</p>
</li>
<li>
<p>The declared fields type (<em>type-expr</em>) may use the declared combinators previously defined variables (fields) as subexpressions (i.e. parameter values). For example:</p>
<p>nil {X:Type} = List X;
cons {X:Type} hd:X tl:(list X) = List X;
typed_list (X:Type) (l : list X) = TypedList;</p>
</li>
</ul>
<h3><a class="anchor" href="#repetitions" id="repetitions" name="repetitions"><i class="anchor-icon"></i></a>Repetitions</h3>
<ul>
<li>
<p>These may only exist among required parameters. They have the form [ <em>field-id</em> <code>:</code> ] [ <em>multiplicity</em> <code>*</code> ] <code>[</code> <em>args</em> <code>]</code>, where <em>args</em> has the same format as the combinators declaration of (several) required fields, except that all of the enclosing combinators previously declared fields may be used in the argument types.</p>
</li>
<li>
<p>The name of a field of an enclosing combinator that receives a repetition as a value may be specified (<em>field-id</em>), or bypassed, which is equivalent to using the underscore sign as a <em>field-id</em>.</p>
</li>
<li>
<p>The <em>multiplicity</em> field is an expression of the type <code>#</code> (<code>nat</code>), which can be a real constant, the name of a preceding field of type <code>#</code>, or an expression in the form <code>(</code> <em>c</em> <code>+</code> <em>v</em> <code>)</code>, where <em>c</em> is a real constant and <em>v</em> is the name of a field of type <code>#</code>. The sense of the <em>multiplicity</em> field is to provide the length of the (repetition) vector, each element of which consists of values of the types enumerated in <em>args</em>.</p>
</li>
<li>
<p>The <em>multiplicity</em> field may be bypassed. In this case, the last preceding parameter of type <code>#</code> from the enclosing combinator is used (it must be).</p>
</li>
<li>
<p>Functionally, the repetition <em>field-id</em> <code>:</code> <em>multiplicity</em> <code>*</code> <code>[</code> <em>args</em> <code>]</code> is equivalent to the declaration of the single field <code>(</code> <em>field-id</em> <code>:</code> <code>%Tuple</code> <code>%AuxType</code> <em>multiplicity</em> <code>)</code>, where <code>aux_type</code> is an auxiliary type with a new name defined as <code>aux_type *args* = AuxType</code>. If any of the enclosing types fields are used within <em>args</em>, they are added to the auxiliary constructor <code>aux_type</code> and to its <code>AuxType</code> result type as the first (optional) parameters. </p>
</li>
<li>
<p>If <em>args</em> consists of one anonymous field of type <em>some-type</em>, then <em>some-type</em> can be used directly instead of <code>%AuxType</code>.</p>
</li>
<li>
<p>If during implementation the repetitions are rewritten as indicated above, it is logical to use instead of <code>aux_type</code> and <code>AuxType</code>, some identifiers that contain the name of the outer combinator being defined and the repetitions index number inside its definition.</p>
</li>
</ul>
<p>Example:</p>
<pre><code>matrix {m n : #} a : m* [ n* [ double ] ] = Matrix m n;</code></pre>
<p>is functionally equivalent to</p>
<pre><code>aux_type {n : #} (_ : %Tuple double n) = AuxType n;
matrix {m : #} {n : #} (a : %Tuple %(AuxType n) m) = Matrix m n;</code></pre>
<p>Moreover, the built-in types <code>Tuple</code> and <code>Vector</code> could be defined as:</p>
<pre><code>tnil {X : Type} = Tuple X 0;
tcons {X : Type} {n : #} hd:X tl:%(Tuple X n) = Tuple X (S n);
vector {X : Type} (n : #) (v : %(Tuple X n)) = Vector X;</code></pre>
<p>Actually, the following equivalent entry is considered the definition of <code>Vector</code> (i.e. it is specifically this entry that is used to compute the name of the <code>vector</code> constructor and its partial applications):</p>
<pre><code>vector {t : Type} # [ t ] = Vector t;</code></pre>
<p>If we expand it using <code>Tuple</code>, we obtain the previous definition exactly.</p>
<h3><a class="anchor" href="#conditional-fields" id="conditional-fields" name="conditional-fields"><i class="anchor-icon"></i></a>Conditional fields</h3>
<p>The construction </p>
<div class="richcode">
<p><em>args</em> ::= <em>var-ident-opt</em> <code>:</code> [ <em>conditional-arg-def</em> ] [ <code>!</code> ] <em>type-term</em><br>
<em>conditional-arg-def</em> ::= <em>var-ident</em> [ <code>.</code> <em>nat-const</em> ] <code>?</code> </p>
</div>
<p>permits assigning fields which are only present if the value of a preceding mandatory or optional field of type <code>#</code> is not null (or if its chosen bit is not zero if the special binary bit-selection operator <code>.</code> is applied).
Example:</p>
<div class="richcode">
<p>user {fields:#} id:int first_name:(fields.0?string) last_name:(fields.1?string) friends:(fields.2?%(Vector int)) = User fields;<br>
get_users req_fields:# ids:%(Vector int) = Vector %(User req_fields) </p>
</div></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,236 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>TL-dependent</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Main article: TL Language.
In certain cases, types may depend not only on other types (polymorphism), but also on the parameters…">
<meta property="og:title" content="TL-dependent">
<meta property="og:image" content="">
<meta property="og:description" content="Main article: TL Language.
In certain cases, types may depend not only on other types (polymorphism), but also on the parameters…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class="active"><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="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/TL-dependent" >TL-dependent</a></li></ul></div>
<h1 id="dev_page_title">TL-dependent</h1>
<div id="dev_page_content"><p>Main article: <a href="/mtproto/TL">TL Language</a>.</p>
<p>In certain cases, types may depend not only on other types (polymorphism), but also on the parameters of another type (dependent types). The TL language provides very limited support for this functionality: dependence is only allowed on a natural parameter whose type is designated using <code>#</code> (alias <code>nat</code>, but this is private -- TL doesnt currently support this synonym). Values of type # are serialized as 32-bit signed numbers from 0 to 2^31-1.</p>
<h2><a class="anchor" href="#example-integer-tuples-vectors" id="example-integer-tuples-vectors" name="example-integer-tuples-vectors"><i class="anchor-icon"></i></a>Example: integer tuples (vectors)</h2>
<p>Suppose we want to use induction to define the types “one integer”, “two integers”, and “three integers”. We could try to define them as follows:</p>
<pre><code>empty = Empty;
single x:int = Single;
pair x:int y:int = Pair;
triple x:int y:int z:int = Triple;
quadruple x:int y:int z:int t:int = Quadruple;
...</code></pre>
<p>or as:</p>
<pre><code>empty = Empty;
single x:int empty = Single;
pair x:int y:single = Pair;
triple x:int yz:pair = Triple;
quadruple x:int yzt:triple = Quadruple;</code></pre>
<p>or as:</p>
<pre><code>tnil = Tuple0;
tcons0 hd:int tl:Tuple0 = Tuple1;
tcons1 hd:int tl:Tuple1 = Tuple2;
tcons2 hd:int tl:Tuple2 = Tuple3;
...
tcons_n hd:int tl:Tuple_n = Tuple_(n+1)</code></pre>
<p>The first two variations lead to the same serialization. For example, <code>(2 3 9):%triple</code> and <code>(2 (3 9)):%triple</code> serialize as three 32-bit numbers: <code>2 3 9</code>. The last variation better emphasizes the inductive version of the definition, but it uses boxed types. This is good from a theoretical perspective, but it leads to “superfluous” constructor names in serialization.</p>
<p>Therefore, we will write <code>%Type-Ident</code> to indicate the bare type that corresponds to the boxed type <code>Type-Ident</code> with a single constructor. If this constructor is named <code>constructor</code>, then according to the definition %<code>Type-Ident</code> = %<code>constructor</code>. Now we can write our definition like this:</p>
<pre><code>tnil = Tuple0;
tcons_n hd:int tl:%Tuple_n = Tuple_(n+1)</code></pre>
<p>If we now abstract <em>n</em> out of the name of the type name and make it like a parameter for a polymorphic (dependent, to be more exact) type, then something like the following can be written in a suitable functional language:</p>
<pre><code>NewType Tuple (n : #) :=
| tnil = Tuple 0
| tcons n:# hd:int tl:%(Tuple n) = Tuple (S n)
EndType;</code></pre>
<p>In the TL language, it looks like this:</p>
<pre><code>tnil = Tuple 0;
tcons {n:#} hd:int tl:%(Tuple n) = Tuple (S n);</code></pre>
<p>The function <code>S : # -&gt; #</code> and the constant <code>O : #</code> (it is <code>0</code>) are the function for the next natural number (<code>S n = n + 1</code>) and the constant null. Therefore, the type <code>#</code> (alias <code>nat</code>) behaves as if it were defined in TL using the constructors</p>
<pre><code>O = nat;
S nat = nat;</code></pre>
<p>or, using syntax more typical of other functional languages,</p>
<pre><code>NewType nat :=
| O
| S nat
EndType;</code></pre>
<p>Types of all defined combinators:</p>
<pre><code>O : #
S : # -&gt; #
Tuple : # -&gt; Type
tnil : Tuple 0
tcons : forall n : #, int -&gt; Tuple n -&gt; Tuple (S n)</code></pre>
<p>or</p>
<pre><code>Tuple : forall n : #, Type;
tcons : forall n : #, forall hd : int, forall tl : Tuple n, Tuple (S n)</code></pre>
<p>Note that in this case the constructor <code>tnil</code> does not depend on the parameter <em>n</em>, while <code>tcons</code> does.</p>
<p>In an analogous manner, it is possible to define a complete binary tree of height <em>h</em> with strings in the leaf nodes:</p>
<pre><code>tleaf value:string = BinTree 0;
tnode {h:#} left:(BinTree h) right:(BinTree h) = BinTree (S h);</code></pre>
<p>Or a random tree whose leaf nodes are all a distance of <em>h</em> from the root and whose nodes are all labeled with integers:</p>
<pre><code>hleaf value:int = Tree 0;
hnode {n:#} left:(Tree n) next:(Tree (S n)) = Tree (S n)
hnil {n:#} = Tree (S n)</code></pre>
<p>Another version:</p>
<pre><code>hleaf' value:int = Tree' 0;
hnode' {n:#} children:(list (Tree' n)) = Tree' (S n)</code></pre>
<h2><a class="anchor" href="#polymorphic-dependent-types" id="polymorphic-dependent-types" name="polymorphic-dependent-types"><i class="anchor-icon"></i></a>Polymorphic dependent types</h2>
<p>Let us try to define a type <code>Tuple X n</code> whose values are <em>n</em>-tuples of type <code>X</code> values. In this way, <code>Tuple</code> will be simultaneously polymorphic and dependent:</p>
<pre><code>Tuple : Type -&gt; # -&gt; Type;</code></pre>
<p>In the familiar syntax of functional languages:</p>
<pre><code>NewType Tuple {X : Type} {n : #} :=
| vnil : Tuple X 0
| vcons {n:#} hd:X tl:%(Tuple X n) : Tuple X (S n)
EndType</code></pre>
<p>or, in TL syntax,</p>
<pre><code>vnil {X:Type} = Tuple X 0;
vcons {X:Type} {n:#} tl:(%Tuple X n) = Tuple X S n</code></pre>
<p>In the end we obtain terms for the following types:</p>
<pre><code>vnil : forall X : Type, Tuple X 0
vcons : forall X : Type, forall n : #, X -&gt; Tuple X n -&gt; Tuple X (S n)</code></pre>
<p>or</p>
<pre><code>vnil : forall X : Type, Tuple X 0
vcons : forall X : Type, forall n : #, forall hd : X, forall tl : Tuple X n, Tuple X (S n)</code></pre>
<h2><a class="anchor" href="#dependent-sums" id="dependent-sums" name="dependent-sums"><i class="anchor-icon"></i></a>Dependent sums</h2>
<p>The <code>Tuple</code> we just defined differs from the built-in <code>Vector</code> type. Specifically, the <code>Vector</code> type formally depends on a single argument (a type), but our <code>Tuple</code> depends on two (a type and a number):</p>
<pre><code>Tuple : Type -&gt; # -&gt; Type;
Vector : Type -&gt; Type;</code></pre>
<p>The built-in <code>Vector</code> could be defined in terms of our <code>Tuple</code> using “summing across all <em>n</em> : #":</p>
<pre><code>vector {X:Type} n:# v:(%Tuple X n) = Vector X;</code></pre>
<p>Nevertheless, our <code>Tuple</code> has its advantages. For example, we can define data types such as:</p>
<pre><code>matrix_10x10 a:(%Tuple (%Tuple double 10) 10) = Matrix_10x10;</code></pre>
<p>In any event, remember that during calculation of the <code>matrix_10x10</code> combinators number, all parentheses must be removed and the CRC32 of the string <code>matrix_10x10 a:%Tuple %Tuple double 10 10 = Matrix_10x10</code> must be computed.</p>
<p>Moreover, we can define arbitrarily-sized matrices:</p>
<pre><code>matrix {X:Type} m:# n:# a:(%Tuple (%Tuple X m) n) = Matrix X;</code></pre>
<p>In this case using vector would result in storing the length of a row (<em>m</em>) in each row, e.g. <em>n</em> times.</p>
<p>Note that the serializations of values of type <code>%Tuple X n</code> and <code>vector X</code> (also known as <code>%vector X</code> and <code>%Vector X</code>) nearly match when <em>n &gt; 0</em>: in both cases we obtain a single 32-bit number (equal to <em>n-1</em> or <em>n</em> depending on the version) followed by the serializations of <em>n</em> objects of type <em>X</em>. (This is slightly untrue: values of type <code>%Tuple X n</code> can only be serialized if <em>n</em> is a constant or value known from one of the preceding fields of the enclosing entry; but then this <em>n</em> wont be serialized explicitly anywhere).</p>
<h2><a class="anchor" href="#special-syntax-for-repetitions" id="special-syntax-for-repetitions" name="special-syntax-for-repetitions"><i class="anchor-icon"></i></a>Special syntax for repetitions</h2>
<p>In view of the importance of the construction presented above, it is built into the TL language in the following manner. A substructure in the form of [ <em>array-field-name</em> ":" ] [ <em>nat-ident</em> "<em>" ] "[" </em>field-descr<em> ... "]” may be used in the declaration of any combinator, where </em>nat-ident* is the name of any previously encountered field of type # (if it is not explicitly indicated, the most recent is used). In abstract, this substructure is equivalent to:</p>
<pre><code>aux_type *field-descr* ... = AuxType;
*current_constructor* ... [ *array-field-name* ":" ] (%Tuple aux_type *nat-ident*)</code></pre>
<p>For example, 10x10 matrices, vectors, and arbitrary matrices may be defined in the following way:</p>
<pre><code>matrix {X:Type} m:# n:# a:n*[ m*[ X ] ] = Matrix X;
matrix_10x10 a:10*[ 10*[ double ]] = Matrix_10x10;
vector {X:Type} # [ X ] = Vector X;</code></pre>
<p>We have already encountered the last version as a “definition” of the “built-in type” <code>Vector</code>.</p>
<p>Of course, several fields, as complex as desired, may be within the repeating part. Furthermore, besides using <em>n</em> as a repeat counter, one may use expressions of the form <em>(n+const)</em> and <em>(const+n)</em>, where <em>const</em> is a small nonnegative constant, which are shorthand for <em>S (S ( ... (S n) ... ))</em>:</p>
<pre><code>repeat_np1 n:# a:(S n)*[ key:string value:string ] = Dictionary;</code></pre>
<p>To calculate the CRC32 these expressions are converted to expressions of the form <code>(const+X)</code> without internal spaces. Additionally, the <code>*</code> in this case is not set off by spaces on the left and right.</p>
<h2><a class="anchor" href="#serialization-of-dependent-types" id="serialization-of-dependent-types" name="serialization-of-dependent-types"><i class="anchor-icon"></i></a>Serialization of dependent types</h2>
<p>Serialization of dependent types and polymorphic types is not a fundamental challenge: we have combinators with non-zero arity with Type values. For example, the type <code>Tuple double 10 : Type</code> serializes to <code>'Tuple' '%double' 10</code>. Note that at present in practice there is virtually no need to serialize types, whether dependent or not.</p>
<h2><a class="anchor" href="#optional-combinator-parameters-in-tl" id="optional-combinator-parameters-in-tl" name="optional-combinator-parameters-in-tl"><i class="anchor-icon"></i></a>Optional combinator parameters in TL</h2>
<p>Optional combinator parameters in TL must possess the following properties:</p>
<ul>
<li>
<p>Optional parameters must be precisely ythe combinators first several arguments;</p>
</li>
<li>
<p>The value of any optional parameter must be entirely determined by the combinators result type.</p>
</li>
</ul>
<p>For example, in <code>cons {X:Type} hd:X tl:(list X) = list X</code> the parameter <code>X</code> may be made optional, because it is located at the very beginning of the argument list and is unambiguously determined by the <code>list X</code> result type. Similarly, in <code>tcons {X:Type} {n:#} hd:X tl:(%Tuple X n) = Tuple X (S n)</code> the values of X and n are completely determined based on the <code>Tuple X (S n)</code> result type, therefore they made be made optional parameters.</p>
<p>It usually makes sense to move all of a constructors arguments satisfying the second condition to the beginning of the list, arrange them in the order they appear in the result types parameters, and make them optional. Given such an approach, the full version of a constructor is rarely needed -- only when we want to transmit the value of the polymorphic or dependent type as a value of type Object. In all other cases, the type of the expected value from the context is already known, which means that all optional parameters can be recovered during decomposition.</p>
<p>See also <a href="/mtproto/TL-optargs">Optional combinator parameters and their values</a>.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,151 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Optional combinator parameters and their values</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="TL Language makes it possible to declare a combinators first few parameters optional. Subsequently, they are almost never…">
<meta property="og:title" content="Optional combinator parameters and their values">
<meta property="og:image" content="">
<meta property="og:description" content="TL Language makes it possible to declare a combinators first few parameters optional. Subsequently, they are almost never…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class="active"><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="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/TL-optargs" >Optional combinator parameters and their…</a></li></ul></div>
<h1 id="dev_page_title">Optional combinator parameters and their values</h1>
<div id="dev_page_content"><p><a href="TL">TL Language</a> makes it possible to declare a combinators first few parameters optional. Subsequently, they are almost never required to be explicitly stated. This is directly related to another important property of TL: <a href="TL-polymorph">polymorphism</a>.</p>
<p>All optional parameters are typically required to be part of the result type (at least once).</p>
<p>A (sub)expression may be serialized/deserialized in one of two ways:</p>
<ul>
<li>
<p>The result type is known (for example, were parsing the response to a previously sent RPC query and therefore know the value of some type is expected). In this case, the result type may be used to determine the values of the combinators implicit parameters.</p>
</li>
<li>
<p>The result type is not known. It is determined as a result of (de)serialization (for example, we are serializing an RPC query). In this case, it is necessary to explicitly specify (and serialize) all of the combinators optional parameters by using the full version of the combinator.</p>
</li>
</ul>
<p>We will assume that the functional combinator only differs from the constructor in that before its result type the <code>!</code> modifier is implicitly added, and the (remote or local) computation of a functional expression may be presented as the execution of some polymorphic function <code>eval : !X -&gt; X</code>.</p>
<p>Moreover, the unknown result type is obviously usually (but not always) bound to the serialization of an expression whose type has been modified by <code>!</code>.</p>
<p>We can formulate the following rules. Let there be some constructor</p>
<pre><code>C {a1:T1} ... {am:Tm} b1:U1 ... bn:Un = T;</code></pre>
<p>Some of its arguments or its result may be marked with the <code>!</code> modifier (We consider a functional combinator to be a constructor whose result type has been modified by an implicit <code>!</code>).</p>
<p>The following conditions must hold:</p>
<ul>
<li>
<p>Each type <em>T1</em>, ..., <em>Tm</em>, <em>U1</em>, ..., <em>Un</em>, and <em>T</em> may depend on parameters of type <code>Type</code> or <code>#</code>, which have been declared to the left of the use of the given type.</p>
</li>
<li>
<p>The types of implicit parameters <em>T1</em>, ..., <em>Tm</em> may not be modified by <code>!</code>.</p>
</li>
<li>
<p>Only implicit parameters of type <code>Type</code> or <code>#</code> are allowed. In other words, <em>Ti</em> is either a <code>Type</code> or a <code>#</code>. (Unlike the previous rule, this rule may be relaxed in the future.)</p>
</li>
<li>
<p>Each implicit parameter <em>a1</em>, ..., <em>am</em> must be used at least once -- either within one of the <em>Ui</em> types that have a <code>!</code>, or in the result type <em>T</em>, <em>if it does not have an explicit or implicit <code>!</code></em>. </p>
</li>
<li>
<p>If an implicit parameter <em>ai</em> is not used in the result type, or if the result type has a <code>!</code>, then its first (leftmost) usage must be within a type <em>Uj</em> that is modified by <code>!</code>.</p>
</li>
</ul>
<p>The idea is this: we assume that during (de)serialization of a value of a type modified by <code>!</code> that we do not know this type in advance and we will find out what it is only based on the result of the (de)serialization; Conversely, we assume that during (de)serialization of a value of a type that is not modified by <code>!</code> that we know this type in advance. In this case, complying with the rules stated above lets us always compute the values of all implicit parameters -- either from the (previously known) result type or from the type of one of the <code>bj:!Uj</code> parameters (which was obtained during the serialization process).</p>
<p>In fact, <code>!</code> denotes the direction in which type information is flowing. By default, the result type is the source of information about types (and their parameters), while argument types are the recipients of that information. The use of <code>!</code> reverses the direction of information flow, making the result type the recipient and the argument type the source of type information.</p>
<p>See also <a href="TL-abstract-types">Binary serialization and abstract TL types</a> and <a href="TL-polymorph">Polymorphism in TL</a>.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,129 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>TL-patterns</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="partial-app-decl ::= partial-type-app-decl | partial-comb-app-decl
partial-type-app-decl ::= boxed-type-ident subexpr …">
<meta property="og:title" content="TL-patterns">
<meta property="og:image" content="">
<meta property="og:description" content="partial-app-decl ::= partial-type-app-decl | partial-comb-app-decl
partial-type-app-decl ::= boxed-type-ident subexpr …">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class="active"><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="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/TL-patterns" >TL-patterns</a></li></ul></div>
<h1 id="dev_page_title">TL-patterns</h1>
<div id="dev_page_content"><div class="richcode">
<p><em>partial-app-decl</em> ::= <em>partial-type-app-decl</em> | <em>partial-comb-app-decl</em><br>
<em>partial-type-app-decl</em> ::= <em>boxed-type-ident</em> <em>subexpr</em> { <em>subexpr</em> } <code>;</code> | <em>boxed-type-ident</em> <code>&lt;</code> <em>expr</em> { <code>,</code> <em>expr</em> } <code>&gt;</code> <code>;</code><br>
<em>partial-comb-app-decl</em> ::= <em>combinator-id</em> <em>subexpr</em> { <em>subexpr</em> } <code>;</code> </p>
</div>
<p>According to the original design, templates must be used to replace concrete values in the first few or all of the optional arguments of a constructor or polymorphic type. For example, if <code>Tuple int 10</code> is used frequently, you can declare a template for it, which will cause the appropriate constructors to be generated automatically. When using such a constructor there may be nowhere to pass an <code>int</code> type or the tuple size <code>10</code>. Similarly, it was originally planned to declared templates for <code>Vector int</code>, <code>Vector string</code>, etc. in order to generate constructors for each vector type being used type. These constructors would make it possible during deserialization to determine what kind of array is being transmitted.</p>
<p>Templates are not used now. Instead, the same universal constructors (for example, <code>vector {t:Type} [t] = Vector t</code>) are used with the values of the optional parameters being inferred from the type of the result (if we already know from the schema that in this location there must be a <code>Vector int</code> during deserialization, we understand that we will see the universal <code>vector</code> constructor in which <em>t</em> is equal to <code>int</code>).</p>
<p>This approach is better in that it is not necessary to define <code>Vector SomeType</code> templates in advance for all possible types in order to generate their own constructors for each of these cases. Nevertheless, there is a drawback. If someone wants to transmit the serialization of a value of the clothed type <code>Vector int</code> as a serialization of a value of type <code>Object</code>, a problem arises during serialization: after seeing the universal <code>vector</code> constructor and then reading the vector length, we cannot determine what type of values should be expected next.</p>
<p>In theory, this problem can be solved by using the full form of the constructor (<code>@vector</code>) corresponding to <code>vector</code> (it is automatically defined and is different in that all of the optional parameters become required), or by defining</p>
<div class="richcode">
<p>object X:Type X = TypedObject </p>
</div>
<p>and passing the object type explicitly. <a href="TL-types">Type serialization</a> is required in both cases.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,308 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>TL schema for serialization of TL schemas</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="If necessary, a TL schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually…">
<meta property="og:title" content="TL schema for serialization of TL schemas">
<meta property="og:image" content="">
<meta property="og:description" content="If necessary, a TL schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class="active"><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="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/TL-tl" >TL schema for serialization of TL schemas</a></li></ul></div>
<h1 id="dev_page_title">TL schema for serialization of TL schemas</h1>
<div id="dev_page_content"><p>If necessary, a <a href="TL">TL</a> schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually stored in the file <code>tl.tl</code>). This can be useful, for example, to make it possible to write a parser one time for converting a TL schema from text form (stored in the file <code>something.tl</code>) to binary form (stored in the file <code>something.tlo</code>). All other programs (for example, auto-generators of TL-(de)serializers for various programming languages) only need to know how to read <code>.tlo</code> files, which only requires generating an automatic deserializer according to the schema presented below.</p>
<p>First, a fragment of the file <code>common.tl</code> with certain required built-in types:</p>
<pre><code>/////
//
// Common Types (source file common.tl, only necessary definitions included)
//
/////
// Built-in types
int ? = Int;
long ? = Long;
double ? = Double;
string ? = String;
// Boolean emulation
boolFalse = Bool;
boolTrue = Bool;
// Vector
vector {t:Type} # [t] = Vector t;
tuple {t:Type} {n:#} [t] = Tuple t n;
vectorTotal {t:Type} total_count:int vector:%(Vector t) = VectorTotal t;
Empty False;
true = True;</code></pre>
<p>Next, properly, comes <code>tl.tl</code> itself. Note that the declaration for a fairly complex data type required only twenty lines in TL. This demonstrates the expressiveness and compactness of the TL language.</p>
<pre><code>/////
//
// Serialized binary TL-schema in TL format, source file tl.tl
//
/////
tls.schema_v2 version:int date:int types_num:# types:types_num*[tls.Type]
constructor_num:# constructors:constructor_num*[tls.Combinator]
functions_num:# functions:functions_num*[tls.Combinator] = tls.Schema;
tls.type name:int id:string constructors_num:int flags:int arity:int params_type:long = tls.Type;
tls.combinator name:int id:string type_name:int left:tls.CombinatorLeft right:tls.CombinatorRight = tls.Combinator;
tls.combinatorLeftBuiltin = tls.CombinatorLeft;
tls.combinatorLeft args_num:# args:args_num*[tls.Arg] = tls.CombinatorLeft;
tls.combinatorRight value:tls.TypeExpr = tls.CombinatorRight;
tls.arg id:string flags:# var_num:flags.1?int exist_var_num:flags.2?int exist_var_bit:flags.2?int type:tls.TypeExpr = tls.Arg;
tls.exprType _:tls.TypeExpr = tls.Expr;
tls.exprNat _:tls.NatExpr = tls.Expr;
tls.natConst value:int = tls.NatExpr;
tls.natVar dif:int var_num:int = tls.NatExpr;
tls.typeVar var_num:int flags:int = tls.TypeExpr;
tls.array multiplicity:tls.NatExpr args_num:# args:args_num*[tls.Arg] = tls.TypeExpr;
tls.typeExpr name:int flags:int children_num:# children:children_num*[tls.Expr] = tls.TypeExpr;</code></pre>
<h2><a class="anchor" href="#remarks" id="remarks" name="remarks"><i class="anchor-icon"></i></a>Remarks</h2>
<p>Schema serialization (version 2) always begins with the index number of the <code>tls.schema_v2</code> constructor for <code>tls.Schema</code>.
Because the CRC32 of the string</p>
<pre><code>tls.schema_v2 version:int date:int types_num:# types:types_num*[ tls.Type ] constructor_num:# constructors:constructor_num*[ tls.Combinator ] functions_num:# functions:functions_num*[ tls.Combinator ] = tls.Schema</code></pre>
<p>is 0x3a2f9be2, this constant is in fact the magic number for tlo files in the current versions format.
If the format is extended in the future (for example, if TLs additional features are supported), then a <code>tls.schema_v3</code> constructor with a different number will appear.</p>
<h2><a class="anchor" href="#example" id="example" name="example"><i class="anchor-icon"></i></a>Example</h2>
<p>If one adds declarations for the used built-in types (like <code>int ? = Int;</code>) from the file <code>common.tl</code> before <code>tl.tl</code> and serialize the resulting schema, the following binary data is obtained (<code>tl.tlo</code>):</p>
<div class="richcode">
<p><strong>0000</strong>: 3a2f9be2 00000000 51fec698 00000015 12eb4386 70659eff 00002301 00000000<br>
<strong>0020</strong>: 00000000 00000000 00000000 00000000 12eb4386 250be282 6f6f4204 0000006c<br>
<strong>0040</strong>: 00000002 02000010 00000000 00000000 00000000 12eb4386 2210c154 756f4406<br>
<strong>0060</strong>: 00656c62 00000001 02000000 00000000 00000000 00000000 12eb4386 00000000<br>
<strong>0080</strong>: 6c614605 00006573 00000000 00000401 00000000 00000000 00000000 12eb4386<br>
<strong>00a0</strong>: a8509bda 746e4903 00000001 02000001 00000000 00000000 00000000 12eb4386<br>
<strong>00c0</strong>: 22076cba 6e6f4c04 00000067 00000001 02000001 00000000 00000000 00000000<br>
<strong>00e0</strong>: 12eb4386 b5286e24 72745306 00676e69 00000001 02000001 00000000 00000000<br>
<strong>0100</strong>: 00000000 12eb4386 3fedd339 75725404 00000065 00000001 02000000 00000000<br>
<strong>0120</strong>: 00000000 00000000 12eb4386 9770768a 70755405 0000656c 00000001 02000000<br>
<strong>0140</strong>: 00000002 00000002 00000000 12eb4386 2cecf817 70795404 00000065 00000000<br>
<strong>0160</strong>: 00000000 00000000 00000000 00000000 12eb4386 1cb5c415 63655606 00726f74<br>
<strong>0180</strong>: 00000001 02000008 00000001 00000000 00000000 12eb4386 10133f47 6365560b<br>
<strong>01a0</strong>: 54726f74 6c61746f 00000001 02000000 00000001 00000000 00000000 12eb4386<br>
<strong>01c0</strong>: 29dfe61b 736c7407 6772412e 00000001 02000000 00000000 00000000 00000000<br>
<strong>01e0</strong>: 12eb4386 5c0a1ed5 736c740e 6d6f432e 616e6962 00726f74 00000001 02000000<br>
<strong>0200</strong>: 00000000 00000000 00000000 12eb4386 8133d9ba 736c7412 6d6f432e 616e6962<br>
<strong>0220</strong>: 4c726f74 00746665 00000002 02000010 00000000 00000000 00000000 12eb4386<br>
<strong>0240</strong>: 2c064372 736c7413 6d6f432e 616e6962 52726f74 74686769 00000001 02000000<br>
<strong>0260</strong>: 00000000 00000000 00000000 12eb4386 307d41a0 736c7408 7078452e 00000072<br>
<strong>0280</strong>: 00000002 02000010 00000000 00000000 00000000 12eb4386 c2635441 736c740b<br>
<strong>02a0</strong>: 74614e2e 72707845 00000002 02000010 00000000 00000000 00000000 12eb4386<br>
<strong>02c0</strong>: 3a2f9be2 736c740a 6863532e 00616d65 00000001 02000000 00000000 00000000<br>
<strong>02e0</strong>: 00000000 12eb4386 12eb4386 736c7408 7079542e 00000065 00000001 02000000<br>
<strong>0300</strong>: 00000000 00000000 00000000 12eb4386 193fd378 736c740c 7079542e 70784565<br>
<strong>0320</strong>: 00000072 00000003 02000010 00000000 00000000 00000000 00000018 5c0a1ed5<br>
<strong>0340</strong>: bc799737 6f6f6209 6c61466c 00006573 250be282 4c12c6d9 00000000 2c064372<br>
<strong>0360</strong>: c1863d08 250be282 00000000 00000000 5c0a1ed5 997275b5 6f6f6208 7572546c<br>
<strong>0380</strong>: 00000065 250be282 4c12c6d9 00000000 2c064372 c1863d08 250be282 00000000<br>
<strong>03a0</strong>: 00000000 5c0a1ed5 2210c154 756f6406 00656c62 2210c154 cd211f63 2c064372<br>
<strong>03c0</strong>: c1863d08 2210c154 00000000 00000000 5c0a1ed5 a8509bda 746e6903 a8509bda<br>
<strong>03e0</strong>: cd211f63 2c064372 c1863d08 a8509bda 00000000 00000000 5c0a1ed5 22076cba<br>
<strong>0400</strong>: 6e6f6c04 00000067 22076cba cd211f63 2c064372 c1863d08 22076cba 00000000<br>
<strong>0420</strong>: 00000000 5c0a1ed5 b5286e24 72747306 00676e69 b5286e24 cd211f63 2c064372<br>
<strong>0440</strong>: c1863d08 b5286e24 00000000 00000000 5c0a1ed5 3fedd339 75727404 00000065<br>
<strong>0460</strong>: 3fedd339 4c12c6d9 00000000 2c064372 c1863d08 3fedd339 00000000 00000000<br>
<strong>0480</strong>: 5c0a1ed5 9770768a 70757405 0000656c 9770768a 4c12c6d9 00000003 29dfe61b<br>
<strong>04a0</strong>: 00007401 00020005 00000000 c1863d08 2cecf817 00000000 00000000 29dfe61b<br>
<strong>04c0</strong>: 00006e01 00020005 00000001 c1863d08 70659eff 00000000 00000000 29dfe61b<br>
<strong>04e0</strong>: 00000000 00000000 d9fb20de 4e8a14f0 00000000 00000001 00000001 29dfe61b<br>
<strong>0500</strong>: 00000000 00000000 0142ceae 00000000 00000000 2c064372 c1863d08 9770768a<br>
<strong>0520</strong>: 00000000 00000002 ecc9da78 0142ceae 00000000 00000000 dcb49bd8 4e8a14f0<br>
<strong>0540</strong>: 00000000 00000001 5c0a1ed5 1cb5c415 63657606 00726f74 1cb5c415 4c12c6d9<br>
<strong>0560</strong>: 00000003 29dfe61b 00007401 00020005 00000000 c1863d08 2cecf817 00000000<br>
<strong>0580</strong>: 00000000 29dfe61b 00000000 00000004 00000001 c1863d08 70659eff 00000000<br>
<strong>05a0</strong>: 00000000 29dfe61b 00000000 00000000 d9fb20de 4e8a14f0 00000000 00000001<br>
<strong>05c0</strong>: 00000001 29dfe61b 00000000 00000000 0142ceae 00000000 00000000 2c064372<br>
<strong>05e0</strong>: c1863d08 1cb5c415 00000000 00000001 ecc9da78 0142ceae 00000000 00000000<br>
<strong>0600</strong>: 5c0a1ed5 10133f47 6365760b 54726f74 6c61746f 10133f47 4c12c6d9 00000003<br>
<strong>0620</strong>: 29dfe61b 00007401 00020005 00000000 c1863d08 2cecf817 00000000 00000000<br>
<strong>0640</strong>: 29dfe61b 746f740b 635f6c61 746e756f 00000000 c1863d08 a8509bda 00000001<br>
<strong>0660</strong>: 00000000 29dfe61b 63657606 00726f74 00000000 c1863d08 1cb5c415 00000001<br>
<strong>0680</strong>: 00000001 ecc9da78 0142ceae 00000000 00000000 2c064372 c1863d08 10133f47<br>
<strong>06a0</strong>: 00000000 00000001 ecc9da78 0142ceae 00000000 00000000 5c0a1ed5 29dfe61b<br>
<strong>06c0</strong>: 736c7407 6772612e 29dfe61b 4c12c6d9 00000006 29dfe61b 00646902 00000000<br>
<strong>06e0</strong>: c1863d08 b5286e24 00000001 00000000 29dfe61b 616c6605 00007367 00000004<br>
<strong>0700</strong>: 00000000 c1863d08 70659eff 00000000 00000000 29dfe61b 72617607 6d756e5f<br>
<strong>0720</strong>: 00000002 00000000 00000001 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
<strong>0740</strong>: 6978650d 765f7473 6e5f7261 00006d75 00000002 00000000 00000002 c1863d08<br>
<strong>0760</strong>: a8509bda 00000001 00000000 29dfe61b 6978650d 765f7473 625f7261 00007469<br>
<strong>0780</strong>: 00000002 00000000 00000002 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
<strong>07a0</strong>: 70797404 00000065 00000000 c1863d08 193fd378 00000000 00000000 2c064372<br>
<strong>07c0</strong>: c1863d08 29dfe61b 00000000 00000000 5c0a1ed5 5c0a1ed5 736c740e 6d6f632e<br>
<strong>07e0</strong>: 616e6962 00726f74 5c0a1ed5 4c12c6d9 00000005 29dfe61b 6d616e04 00000065<br>
<strong>0800</strong>: 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 00646902 00000000<br>
<strong>0820</strong>: c1863d08 b5286e24 00000001 00000000 29dfe61b 70797409 616e5f65 0000656d<br>
<strong>0840</strong>: 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 66656c04 00000074<br>
<strong>0860</strong>: 00000000 c1863d08 8133d9ba 00000000 00000000 29dfe61b 67697205 00007468<br>
<strong>0880</strong>: 00000000 c1863d08 2c064372 00000000 00000000 2c064372 c1863d08 5c0a1ed5<br>
<strong>08a0</strong>: 00000000 00000000 5c0a1ed5 cd211f63 736c7419 6d6f632e 616e6962 4c726f74<br>
<strong>08c0</strong>: 42746665 746c6975 00006e69 8133d9ba 4c12c6d9 00000000 2c064372 c1863d08<br>
<strong>08e0</strong>: 8133d9ba 00000000 00000000 5c0a1ed5 4c12c6d9 736c7412 6d6f632e 616e6962<br>
<strong>0900</strong>: 4c726f74 00746665 8133d9ba 4c12c6d9 00000002 29dfe61b 67726108 756e5f73<br>
<strong>0920</strong>: 0000006d 00000004 00000000 c1863d08 70659eff 00000000 00000000 29dfe61b<br>
<strong>0940</strong>: 67726104 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000000 00000001<br>
<strong>0960</strong>: 29dfe61b 00000000 00000000 c1863d08 29dfe61b 00000000 00000000 2c064372<br>
<strong>0980</strong>: c1863d08 8133d9ba 00000000 00000000 5c0a1ed5 2c064372 736c7413 6d6f632e<br>
<strong>09a0</strong>: 616e6962 52726f74 74686769 2c064372 4c12c6d9 00000001 29dfe61b 6c617605<br>
<strong>09c0</strong>: 00006575 00000000 c1863d08 193fd378 00000000 00000000 2c064372 c1863d08<br>
<strong>09e0</strong>: 2c064372 00000000 00000000 5c0a1ed5 ecc9da78 736c740c 7078652e 70795472<br>
<strong>0a00</strong>: 00000065 307d41a0 4c12c6d9 00000001 29dfe61b 00000000 00000000 c1863d08<br>
<strong>0a20</strong>: 193fd378 00000000 00000000 2c064372 c1863d08 307d41a0 00000000 00000000<br>
<strong>0a40</strong>: 5c0a1ed5 dcb49bd8 736c740b 7078652e 74614e72 307d41a0 4c12c6d9 00000001<br>
<strong>0a60</strong>: 29dfe61b 00000000 00000000 c1863d08 c2635441 00000000 00000000 2c064372<br>
<strong>0a80</strong>: c1863d08 307d41a0 00000000 00000000 5c0a1ed5 8ce940b1 736c740c 74616e2e<br>
<strong>0aa0</strong>: 736e6f43 00000074 c2635441 4c12c6d9 00000001 29dfe61b 6c617605 00006575<br>
<strong>0ac0</strong>: 00000000 c1863d08 a8509bda 00000001 00000000 2c064372 c1863d08 c2635441<br>
<strong>0ae0</strong>: 00000000 00000000 5c0a1ed5 4e8a14f0 736c740a 74616e2e 00726156 c2635441<br>
<strong>0b00</strong>: 4c12c6d9 00000002 29dfe61b 66696403 00000000 c1863d08 a8509bda 00000001<br>
<strong>0b20</strong>: 00000000 29dfe61b 72617607 6d756e5f 00000000 c1863d08 a8509bda 00000001<br>
<strong>0b40</strong>: 00000000 2c064372 c1863d08 c2635441 00000000 00000000 5c0a1ed5 3a2f9be2<br>
<strong>0b60</strong>: 736c740d 6863732e 5f616d65 00003276 3a2f9be2 4c12c6d9 00000008 29dfe61b<br>
<strong>0b80</strong>: 72657607 6e6f6973 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
<strong>0ba0</strong>: 74616404 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
<strong>0bc0</strong>: 70797409 6e5f7365 00006d75 00000004 00000000 c1863d08 70659eff 00000000<br>
<strong>0be0</strong>: 00000000 29dfe61b 70797405 00007365 00000000 d9fb20de 4e8a14f0 00000000<br>
<strong>0c00</strong>: 00000000 00000001 29dfe61b 00000000 00000000 c1863d08 12eb4386 00000000<br>
<strong>0c20</strong>: 00000000 29dfe61b 6e6f630f 75727473 726f7463 6d756e5f 00000004 00000001<br>
<strong>0c40</strong>: c1863d08 70659eff 00000000 00000000 29dfe61b 6e6f630c 75727473 726f7463<br>
<strong>0c60</strong>: 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000001 00000001 29dfe61b<br>
<strong>0c80</strong>: 00000000 00000000 c1863d08 5c0a1ed5 00000000 00000000 29dfe61b 6e75660d<br>
<strong>0ca0</strong>: 6f697463 6e5f736e 00006d75 00000004 00000002 c1863d08 70659eff 00000000<br>
<strong>0cc0</strong>: 00000000 29dfe61b 6e756609 6f697463 0000736e 00000000 d9fb20de 4e8a14f0<br>
<strong>0ce0</strong>: 00000000 00000002 00000001 29dfe61b 00000000 00000000 c1863d08 5c0a1ed5<br>
<strong>0d00</strong>: 00000000 00000000 2c064372 c1863d08 3a2f9be2 00000000 00000000 5c0a1ed5<br>
<strong>0d20</strong>: 12eb4386 736c7408 7079742e 00000065 12eb4386 4c12c6d9 00000006 29dfe61b<br>
<strong>0d40</strong>: 6d616e04 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
<strong>0d60</strong>: 00646902 00000000 c1863d08 b5286e24 00000001 00000000 29dfe61b 6e6f6310<br>
<strong>0d80</strong>: 75727473 726f7463 756e5f73 0000006d 00000000 c1863d08 a8509bda 00000001<br>
<strong>0da0</strong>: 00000000 29dfe61b 616c6605 00007367 00000000 c1863d08 a8509bda 00000001<br>
<strong>0dc0</strong>: 00000000 29dfe61b 69726105 00007974 00000000 c1863d08 a8509bda 00000001<br>
<strong>0de0</strong>: 00000000 29dfe61b 7261700b 5f736d61 65707974 00000000 c1863d08 22076cba<br>
<strong>0e00</strong>: 00000001 00000000 2c064372 c1863d08 12eb4386 00000000 00000000 5c0a1ed5<br>
<strong>0e20</strong>: 0142ceae 736c740b 7079742e 72615665 193fd378 4c12c6d9 00000002 29dfe61b<br>
<strong>0e40</strong>: 72617607 6d756e5f 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
<strong>0e60</strong>: 616c6605 00007367 00000000 c1863d08 a8509bda 00000001 00000000 2c064372<br>
<strong>0e80</strong>: c1863d08 193fd378 00000000 00000000 5c0a1ed5 d9fb20de 736c7409 7272612e<br>
<strong>0ea0</strong>: 00007961 193fd378 4c12c6d9 00000003 29dfe61b 6c756d0c 6c706974 74696369<br>
<strong>0ec0</strong>: 00000079 00000000 c1863d08 c2635441 00000000 00000000 29dfe61b 67726108<br>
<strong>0ee0</strong>: 756e5f73 0000006d 00000004 00000000 c1863d08 70659eff 00000000 00000000<br>
<strong>0f00</strong>: 29dfe61b 67726104 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000000<br>
<strong>0f20</strong>: 00000001 29dfe61b 00000000 00000000 c1863d08 29dfe61b 00000000 00000000<br>
<strong>0f40</strong>: 2c064372 c1863d08 193fd378 00000000 00000000 5c0a1ed5 c1863d08 736c740c<br>
<strong>0f60</strong>: 7079742e 70784565 00000072 193fd378 4c12c6d9 00000004 29dfe61b 6d616e04<br>
<strong>0f80</strong>: 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 616c6605<br>
<strong>0fa0</strong>: 00007367 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 6968630c<br>
<strong>0fc0</strong>: 6572646c 756e5f6e 0000006d 00000004 00000000 c1863d08 70659eff 00000000<br>
<strong>0fe0</strong>: 00000000 29dfe61b 69686308 6572646c 0000006e 00000000 d9fb20de 4e8a14f0<br>
<strong>1000</strong>: 00000000 00000000 00000001 29dfe61b 00000000 00000000 c1863d08 307d41a0<br>
<strong>1020</strong>: 00000000 00000000 2c064372 c1863d08 193fd378 00000000 00000000 00000000 </p>
</div></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,210 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>TL Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="TL (Type Language) serves to describe the used system of types, constructors, and existing functions. In fact, the combinator…">
<meta property="og:title" content="TL Language">
<meta property="og:image" content="">
<meta property="og:description" content="TL (Type Language) serves to describe the used system of types, constructors, and existing functions. In fact, the combinator…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class="active"><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="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/TL" >TL Language</a></li></ul></div>
<h1 id="dev_page_title">TL Language</h1>
<div id="dev_page_content"><p>TL (Type Language) serves to describe the used system of types, constructors, and existing functions. In fact, the combinator description format presented in <a href="/mtproto/serialize">Binary Data Serialization</a> is used.</p>
<p>See also: </p>
<ul>
<li><a href="/mtproto/TL-polymorph">Polymorphism in TL</a></li>
</ul>
<p>Advanced topics: </p>
<ul>
<li>
<p><a href="/mtproto/TL-dependent">Dependent types in TL</a></p>
</li>
<li>
<p><a href="/mtproto/TL-formal">Formal description of TL</a></p>
</li>
<li>
<p><a href="/mtproto/TL-combinators">Formal description of TL combinators</a></p>
</li>
<li>
<p><a href="/mtproto/TL-types">Type serialization</a></p>
</li>
<li>
<p><a href="/mtproto/TL-tl">TL schema for serialization of TL schemas</a></p>
</li>
<li>
<p><a href="/mtproto/TL-optargs">Optional combinator parameters and their values</a></p>
</li>
<li>
<p><a href="/mtproto/TL-abstract-types">Binary serialization and abstract TL types</a></p>
</li>
<li>
<p><a href="/mtproto/TL-patterns">Formal description of templates in TL</a></p>
</li>
</ul>
<h3><a class="anchor" href="#overview" id="overview" name="overview"><i class="anchor-icon"></i></a>Overview</h3>
<p>A TL program usually consists of two sections separated by keyword <code>---functions---</code>. The first section consists of declarations of built-in types and aggregate types (i.e. their constructors). The second section consists of the declared functions, i.e. functional combinators.</p>
<p>Actually, both the first and second sections consist of combinator declarations, each of which ends with a semicolon. However, the first section contains only constructors, while the second section only involves functions. Each combinator is declared using a “combinator declaration” in the format explained above. However, the combinator number and field names may be explicitly assigned.</p>
<p>If additional type declarations are required after functions have been declared, the keyword (section divider) <code>---types---</code> is used. Furthermore, a functional combinator may be declared in the type section if its result type begins with an exclamation point (in fact, when the function section is interpreted, this exclamation point is added automatically).</p>
<p>To explicitly define 32-bit names of combinators, a hash mark (#) is added immediately after the combinators name, followed by 8 hexadecimal digits.</p>
<h3><a class="anchor" href="#namespaces" id="namespaces" name="namespaces"><i class="anchor-icon"></i></a>Namespaces</h3>
<p>Composite constructions like <code>&lt;namespace_identifier&gt;.&lt;constructor_identifier&gt;</code> and <code>&lt;namespace_identifier&gt;.&lt;Type_identifier&gt;</code> can be used as constructor- or type identifiers. The portion of the identifier to the left of the period is called the <em>namespace</em>. Moreover, the rule about a first uppercase letter in type identifiers and lowercase letter in constructor identifiers applies to the part of the construction after the period. For example, <code>auth.Message</code> would be a type, while <code>auth.std_message</code> would be a constructor.</p>
<p>Namespaces do not require a special declaration.</p>
<h3><a class="anchor" href="#comments" id="comments" name="comments"><i class="anchor-icon"></i></a>Comments</h3>
<p>Comments are the same as in C++.</p>
<h3><a class="anchor" href="#example" id="example" name="example"><i class="anchor-icon"></i></a>Example</h3>
<pre><code>// built-in types
int#a8509bda ? = Int;
long ? = Long;
double ? = Double;
string ? = String;
null = Null;
vector {t:Type} # [ t ] = Vector t;
coupleInt {alpha:Type} int alpha = CoupleInt&lt;alpha&gt;;
coupleStr {gamma:Type} string gamma = CoupleStr gamma;
/* The name of the type variable is irrelevant: "gamma" could be replaced with "alpha";
However, the combinator number will depend on the specific choice. */
intHash {alpha:Type} vector&lt;coupleInt&lt;alpha&gt;&gt; = IntHash&lt;alpha&gt;;
strHash {alpha:Type} (vector (coupleStr alpha)) = StrHash alpha;
intSortedHash {alpha:Type} intHash&lt;alpha&gt; = IntSortedHash&lt;alpha&gt;;
strSortedHash {alpha:Type} (strHash alpha) = StrSortedHash alpha;
// custom types
pair x:Object y:Object = Pair;
triple x:Object y:Object z:Object = Triple;
user#d23c81a3 id:int first_name:string last_name:string = User;
no_user#c67599d1 id:int = User;
group id:int title:string last_name:string = Group;
no_group = Group;
---functions---
// Maybe some built-in arithmetic functions; inverse quotes make "identifiers" out of arbitrary non-alphanumeric strings
`+` Int Int = Int;
`-` Int Int = Int;
`+` Double Double = Double;
// ...
// API functions (aka RPC functions)
getUser#b0f732d5 int = User;
getUsers#2d84d5f5 (Vector int) = Vector User;</code></pre>
<p>In this case, the <code>user</code> constructor has been explicitly assigned a number (0xd23c81a3); In fact, this was not necessary, since this value is the CRC32 of the string <code>"user id:int first_name:string last_name:string = User"</code>, which would have been used by default.</p>
<p>Special constructors are not required for Vector int, Vector User, Vector Object, etc. -- the same universal constructor can be used everywhere:</p>
<pre><code>vector#1cb5c415 {t:Type} # [ t ] = Vector t;</code></pre>
<p>Note that when the <code>getUsers (Vector int) = Vector User;</code> constructor number is calculated, the CRC32 of the string "getUsers Vector int = Vector User” is computed (from which all parentheses have been removed).</p>
<p>Notation <code>T0&lt;T1,T2,...,Tn&gt;</code> is syntactic sugar for <code>(T0 (T1) (T2) ... (Tn))</code>. For example, <code>Vector&lt;User&gt;</code> and <code>(Vector User)</code> are entirely interchangeable.</p>
<h4><a class="anchor" href="#example-of-an-rpc-query" id="example-of-an-rpc-query" name="example-of-an-rpc-query"><i class="anchor-icon"></i></a>Example of an RPC query</h4>
<p>Suppose we want to call <code>getUsers([2,3,4])</code>. This query will be serialized into a sequence of 32-bit integers as follows:</p>
<pre><code>0x2d84d5f5 0x1cb5c415 0x3 0x2 0x3 0x4</code></pre>
<p>Please note that TL serialization yields sequences of 32-bit integers. When it has to be embedded into a byte stream, for example a network packet, each 32-bit integer is represented by four bytes in little-endian order. In this way the above query corresponds to the following byte stream:</p>
<pre><code>F5 D5 84 2D 15 C4 B5 1C 03 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00</code></pre>
<p>The response might look something like this:</p>
<pre><code>0x1cb5c415 0x3 0xd23c81a3 0x2 0x74655005 0x00007265 0x72615006 0x72656b 0xc67599d1 0x3 0xd23c81a3 0x4 0x686f4a04 0x6e 0x656f4403</code></pre>
<p>This roughly corresponds to</p>
<pre><code>[{"id":2,"first_name":"Peter", "last_name":"Parker"},{},{"id":4,"first_name":"John","last_name":"Doe"}]</code></pre>
<p>Note that in both cases the same universal constructor <code>vector#1cb5c415</code> is used: in the request to serialize the value of type <code>Vector int</code>, and in the serialization of the value of type <code>Vector User</code> in the response. There is no ambiguity because in both cases the type of the value being (de)serialized is known before its (de)serialization begins. For example, after receiving the query, the server sees that the first part is <code>0x2d84d5f5</code>, which corresponds to the combinator <code>getUsers#2d84d5f5 (Vector int) = Vector User</code>. Thus, it is understood that what follows will be a value of type <code>Vector int</code>. After receiving the response to this query, the client knows that it must receive a value of type <code>Vector User</code> and it deserializes the response accordingly.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,465 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>TDLib options</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="List of options supported by TdLib">
<meta property="og:title" content="TDLib options">
<meta property="og:image" content="">
<meta property="og:description" content="List of options supported by TdLib">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><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="/tdlib" >TDLib</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/tdlib/options" >TDLib options</a></li></ul></div>
<h1 id="dev_page_title">TDLib options</h1>
<div id="dev_page_content"><p><a href="/tdlib">TDLib</a> has many options that affect the behavior of the library. Each option has a <strong>name</strong> and a <strong>value</strong>. <strong>Value</strong> may be of one of the following types:</p>
<table class="table">
<tbody>
<tr>
<td><strong>Type of value</strong></td>
<td><strong>Default value</strong></td>
<td><strong>Value range</strong></td>
</tr>
<tr>
<td>Integer</td>
<td>0</td>
<td>64-bit integer</td>
</tr>
<tr>
<td>Boolean</td>
<td>false</td>
<td>True or false</td>
</tr>
<tr>
<td>String</td>
<td></td>
<td>Any Unicode string</td>
</tr>
</tbody>
</table>
<h1><a class="anchor" name="list-of-options-supported-by-tdlib" href="#list-of-options-supported-by-tdlib"><i class="anchor-icon"></i></a>List of options supported by TDLib</h1>
<p>Options not mentioned in this list may be safely ignored.</p>
<table class="table">
<tbody>
<tr>
<td><strong>Name</strong></td>
<td><strong>Type</strong></td>
<td><strong>Writable</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr>
<td>always_parse_markdown</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, text entities will be automatically parsed in all <code>inputMessageText</code> objects</td>
</tr>
<tr>
<td>archive_and_mute_new_chats_from_unknown_users</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, new chats from non-contacts will be automatically archived and muted. The option can be set only if the option “can_archive_and_mute_new_chats_from_unknown_users” is true. <code>getOption</code> needs to be called explicitly to fetch the latest value of the option, changed from another device</td>
</tr>
<tr>
<td>disable_contact_registered_notifications</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, notifications about the user&#39;s contacts who have joined Telegram will be disabled. User will still receive the corresponding message in the private chat. <code>getOption</code> needs to be called explicitly to fetch the latest value of the option, changed from another device</td>
</tr>
<tr>
<td>disable_persistent_network_statistics</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, persistent network statistics will be disabled, which significantly reduces disk usage</td>
</tr>
<tr>
<td>disable_sent_scheduled_message_notifications</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, notifications about outgoing scheduled messages that were sent will be disabled</td>
</tr>
<tr>
<td>disable_time_adjustment_protection</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, protection from external time adjustment will be disabled, which significantly reduces disk usage</td>
</tr>
<tr>
<td>disable_top_chats</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, support for top chats and statistics collection is disabled</td>
</tr>
<tr>
<td>ignore_background_updates</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, allows to skip all updates received while the TDLib instance was not running. The option does nothing if the database or secret chats are used</td>
</tr>
<tr>
<td>ignore_default_disable_notification</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, the <code>disable_notification</code> value specified in the request will be always used instead of the default value</td>
</tr>
<tr>
<td>ignore_inline_thumbnails</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, prevents file thumbnails sent by the server along with messages from being saved on the disk</td>
</tr>
<tr>
<td>ignore_platform_restrictions</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, chat and message restrictions specific to the currently used operating system will be ignored</td>
</tr>
<tr>
<td>ignore_sensitive_content_restrictions</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, sensitive content will be shown on all user devices. <code>getOption</code> needs to be called explicitly to fetch the latest value of the option, changed from another device</td>
</tr>
<tr>
<td>is_location_visible</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, other users will be allowed to see the current user&#39;s location</td>
</tr>
<tr>
<td>language_pack_database_path</td>
<td>String</td>
<td>Yes</td>
<td>Path to a database for storing language pack strings, so that this database can be shared between different accounts. By default, language pack strings are stored only in memory. Changes of value of this option will be applied only after TDLib restart, so it should be set before call to <code>setTdlibParameters</code>.</td>
</tr>
<tr>
<td>language_pack_id</td>
<td>String</td>
<td>Yes</td>
<td>Identifier of the currently used language pack from the current localization target</td>
</tr>
<tr>
<td>localization_target</td>
<td>String</td>
<td>Yes</td>
<td>Name for the current localization target (currently supported: “android”, “android_x”, “ios”, “macos” and “tdesktop”)</td>
</tr>
<tr>
<td>message_unload_delay</td>
<td>Integer</td>
<td>Yes</td>
<td>The maximum time messages are stored in memory before they are unloaded, 60-86400; in seconds. Defaults to 60 for users and 1800 for bots</td>
</tr>
<tr>
<td>notification_group_count_max</td>
<td>Integer</td>
<td>Yes</td>
<td>Maximum number of notification groups to be shown simultaneously, 0-25</td>
</tr>
<tr>
<td>notification_group_size_max</td>
<td>Integer</td>
<td>Yes</td>
<td>Maximum number of simultaneously shown notifications in a group, 1-25. Defaults to 10</td>
</tr>
<tr>
<td>online</td>
<td>Boolean</td>
<td>Yes</td>
<td>Online status of the current user</td>
</tr>
<tr>
<td>prefer_ipv6</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, IPv6 addresses will be preferred over IPv4 addresses</td>
</tr>
<tr>
<td>use_pfs</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, Perfect Forward Secrecy will be enabled for interaction with the Telegram servers for cloud chats</td>
</tr>
<tr>
<td>use_quick_ack</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, quick acknowledgement will be enabled for outgoing messages</td>
</tr>
<tr>
<td>use_storage_optimizer</td>
<td>Boolean</td>
<td>Yes</td>
<td>If true, the background storage optimizer will be enabled</td>
</tr>
<tr>
<td>animated_emoji_sticker_set_name</td>
<td>String</td>
<td>No</td>
<td>Name of a sticker set with animated emojis</td>
</tr>
<tr>
<td>animation_search_bot_username</td>
<td>String</td>
<td>No</td>
<td>Username of a bot which can be used in inline mode for animations search</td>
</tr>
<tr>
<td>authorization_date</td>
<td>Integer</td>
<td>No</td>
<td>Point in time (Unix timestamp) when authorization was received</td>
</tr>
<tr>
<td>basic_group_size_max</td>
<td>Integer</td>
<td>No</td>
<td>Maximum number of members in a basic group</td>
</tr>
<tr>
<td>call_connect_timeout_ms</td>
<td>Integer</td>
<td>No</td>
<td>Maximum time to wait for call connection creation to be passed to libtgvoip</td>
</tr>
<tr>
<td>call_packet_timeout_ms</td>
<td>Integer</td>
<td>No</td>
<td>Maximum time to wait for call packet delivery to be passed to libtgvoip</td>
</tr>
<tr>
<td>can_archive_and_mute_new_chats_from_unknown_users</td>
<td>Boolean</td>
<td>No</td>
<td>If true, the option “archive_and_mute_new_chats_from_unknown_users” can be changed</td>
</tr>
<tr>
<td>can_ignore_sensitive_content_restrictions</td>
<td>Boolean</td>
<td>No</td>
<td>If true, the option “ignore_sensitive_content_restrictions” can be changed</td>
</tr>
<tr>
<td>enabled_proxy_id</td>
<td>Integer</td>
<td>No</td>
<td>Identifier of the enabled proxy</td>
</tr>
<tr>
<td>expect_blocking</td>
<td>Boolean</td>
<td>No</td>
<td>If true, access to Telegram is likely blocked for the user</td>
</tr>
<tr>
<td>favorite_stickers_limit</td>
<td>Integer</td>
<td>No</td>
<td>Maximum number of favorite stickers</td>
</tr>
<tr>
<td>forwarded_message_count_max</td>
<td>Integer</td>
<td>No</td>
<td>Maximum number of forwarded messages per one request</td>
</tr>
<tr>
<td>group_anonymous_bot_user_id</td>
<td>Integer</td>
<td>No</td>
<td>Identifier of the bot which is shown as the sender of anonymous messages in groups when viewed from an outdated client</td>
</tr>
<tr>
<td>message_caption_length_max</td>
<td>Integer</td>
<td>No</td>
<td>Maximum length of a message caption</td>
</tr>
<tr>
<td>message_text_length_max</td>
<td>Integer</td>
<td>No</td>
<td>Maximum length of a message text</td>
</tr>
<tr>
<td>my_id</td>
<td>Integer</td>
<td>No</td>
<td>Identifier of the current user</td>
</tr>
<tr>
<td>pinned_archived_chat_count_max</td>
<td>Integer</td>
<td>No</td>
<td>Maximum number of pinned cloud chats in the Archive chat list. The same amount of secret chats can be pinned locally</td>
</tr>
<tr>
<td>pinned_chat_count_max</td>
<td>Integer</td>
<td>No</td>
<td>Maximum number of pinned cloud chats in the Main chat list. The same amount of secret chats can be pinned locally</td>
</tr>
<tr>
<td>photo_search_bot_username</td>
<td>String</td>
<td>No</td>
<td>Username of a bot which can be used in inline mode for photos search</td>
</tr>
<tr>
<td>replies_bot_chat_id</td>
<td>Integer</td>
<td>No</td>
<td>Identifier of the @replies bot</td>
</tr>
<tr>
<td>suggested_language_pack_id</td>
<td>String</td>
<td>No</td>
<td>Identifier of the language pack, suggested for the user by the server</td>
</tr>
<tr>
<td>supergroup_size_max</td>
<td>Integer</td>
<td>No</td>
<td>Maximum number of members in a supergroup</td>
</tr>
<tr>
<td>t_me_url</td>
<td>String</td>
<td>No</td>
<td>Current value of t.me URL, i.e. <code>https://t.me/</code></td>
</tr>
<tr>
<td>telegram_service_notifications_chat_id</td>
<td>Integer</td>
<td>No</td>
<td>Identifier of the Telegram Service Notifications chat</td>
</tr>
<tr>
<td>test_mode</td>
<td>Boolean</td>
<td>No</td>
<td>If true, the test environment is being used instead of the production environment</td>
</tr>
<tr>
<td>unix_time</td>
<td>Integer</td>
<td>No</td>
<td>An estimation of the current Unix timestamp. The option will not be updated automatically unless the difference between the previous estimation and the locally available monotonic clocks changes significantly</td>
</tr>
<tr>
<td>venue_search_bot_username</td>
<td>String</td>
<td>No</td>
<td>Username of a bot which can be used in inline mode for venues search</td>
</tr>
<tr>
<td>version</td>
<td>String</td>
<td>No</td>
<td>TDLib version. This options is guaranteed to come before all other updates since TDLib 1.4.0</td>
</tr>
</tbody>
</table>
<p>Additionally any option beginning with &#39;x&#39; or &#39;X&#39; is writeable and can be safely used by the application to persistently store some small amount of data.</p>
</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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,141 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Telegram Widgets</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Telegram widgets offer a quick way to add a sharing button to your pages, embed posts from public channels or groups. Widgets…">
<meta property="og:title" content="Telegram Widgets">
<meta property="og:image" content="">
<meta property="og:description" content="Telegram widgets offer a quick way to add a sharing button to your pages, embed posts from public channels or groups. Widgets…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><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"></div>
<h1 id="dev_page_title">Telegram Widgets</h1>
<div id="dev_page_content"><p>Telegram widgets offer a quick way to add a <a href="https://core.telegram.org/widgets/share"><strong>sharing button</strong></a> to your pages, <a href="https://core.telegram.org/widgets/posts"><strong>embed posts</strong></a> from public <a href="https://telegram.org/tour/channels">channels</a> or <a href="https://telegram.org/tour/groups">groups</a>. Widgets can also help your users <a href="https://core.telegram.org/widgets/login"><strong>log in with Telegram</strong></a> or view <a href="https://core.telegram.org/widgets/discussion"><strong>Telegram Discussions</strong></a> on your website.</p>
</div>
<div class="dev_page_widgets_list clearfix">
<div class="dev_page_widget_item">
<a href="/widgets/share" class="dev_page_widget_thumb dev_page_widget_thumb_share"></a>
<div class="dev_page_widget_title">
<a href="/widgets/share">Sharing button</a>
</div>
</div>
<div class="dev_page_widget_item">
<a href="/widgets/post" class="dev_page_widget_thumb dev_page_widget_thumb_post"></a>
<div class="dev_page_widget_title">
<a href="/widgets/post">Post Widget</a>
</div>
</div>
<div class="dev_page_widget_item">
<a href="/widgets/login" class="dev_page_widget_thumb dev_page_widget_thumb_login"></a>
<div class="dev_page_widget_title">
<a href="/widgets/login">Login Widget</a>
</div>
</div>
<div class="dev_page_widget_item">
<a href="/widgets/discussion" class="dev_page_widget_thumb dev_page_widget_thumb_comments"></a>
<div class="dev_page_widget_title">
<a href="/widgets/discussion">Discussion Widget</a>
</div>
</div>
</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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,240 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Post Widget</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="You can embed messages from public groups and channels anywhere. Heres what an embed of a Telegram message looks like when…">
<meta property="og:title" content="Post Widget">
<meta property="og:image" content="https://core.telegram.org/file/811140747/166d/MNEJA3BlETo.107862/6fe98d36f382b03091">
<meta property="og:description" content="You can embed messages from public groups and channels anywhere. Heres what an embed of a Telegram message looks like when…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/bootstrap-extra.css?2" rel="stylesheet">
<link href="/css/core-widgets.css?1" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><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="/widgets" >Widgets</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/widgets/post" >Post Widget</a></li></ul></div>
<h1 id="dev_page_title">Post Widget</h1>
<div id="dev_page_content"><p>You can <strong>embed messages from public groups and channels</strong> anywhere. Heres what an embed of a Telegram message looks like when included on a web page:</p>
<div><br>
<script async src="https://telegram.org/js/telegram-widget.js?1" data-telegram-post="durov/68" data-width="100%"></script>
<br><br>
</div>
<p>To get the HTML-code for embedding a message, just <strong>open its t.me link</strong> (e.g., <a href="https://t.me/durov/43">t.me/durov/43</a>) in a web browser and click <strong>&lt; &gt; EMBED</strong>:</p>
<div class="blog_image_wrap">
<a href="/file/811140747/166d/MNEJA3BlETo.107862/6fe98d36f382b03091" target="_blank"><img src="/file/811140747/166d/MNEJA3BlETo.107862/6fe98d36f382b03091" title="Login on external website" /></a>
</div>
<h3><a class="anchor" name="configure-widget" href="#configure-widget"><i class="anchor-icon"></i></a>Configure widget</h3>
<p>You can choose more options using the form below.</p>
<p><form class="form-horizontal form-telegram clearfix" id="post_widget_config">
<div class="form-group">
<label class="col-md-3 control-label">Link to post:</label>
<div class="col-md-6">
<div class="textfield-item">
<input id="post_link" name="post_link" type="text" class="form-control" placeholder="link to a public post, e.g. https://t.me/telegram/83">
<div class="textfield-item-underline"></div>
<span class="textfield-item-error" id="post_link_error"></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Width:</label>
<div class="col-md-6">
<div class="textfield-item" style="width: 50px;">
<input id="width" name="width" type="text" class="form-control" placeholder="100%" maxlength="4">
<div class="textfield-item-underline"></div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Author Photo:</label>
<div class="col-md-6">
<label class="radio-item radio-item-block">
<input type="radio" class="radio" name="author_photo" value="" checked />
<span class="radio-input ripple-handler"><span class="ripple-mask"><span class="ripple"></span></span><span class="radio-input-icon"></span></span><span class="radio-label">Auto</span>
</label>
<label class="radio-item radio-item-block">
<input type="radio" class="radio" name="author_photo" value="true" />
<span class="radio-input ripple-handler"><span class="ripple-mask"><span class="ripple"></span></span><span class="radio-input-icon"></span></span><span class="radio-label">Always show</span>
</label>
<label class="radio-item radio-item-block">
<input type="radio" class="radio" name="author_photo" value="false" />
<span class="radio-input ripple-handler"><span class="ripple-mask"><span class="ripple"></span></span><span class="radio-input-icon"></span></span><span class="radio-label">Always hide</span>
</label>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Accent color:</label>
<div class="col-md-6">
<div class="widget-accent-colors">
<label class="widget-accent-color-item">
<input type="radio" class="radio" name="color" value="default" checked />
<div class="widget-color-circle"></div>
<div class="widget-color-label">Default</div>
</label>
<label class="widget-accent-color-item" data-color="13B4C6" data-bg-color="13C5D9" data-dark-color="39C4E8">
<input type="radio" class="radio" name="color" value="13B4C6" />
<div class="widget-color-circle" style="background-color: #13C5D9;"></div>
<div class="widget-color-label">Cyan</div>
</label>
<label class="widget-accent-color-item" data-color="29B127" data-bg-color="4CB94E" data-dark-color="72E350">
<input type="radio" class="radio" name="color" value="29B127" />
<div class="widget-color-circle" style="background-color: #4CB94E;"></div>
<div class="widget-color-label">Green</div>
</label>
<label class="widget-accent-color-item" data-color="CA9C0E" data-bg-color="E8B824" data-dark-color="F0B138">
<input type="radio" class="radio" name="color" value="CA9C0E" />
<div class="widget-color-circle" style="background-color: #E8B824;"></div>
<div class="widget-color-label">Yellow</div>
</label>
<label class="widget-accent-color-item" data-color="E22F38" data-bg-color="F34750" data-dark-color="F95C54">
<input type="radio" class="radio" name="color" value="E22F38" />
<div class="widget-color-circle" style="background-color: #F34750;"></div>
<div class="widget-color-label">Red</div>
</label>
<label class="widget-accent-color-item" data-color="343638" data-bg-color="343638" data-dark-color="FFFFFF" data-text="Black" data-dark-text="White">
<input type="radio" class="radio" name="color" value="343638" />
<div class="widget-color-circle" style="background-color: #343638;"></div>
<div class="widget-color-label">Black</div>
</label>
<label class="widget-accent-color-item">
<input type="radio" class="radio" name="color" value="custom">
<div class="widget-color-circle widget-color-circle-custom" style="color: #F646A4;"></div>
<div class="widget-color-label widget-color-label-custom">Custom</div>
<div class="textfield-item widget-accent-color-field-item">
<input class="form-control widget-accent-color-field" name="customcolor" type="text" autocomplete="off" value="F646A4" maxlength="6">
<div class="textfield-item-underline"></div>
</div>
</label>
</div>
<label class="checkbox-item checkbox-item-block">
<input type="checkbox" class="checkbox" name="dark" value="1" />
<span class="checkbox-input ripple-handler"><span class="ripple-mask"><span class="ripple"></span></span><span class="checkbox-input-icon"></span></span><span class="checkbox-label">Dark theme</span>
</label>
</div>
</div>
<div class="form-group">
<label for="embed_code" class="col-md-3 control-label">Embed Code:</label>
<div class="col-md-6">
<textarea id="embed_code" class="form-control embed_code" rows="5" readonly onclick="this.select();"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-1 col-md-10">
<div class="widget_container row" id="widget_container"></div>
</div>
</div>
</form></p>
</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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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="/">Platform</a></h5>
<ul>
<li><a href="/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="/">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?42"></script>
<script src="/js/jquery.min.js?1"></script>
<script src="/js/jquery-ui.min.js?1"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/core-widgets.js?1"></script>
<script>PostWidget.init({"default_link":"https:\/\/t.me\/telegram\/83","link_error":"Invalid post link","widget_script":"https:\/\/telegram.org\/js\/telegram-widget.js?15"});
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,182 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Threads</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Telegram allows commenting on a [channel post](/api/channel) or on a generic [supergroup message](/api/channel), thanks to message threads.">
<meta property="og:title" content="Threads">
<meta property="og:image" content="">
<meta property="og:description" content="Telegram allows commenting on a [channel post](/api/channel) or on a generic [supergroup message](/api/channel), thanks to message threads.">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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="/api/threads" >Threads</a></li></ul></div>
<h1 id="dev_page_title">Threads</h1>
<div id="dev_page_content"><!-- scroll_nav -->
<p>Telegram allows commenting on a <a href="/api/channel">channel post</a> or on a generic <a href="/api/channel">supergroup message</a>, thanks to message threads.</p>
<h3><a class="anchor" href="#message-threads" id="message-threads" name="message-threads"><i class="anchor-icon"></i></a>Message threads</h3>
<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>#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>&lt;<a href='/type/Peer'>Peer</a>&gt; 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>#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>&lt;<a href='/type/MessageEntity'>MessageEntity</a>&gt; 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>&lt;<a href='/type/RestrictionReason'>RestrictionReason</a>&gt; 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>#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>#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>&lt;<a href='/type/Peer'>Peer</a>&gt; 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> 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>#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>&lt;<a href='/type/MessageEntity'>MessageEntity</a>&gt; 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>&lt;<a href='/type/RestrictionReason'>RestrictionReason</a>&gt; 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>;
---functions---
<a href='/method/contacts.blockFromReplies'>contacts.blockFromReplies</a>#29a8962c flags:<a href='/type/%23'>#</a> delete_message:flags.0?<a href='/constructor/true'>true</a> delete_history:flags.1?<a href='/constructor/true'>true</a> report_spam:flags.2?<a href='/constructor/true'>true</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
<a href='/method/contacts.resolveUsername'>contacts.resolveUsername</a>#f93ccba3 username:<a href='/type/string'>string</a> = <a href='/type/contacts.ResolvedPeer'>contacts.ResolvedPeer</a>;</code></pre>
<p>Since a user can comment in channel posts without joining the actual <a href="/api/discussion">discussion supergroup</a>, there must be a way for them to receive notifications about replies in comment sections.<br>
For this reason, a special <code>@replies</code> username is provided.
Its ID for main and testing endpoints can be seen in the <a href="https://github.com/tdlib/td/blob/34cf869c02583c23b023f725dca30cd18efc82a3/td/telegram/ContactsManager.cpp#L4418">tdlib sources</a>. </p>
<p>When someone replies to one of our messages in the comment section of a channel post, and the user is not subscribed to the discussion group, the client will receive two updates:</p>
<ul>
<li>An <a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> from the discussion group itself, structured just like any other update coming from a subscribed group, with:<ul>
<li><code>id</code> set to the ID of the reply</li>
<li><code>from_id</code> set to the peer that replied to us</li>
<li><code>peer_id</code> set to the peer of the <a href="/api/discussion">discussion group</a></li>
<li><code>reply_to.reply_to_msg_id</code> set to the ID of our message</li>
<li><code>reply_to.reply_to_top_id</code> set to the <a href="/api/threads">thread ID</a>. </li>
</ul>
</li>
<li>An <a href="/constructor/updateNewMessage">updateNewMessage</a><ul>
<li><code>id</code> set to the common ID sequence for users</li>
<li><code>from_id</code> set to the peer of <code>@replies</code></li>
<li><code>peer_id</code> set to our own peer</li>
<li><code>fwd_from.saved_from_msg_id</code> set to the ID of the reply</li>
<li><code>fwd_from.from_id</code> set to the the peer that replied to us</li>
<li><code>reply_to.reply_to_peer_id</code> set to the peer of the <a href="/api/discussion">discussion group</a></li>
<li><code>reply_to.reply_to_msg_id</code> set to the ID of our message</li>
<li><code>reply_to.reply_to_top_id</code> set to the <a href="/api/threads">thread ID</a></li>
</ul>
</li>
</ul>
<p>Clients should display messages coming from <code>@replies</code> as a read-only supergroup, with each reply displayed as a separate message from the author of the reply, with a "View in chat" button like for channel comments. </p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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?42"></script>
<script src="/js/jquery.min.js?1"></script>
<script src="/js/bootstrap.min.js"></script>
<script>window.initDevPageNav&&initDevPageNav();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Top peer rating</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="If enabled, the rating of top peers indicates the relevance of a frequently used peer in a certain category (frequently messaged users, frequently used bots, inline bots, frequently visited channels and so on).">
<meta property="og:title" content="Top peer rating">
<meta property="og:image" content="34465abeb3bc2c4844">
<meta property="og:description" content="If enabled, the rating of top peers indicates the relevance of a frequently used peer in a certain category (frequently messaged users, frequently used bots, inline bots, frequently visited channels and so on).">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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="/api/top-rating" >Top peer rating</a></li></ul></div>
<h1 id="dev_page_title">Top peer rating</h1>
<div id="dev_page_content"><p>If <a href="/method/contacts.toggleTopPeers">enabled</a>, the rating of <a href="/constructor/topPeer">top peers</a> indicates the relevance of a frequently used peer in a certain <a href="/type/TopPeerCategory">category</a> (frequently messaged users, frequently used bots, inline bots, frequently visited channels and so on).</p>
<p>Schema: </p>
<pre><code><a href='/constructor/topPeer'>topPeer</a>#edcdc05b peer:<a href='/type/Peer'>Peer</a> rating:<a href='/type/double'>double</a> = <a href='/type/TopPeer'>TopPeer</a>;
<a href='/constructor/topPeerCategoryBotsPM'>topPeerCategoryBotsPM</a>#ab661b5b = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
<a href='/constructor/topPeerCategoryBotsInline'>topPeerCategoryBotsInline</a>#148677e2 = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
<a href='/constructor/topPeerCategoryCorrespondents'>topPeerCategoryCorrespondents</a>#637b7ed = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
<a href='/constructor/topPeerCategoryGroups'>topPeerCategoryGroups</a>#bd17a14a = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
<a href='/constructor/topPeerCategoryChannels'>topPeerCategoryChannels</a>#161d9628 = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
<a href='/constructor/topPeerCategoryPhoneCalls'>topPeerCategoryPhoneCalls</a>#1e76a78c = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
<a href='/constructor/topPeerCategoryForwardUsers'>topPeerCategoryForwardUsers</a>#a8406ca9 = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
<a href='/constructor/topPeerCategoryForwardChats'>topPeerCategoryForwardChats</a>#fbeec0f0 = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
<a href='/constructor/topPeerCategoryPeers'>topPeerCategoryPeers</a>#fb834291 category:<a href='/type/TopPeerCategory'>TopPeerCategory</a> count:<a href='/type/int'>int</a> peers:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/TopPeer'>TopPeer</a>&gt; = <a href='/type/TopPeerCategoryPeers'>TopPeerCategoryPeers</a>;
<a href='/constructor/contacts.topPeersNotModified'>contacts.topPeersNotModified</a>#de266ef5 = <a href='/type/contacts.TopPeers'>contacts.TopPeers</a>;
<a href='/constructor/contacts.topPeers'>contacts.topPeers</a>#70b772a8 categories:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/TopPeerCategoryPeers'>TopPeerCategoryPeers</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/contacts.TopPeers'>contacts.TopPeers</a>;
<a href='/constructor/contacts.topPeersDisabled'>contacts.topPeersDisabled</a>#b52c939d = <a href='/type/contacts.TopPeers'>contacts.TopPeers</a>;
---functions---
<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>
<ul>
<li><code>dateOpened</code> indicates when was the peer used</li>
<li><code>normalizeRate</code> is an arbitrary time in the recent past.
When ratings are received from the server using <a href="/method/contacts.getTopPeers">contacts.getTopPeers</a> and the schema described above, it is the time when they were received.</li>
</ul>
<pre><code>topPeer.rating += e^((dateOpened - normalizeRate) / config.rating_e_decay)</code></pre></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,266 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>channelAdminLogEventsFilter</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Filter only certain admin log events">
<meta property="og:title" content="channelAdminLogEventsFilter">
<meta property="og:image" content="">
<meta property="og:description" content="Filter only certain admin log events">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class="active"><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="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventsFilter" >channelAdminLogEventsFilter</a></li></ul></div>
<h1 id="dev_page_title">channelAdminLogEventsFilter</h1>
<div id="dev_page_content"><p>Filter only certain admin log events</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/channelAdminLogEventsFilter" class="current_page_link" >channelAdminLogEventsFilter</a>#ea107ae4 flags:<a href="/type/%23" >#</a> join:flags.0?true leave:flags.1?true invite:flags.2?true ban:flags.3?true unban:flags.4?true kick:flags.5?true unkick:flags.6?true promote:flags.7?true demote:flags.8?true info:flags.9?true settings:flags.10?true pinned:flags.11?true edit:flags.12?true delete:flags.13?true group_call:flags.14?true invites:flags.15?true = <a href="/type/ChannelAdminLogEventsFilter" >ChannelAdminLogEventsFilter</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</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><a href="/constructor/channelAdminLogEventActionParticipantJoin">Join events</a></td>
</tr>
<tr>
<td><strong>leave</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><a href="/constructor/channelAdminLogEventActionParticipantLeave">Leave events</a></td>
</tr>
<tr>
<td><strong>invite</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><a href="/constructor/channelAdminLogEventActionParticipantInvite">Invite events</a></td>
</tr>
<tr>
<td><strong>ban</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/constructor/true">true</a></td>
<td><a href="/constructor/channelAdminLogEventActionParticipantToggleBan">Ban events</a></td>
</tr>
<tr>
<td><strong>unban</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><a href="/constructor/channelAdminLogEventActionParticipantToggleBan">Unban events</a></td>
</tr>
<tr>
<td><strong>kick</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><a href="/constructor/channelAdminLogEventActionParticipantToggleBan">Kick events</a></td>
</tr>
<tr>
<td><strong>unkick</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><a href="/constructor/channelAdminLogEventActionParticipantToggleBan">Unkick events</a></td>
</tr>
<tr>
<td><strong>promote</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/constructor/true">true</a></td>
<td><a href="/constructor/channelAdminLogEventActionParticipantToggleAdmin">Admin promotion events</a></td>
</tr>
<tr>
<td><strong>demote</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><a href="/constructor/channelAdminLogEventActionParticipantToggleAdmin">Admin demotion events</a></td>
</tr>
<tr>
<td><strong>info</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>Info change events (when <a href="/constructor/channelAdminLogEventActionChangeAbout">about</a>, <a href="/constructor/channelAdminLogEventActionChangeLinkedChat">linked chat</a>, <a href="/constructor/channelAdminLogEventActionChangeLocation">location</a>, <a href="/constructor/channelAdminLogEventActionChangePhoto">photo</a>, <a href="/constructor/channelAdminLogEventActionChangeStickerSet">stickerset</a>, <a href="/constructor/channelAdminLogEventActionChangeTitle">title</a> or <a href="/constructor/channelAdminLogEventActionChangeUsername">username</a> data of a channel gets modified)</td>
</tr>
<tr>
<td><strong>settings</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>Settings change events (<a href="/constructor/channelAdminLogEventActionToggleInvites">invites</a>, <a href="/constructor/channelAdminLogEventActionTogglePreHistoryHidden">hidden prehistory</a>, <a href="/constructor/channelAdminLogEventActionToggleSignatures">signatures</a>, <a href="/constructor/channelAdminLogEventActionDefaultBannedRights">default banned rights</a>)</td>
</tr>
<tr>
<td><strong>pinned</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><a href="/constructor/channelAdminLogEventActionUpdatePinned">Message pin events</a></td>
</tr>
<tr>
<td><strong>edit</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><a href="/constructor/channelAdminLogEventActionEditMessage">Message edit events</a></td>
</tr>
<tr>
<td><strong>delete</strong></td>
<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>Group call events</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>Invite events</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/ChannelAdminLogEventsFilter">ChannelAdminLogEventsFilter</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="#channeladminlogeventactionparticipantjoin" id="channeladminlogeventactionparticipantjoin" name="channeladminlogeventactionparticipantjoin"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionParticipantJoin">channelAdminLogEventActionParticipantJoin</a></h4>
<p>A user has joined the group (in the case of big groups, info of the user that has joined isn't shown)</p>
<h4><a class="anchor" href="#channeladminlogeventactionparticipantleave" id="channeladminlogeventactionparticipantleave" name="channeladminlogeventactionparticipantleave"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionParticipantLeave">channelAdminLogEventActionParticipantLeave</a></h4>
<p>A user left the channel/supergroup (in the case of big groups, info of the user that has joined isn't shown)</p>
<h4><a class="anchor" href="#channeladminlogeventactionparticipantinvite" id="channeladminlogeventactionparticipantinvite" name="channeladminlogeventactionparticipantinvite"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionParticipantInvite">channelAdminLogEventActionParticipantInvite</a></h4>
<p>A user was invited to the group</p>
<h4><a class="anchor" href="#channeladminlogeventactionparticipanttoggleban" id="channeladminlogeventactionparticipanttoggleban" name="channeladminlogeventactionparticipanttoggleban"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionParticipantToggleBan">channelAdminLogEventActionParticipantToggleBan</a></h4>
<p>The banned <a href="/api/rights">rights</a> of a user were changed</p>
<h4><a class="anchor" href="#channeladminlogeventactionparticipanttoggleadmin" id="channeladminlogeventactionparticipanttoggleadmin" name="channeladminlogeventactionparticipanttoggleadmin"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionParticipantToggleAdmin">channelAdminLogEventActionParticipantToggleAdmin</a></h4>
<p>The admin <a href="/api/rights">rights</a> of a user were changed</p>
<h4><a class="anchor" href="#channeladminlogeventactionchangeabout" id="channeladminlogeventactionchangeabout" name="channeladminlogeventactionchangeabout"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionChangeAbout">channelAdminLogEventActionChangeAbout</a></h4>
<p>The description was changed</p>
<h4><a class="anchor" href="#channeladminlogeventactionchangelinkedchat" id="channeladminlogeventactionchangelinkedchat" name="channeladminlogeventactionchangelinkedchat"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionChangeLinkedChat">channelAdminLogEventActionChangeLinkedChat</a></h4>
<p>The linked chat was changed</p>
<h4><a class="anchor" href="#channeladminlogeventactionchangelocation" id="channeladminlogeventactionchangelocation" name="channeladminlogeventactionchangelocation"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionChangeLocation">channelAdminLogEventActionChangeLocation</a></h4>
<p>The geogroup location was changed</p>
<h4><a class="anchor" href="#channeladminlogeventactionchangephoto" id="channeladminlogeventactionchangephoto" name="channeladminlogeventactionchangephoto"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionChangePhoto">channelAdminLogEventActionChangePhoto</a></h4>
<p>The channel/supergroup's picture was changed</p>
<h4><a class="anchor" href="#channeladminlogeventactionchangestickerset" id="channeladminlogeventactionchangestickerset" name="channeladminlogeventactionchangestickerset"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionChangeStickerSet">channelAdminLogEventActionChangeStickerSet</a></h4>
<p>The supergroup's stickerset was changed</p>
<h4><a class="anchor" href="#channeladminlogeventactionchangetitle" id="channeladminlogeventactionchangetitle" name="channeladminlogeventactionchangetitle"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionChangeTitle">channelAdminLogEventActionChangeTitle</a></h4>
<p>Channel/supergroup title was changed</p>
<h4><a class="anchor" href="#channeladminlogeventactionchangeusername" id="channeladminlogeventactionchangeusername" name="channeladminlogeventactionchangeusername"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionChangeUsername">channelAdminLogEventActionChangeUsername</a></h4>
<p>Channel/supergroup username was changed</p>
<h4><a class="anchor" href="#channeladminlogeventactiontoggleinvites" id="channeladminlogeventactiontoggleinvites" name="channeladminlogeventactiontoggleinvites"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionToggleInvites">channelAdminLogEventActionToggleInvites</a></h4>
<p>Invites were enabled/disabled</p>
<h4><a class="anchor" href="#channeladminlogeventactiontoggleprehistoryhidden" id="channeladminlogeventactiontoggleprehistoryhidden" name="channeladminlogeventactiontoggleprehistoryhidden"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionTogglePreHistoryHidden">channelAdminLogEventActionTogglePreHistoryHidden</a></h4>
<p>The hidden prehistory setting was <a href="/method/channels.togglePreHistoryHidden">changed</a></p>
<h4><a class="anchor" href="#channeladminlogeventactiontogglesignatures" id="channeladminlogeventactiontogglesignatures" name="channeladminlogeventactiontogglesignatures"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionToggleSignatures">channelAdminLogEventActionToggleSignatures</a></h4>
<p>Channel signatures were enabled/disabled</p>
<h4><a class="anchor" href="#channeladminlogeventactiondefaultbannedrights" id="channeladminlogeventactiondefaultbannedrights" name="channeladminlogeventactiondefaultbannedrights"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionDefaultBannedRights">channelAdminLogEventActionDefaultBannedRights</a></h4>
<p>The default banned rights were modified</p>
<h4><a class="anchor" href="#channeladminlogeventactionupdatepinned" id="channeladminlogeventactionupdatepinned" name="channeladminlogeventactionupdatepinned"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionUpdatePinned">channelAdminLogEventActionUpdatePinned</a></h4>
<p>A message was pinned</p>
<h4><a class="anchor" href="#channeladminlogeventactioneditmessage" id="channeladminlogeventactioneditmessage" name="channeladminlogeventactioneditmessage"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionEditMessage">channelAdminLogEventActionEditMessage</a></h4>
<p>A message was edited</p>
<h4><a class="anchor" href="#channeladminlogeventactiondeletemessage" id="channeladminlogeventactiondeletemessage" name="channeladminlogeventactiondeletemessage"><i class="anchor-icon"></i></a><a href="/constructor/channelAdminLogEventActionDeleteMessage">channelAdminLogEventActionDeleteMessage</a></h4>
<p>A message was deleted</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>photoStrippedSize</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="A low-resolution compressed JPG payload">
<meta property="og:title" content="photoStrippedSize">
<meta property="og:image" content="">
<meta property="og:description" content="A low-resolution compressed JPG payload">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class="active"><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="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/photoStrippedSize" >photoStrippedSize</a></li></ul></div>
<h1 id="dev_page_title">photoStrippedSize</h1>
<div id="dev_page_content"><p>A low-resolution compressed JPG payload</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/photoStrippedSize" class="current_page_link" >photoStrippedSize</a>#e0b0bc2e type:<a href="/type/string" >string</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/PhotoSize" >PhotoSize</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>type</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td>Thumbnail type</td>
</tr>
<tr>
<td><strong>bytes</strong></td>
<td style="text-align: center;"><a href="/type/bytes">bytes</a></td>
<td>Thumbnail data, see <a href="/api/files#stripped-thumbnails">here for more info on decompression »</a></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/PhotoSize">PhotoSize</a></p>
<h3><a class="anchor" href="#thumbnail-type-and-its-sizes" id="thumbnail-type-and-its-sizes" name="thumbnail-type-and-its-sizes"><i class="anchor-icon"></i></a>Thumbnail type and its sizes</h3>
<p>See the <a href="/constructor/photoSize#thumbnail-type-and-its-sizes">photoSize</a> constructor.</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="#uploading-and-downloading-files" id="uploading-and-downloading-files" name="uploading-and-downloading-files"><i class="anchor-icon"></i></a><a href="/api/files">Uploading and Downloading Files</a></h4>
<p>How to transfer large data batches correctly.</p>
<h4><a class="anchor" href="#photosize" id="photosize" name="photosize"><i class="anchor-icon"></i></a><a href="/constructor/photoSize">photoSize</a></h4>
<p>Image description.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,161 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>updateChannelTooLong</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="There are new updates in the specified channel, the client must fetch them. If the difference is too long or if the channel isn&#39;t currently in the states, start fetching from the specified pts.">
<meta property="og:title" content="updateChannelTooLong">
<meta property="og:image" content="">
<meta property="og:description" content="There are new updates in the specified channel, the client must fetch them. If the difference is too long or if the channel isn&#39;t currently in the states, start fetching from the specified pts.">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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=""><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class="active"><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="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateChannelTooLong" >updateChannelTooLong</a></li></ul></div>
<h1 id="dev_page_title">updateChannelTooLong</h1>
<div id="dev_page_content"><p>There are new updates in the specified channel, the client must fetch them.<br>
If the difference is too long or if the channel isn't currently in the states, start fetching from the specified pts.</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/updateChannelTooLong" class="current_page_link" >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>;</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>channel_id</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td>The channel</td>
</tr>
<tr>
<td><strong>pts</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>The <a href="/api/updates">PTS</a>.</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/Update">Update</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="#working-with-updates" id="working-with-updates" name="working-with-updates"><i class="anchor-icon"></i></a><a href="/api/updates">Working with Updates</a></h4>
<p>How to subscribe to updates and handle them properly.</p></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,176 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>langpack.getDifference</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Get new strings in languagepack">
<meta property="og:title" content="langpack.getDifference">
<meta property="og:image" content="">
<meta property="og:description" content="Get new strings in languagepack">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" 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><a href="/method/langpack.getDifference" >langpack.getDifference</a></li></ul></div>
<h1 id="dev_page_title">langpack.getDifference</h1>
<div id="dev_page_content"><p>Get new strings in languagepack</p>
<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 &ndash; Base layer</a></li><li><a href="?layer=2">2 &ndash; New userpic notifications</a></li><li><a href="?layer=3">3 &ndash; Send message can trigger link change</a></li><li><a href="?layer=4">4 &ndash; Check-in chats</a></li><li><a href="?layer=5">5 &ndash; Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 &ndash; Foursquare integration</a></li><li><a href="?layer=7">7 &ndash; Added wallPaperSolid</a></li><li><a href="?layer=8">8 &ndash; Added end-to-end encryption</a></li><li><a href="?layer=9">9 &ndash; Improved big files upload perfomance</a></li><li><a href="?layer=10">10 &ndash; Improved chat participants updates</a></li><li><a href="?layer=11">11 &ndash; Improved secret chats</a></li><li><a href="?layer=12">12 &ndash; New dynamic support</a></li><li><a href="?layer=13">13 &ndash; Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 &ndash; Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 &ndash; Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 &ndash; Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 &ndash; Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 &ndash; Added usernames</a></li><li><a href="?layer=23">23 &ndash; Stickers for secret chats</a></li><li><a href="?layer=105">105 &ndash; Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 &ndash; Login with QR code</a></li><li><a href="?layer=109">109 &ndash; Polls v2</a></li><li><a href="?layer=110">110 &ndash; People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 &ndash; Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 &ndash; Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 &ndash; PSA</a></li><li><a href="?layer=114">114 &ndash; Video thumbs for GIFs</a></li><li><a href="?layer=115">115 &ndash; Peek Channel Invite</a></li><li><a href="?layer=116">116 &ndash; Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 &ndash; WebRTC Phone Calls</a></li><li><a href="?layer=118">118 &ndash; Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 &ndash; Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 &ndash; Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 &ndash; SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 &ndash; Voice Chats</a></li><li><a href="?layer=123">123 &ndash; Voice Chat improvements</a></li><li><a href="?layer=124">124 &ndash; Expiring Invite links</a></li><li><a href="?layer=125">125 &ndash; Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 &ndash; Ban channels in channels</a></li><li><a href="?layer=127">127 &ndash; Payments in channels</a></li><li><a href="?layer=128">128 &ndash; Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 &ndash; Video Chats</a></li><li><a href="?layer=130">130 &ndash; Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 &ndash; Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 &ndash; Chat themes</a></li><li><a href="?layer=133"><strong>133 &ndash; 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/langPackDifference" >langPackDifference</a>#f385c1f6 lang_code:<a href="/type/string" >string</a> from_version:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> strings:<a href="/type/Vector%20t" >Vector</a>&lt;<a href="/type/LangPackString" >LangPackString</a>&gt; = <a href="/type/LangPackDifference" >LangPackDifference</a>;
---functions---
<a href="/method/langpack.getDifference" class="current_page_link" >langpack.getDifference</a>#cd984aa5 lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> from_version:<a href="/type/int" >int</a> = <a href="/type/LangPackDifference" >LangPackDifference</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>lang_pack</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td>Language pack</td>
</tr>
<tr>
<td><strong>lang_code</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td>Language code</td>
</tr>
<tr>
<td><strong>from_version</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td>Previous localization pack version</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/LangPackDifference">LangPackDifference</a></p>
<h3><a class="anchor" href="#possible-errors" id="possible-errors" name="possible-errors"><i class="anchor-icon"></i></a>Possible errors</h3>
<table class="table">
<thead>
<tr>
<th>Code</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>400</td>
<td>LANG_PACK_INVALID</td>
<td>The provided language pack is invalid.</td>
</tr>
</tbody>
</table></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/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</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/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</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?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,204 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Telegram Ads</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="MobileOptimized" content="176" />
<meta name="HandheldFriendly" content="True" /><meta property="og:title" content="Telegram Ad Platform">
<meta property="og:description" content="The Telegram Ad Platform is a privacy-conscious tool to create sponsored messages in public one-to-many channels with 1000+ subscribers.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<script>document.cookie="stel_dt="+encodeURIComponent((new Date).getTimezoneOffset())+";path=/;max-age=31536000;samesite=None;secure"</script>
<link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700" rel="stylesheet" type="text/css">
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/bootstrap-extra.css?2" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet">
<link href="/css/widget-frame.css?47" rel="stylesheet">
<link href="/css/promote.css?46" rel="stylesheet">
<link href="/css/jquery-ui.min.css" rel="stylesheet">
<link href="/css/tchart.min.css?10" rel="stylesheet">
</head>
<body class="emoji_image no-transition">
<div id="aj_progress" class="progress-bar"></div>
<div id="aj_content"><div class="pr-container pr-main">
<section class="pr-content">
<div class="pr-main-content">
<img class="pr-main-img" src="/img/ads_intro.svg" width="134" height="212">
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Telegram Ad Platform</h1>
<div id="dev_page_content"><p>Telegram provides a <strong>free and secure</strong> messaging service for more than <strong>500 million monthly active users</strong> around the world. In addition to sending private messages and chatting in private groups, Telegram users can subscribe to <a href="https://telegram.org/tour/channels"><strong>public one-to-many channels</strong></a>.</p>
<p>Every month, Telegram users generate over <strong>500 billion views</strong> in one-to-many channels.</p>
<div class="pr-main-button-wrap">
<a href="/auth" class="btn pr-btn login-link">Log In</a>
</div>
<p><div class="pr-main-additional"></p>
<h3>Advertising on Telegram</h3>
<p>Sponsored messages on Telegram are displayed in <strong>large public one-to-many channels</strong> with <strong>1000+</strong> subscribers and are limited to <strong>160 characters</strong>. Sponsored Messages are based solely on the <strong>topic</strong> of the public channels in which they are shown.</p>
<p>This means that <strong>no user data</strong> is mined or analyzed to display ads, and every user viewing a particular channel on Telegram sees <strong>the same sponsored messages</strong>.</p>
<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 playsinline loop controls muted poster="/file/464001900/2/btuJiD_Plu8.202414/7e06161d5568f0720f" style="max-width: 400px;" title="Sponsored Messages on Telegram" alt="Sponsored Messages on Telegram">
<source src="/file/464001301/3/Re8p47eQMuY.4017265.mp4/4ee8f9f931d15f312a" type="video/mp4">
</video>
</div>
<h3>Context-based advertising</h3>
<p>Advertisers can choose the <strong>language</strong> and approximate <strong>topics</strong> of channels where their ads will be displayed. It is also possible to choose <strong>specific channels</strong> where a certain ad will be shown or add specific channels where it will <em>not</em> be displayed.</p>
<p>This allows advertisers to serve <strong>precise and efficient</strong> ads while <strong>preserving user privacy</strong>.</p>
<h3>Privacy-conscious ads</h3>
<p>Unlike other apps, Telegram <strong>doesn&#39;t track</strong> whether users tap on a sponsored message and doesn&#39;t profile them based on their activity. We also <strong>prevent external links</strong> in sponsored messages to ensure that third parties cant spy on our users. We believe that everyone has the right to privacy, and technological platforms should respect that.</p>
<h3>Revenue sharing with channel owners</h3>
<p>Sponsored Messages are currently in test mode. Once they are fully launched and allow Telegram to cover its basic costs, we will start sharing ad revenue with the owners of public channels in which sponsored messages are displayed.</p>
<h3>Getting started</h3>
<p>Telegram welcomes all responsible advertisers. Anyone can study Telegram&#39;s <a href="https://promote.telegram.org/guidelines">Ad Policies and Guidelines</a>, <strong>create an account</strong> on the Ad Platform and <strong>try out the interface</strong>. For a detailed overview of the platform, see <a href="https://promote.telegram.org/getting-started">this guide</a>.</p>
<p></div></p>
<div class="pr-main-button-wrap">
<a href="/auth" class="btn pr-btn login-link">Log In</a>
</div>
</div>
</div>
</div>
</section>
</div><div class="popup-container login-popup-container hide" id="login-popup-container">
<div class="popup">
<div class="popup-body">
<section>
<h2>Log In</h2>
<p>Log in here to manage your ads. Please enter your <b>phone number</b> in the <a target="_blank" rel="noopener" href="https://telegram.org/faq#login-and-sms">international format</a> and we will send a confirmation message to your account via Telegram.</p>
<form id="send-form" class="login-form">
<div class="form-group">
<input type="tel" class="form-control pr-form-control input-lg" id="phone-number" placeholder="+12223334455" autocomplete="off"/>
</div>
<div class="popup-buttons">
<a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><button type="submit" class="btn btn-link btn-lg">Next</button>
</div>
</form>
<div id="login-form" class="hide">
<div class="form-group">
<span class="form-control pr-form-control input input-lg input-disabled"><strong id="phone-number-field"></strong> (<a class="login-back" href="/auth">Incorrect?</a>)</span>
<p class="help-block dots-animated">We&#39;ve just sent you a message.<br/>Please confirm access via Telegram</p>
</div>
<div class="popup-buttons">
<a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><a class="btn btn-link btn-lg login-back">Back</a>
</div>
</div>
</section>
</div>
</div>
</div></div>
<script src="/js/jquery.min.js?1"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/main-aj.js?54"></script>
<script src="/js/widget-frame.js?51"></script>
<script src="/js/promote.js?43"></script>
<script src="/js/jquery-ui.min.js?1"></script>
<script src="/js/jquery-ex.js?6"></script>
<script src="/js/tchart.min.js?16"></script>
<script>ajInit({"version":494,"apiUrl":"\/api?hash=telegram-crawler","unauth":true});</script>
<script id="aj_script">l.add({"WEB_AB_WARNING_HEADER":"Turn off ad blocker","WEB_POPUP_CLOSE_BTN":"Close","WEB_AB_WARNING_TEXT":"You appear to be using an ad blocker that may prevent pages on the Telegram Ad Platform from working as expected.<br\/><br\/>Please turn off your ad blocker or add <a href=\"http:\/\/promote.telegram.org\/\">promote.telegram.org<\/a> as an exception to manage your promoted messages."});
window.enableInlineVideo&&$('video').each(function(){enableInlineVideo(this)});
Ads.init();
Aj.onLoad(function(state) {
function requestConfirmation(event) {
event && event.preventDefault();
var phone = $('#phone-number').val();
$.ajax({
type: 'POST',
url: '/auth/request',
data: {
phone: phone
},
success: function(result) {
$('#phone-number-field').text(phone);
$('#send-form').addClass('hide');
$('#login-form').removeClass('hide');
checkAuth(result.temp_session);
},
error: function(xhr) {
showAlert(xhr.responseText || 'Server error');
},
dataType: 'json'
});
return false;
}
function cancelConfirmation(event) {
event && event.preventDefault();
$('#phone-number-field').text('');
$('#send-form').removeClass('hide');
$('#login-form').addClass('hide');
$('#phone-number').focus();
clearTimeout(window.authTimeout);
return false;
}
function checkAuth(temp_session) {
clearTimeout(window.authTimeout);
window.authTimeout = setTimeout(function doCheckAuth() {
$.ajax({
type: 'POST',
url: '/auth/login',
data: {
temp_session: temp_session
},
success: function(result) {
if (result) {
location.reload();
} else {
checkAuth(temp_session);
}
},
error: function (xhr) {
showAlert(xhr.responseText || 'Server error');
},
dataType: 'json'
});
}, 700);
}
$('#login-popup-container').on('popup:open', function() {
$('#phone-number').focus();
});
$('#login-popup-container').on('popup:close', function() {
cancelConfirmation();
if (location.pathname == '/auth') {
window.history && history.replaceState(null, null, '/');
}
});
$('#login-popup-container #send-form').on('submit', requestConfirmation);
$('#login-popup-container .login-cancel-btn').on('click', function(e) {
e.preventDefault();
closePopup('#login-popup-container');
});
$('#login-popup-container .login-back').on('click', cancelConfirmation);
$('.login-link').on('click', function(e) {
e.stopImmediatePropagation();
e.preventDefault();
openPopup('#login-popup-container');
});
});
Aj.onUnload(function(state) {
$('#login-popup-container').off('popup:open');
$('#login-popup-container').off('popup:close');
$('#login-popup-container #send-form').off('submit');
$('#login-popup-container .login-cancel-btn').off('click');
$('#login-popup-container .login-back').off('click');
$('.login-link').off('click');
});
</script>
<script>Aj.pageLoaded();</script>
</body>
</html>

View file

@ -0,0 +1,312 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Telegram Ads</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="MobileOptimized" content="176" />
<meta name="HandheldFriendly" content="True" /><meta property="og:title" content="Ad Policies and Guidelines">
<meta property="og:description" content="These Ad Policies and Guidelines apply to all ads displayed on the Telegram Ad Platform and describe what ad content is…">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<script>document.cookie="stel_dt="+encodeURIComponent((new Date).getTimezoneOffset())+";path=/;max-age=31536000;samesite=None;secure"</script>
<link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700" rel="stylesheet" type="text/css">
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/bootstrap-extra.css?2" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet">
<link href="/css/widget-frame.css?47" rel="stylesheet">
<link href="/css/promote.css?46" rel="stylesheet">
<link href="/css/jquery-ui.min.css" rel="stylesheet">
<link href="/css/tchart.min.css?10" rel="stylesheet">
</head>
<body class="emoji_image no-transition">
<div id="aj_progress" class="progress-bar"></div>
<div id="aj_content"><div class="pr-container pr-docs-container">
<div class="pr-header">
<div class="pr-header-auth">
<div class="pr-header-auth-item"><a class="header-auth-link login-link" href="/auth">Log In</a></div>
</div>
<ol class="pr-breadcrumb"><li class="pr-logo compact"><a href="/"><i class="pr-icon"></i><span class="pr-logo-title">Telegram Ads</span></a></li><li class="pr-breadcrumb-item">Ad Policies and Guidelines</li></ol>
</div>
<section class="pr-content"><div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Ad Policies and Guidelines</h1>
<div id="dev_page_content"><p>These Ad Policies and Guidelines apply to all ads displayed on the Telegram Ad Platform and describe what ad content is allowed on Telegram.</p>
<p>Advertisers are responsible for their ads and for complying with these <strong>Ad Policies and Guidelines</strong>, the <a href="https://promote.telegram.org/tos">Telegram Ad Platform Terms of Service</a>, the <a href="https://telegram.org/tos">Telegram Terms of Service</a> and <a href="https://telegram.org/privacy">Privacy Policy</a>.</p>
<hr>
<p><a href="#1-ad-format">1. Ad format</a><br><a href="#2-editorial-requirements">2. Editorial requirements</a><br><a href="#3-link-format">3. Link format</a><br><a href="#4-destination">4. Destination</a><br><a href="#5-prohibited-content">5. Prohibited content</a><br> <a href="#5-1-graphic-shocking-or-sexual-content">5.1. Graphic, shocking, or sexual content</a><br> <a href="#5-2-hate-violence-harassment">5.2. Hate, violence, harassment</a><br> <a href="#5-3-third-party-rights">5.3. Third party rights</a><br> <a href="#5-4-deceptive-misleading-or-predatory-advertising">5.4. Deceptive, misleading, or predatory advertising</a><br> <a href="#5-5-election-or-political-ads">5.5. Election or political ads</a><br> <a href="#5-6-gambling">5.6. Gambling</a><br> <a href="#5-7-deceptive-or-harmful-financial-products-or-services">5.7. Deceptive or harmful financial products or services</a><br> <a href="#5-8-medical-services-medications-supplements">5.8. Medical services, medications, supplements</a><br> <a href="#5-9-drugs-alcohol-tobacco-fast-food">5.9. Drugs, alcohol, tobacco, fast food</a><br> <a href="#5-10-weapons-firearms-explosives-ammunition">5.10. Weapons, firearms, explosives, ammunition</a><br> <a href="#5-11-spam-software-malware-hacking">5.11. Spam software, malware, hacking</a><br> <a href="#5-12-products-of-questionable-legality">5.12. Products of questionable legality</a></p>
<hr>
<h3><a class="anchor" name="1-ad-format" href="#1-ad-format"><i class="anchor-icon"></i></a>1. Ad format</h3>
<p>Ads can only promote products inside Telegram, such as <strong>channels or bots</strong>. Each ad consists of an ad text and a button that opens a link to the advertised product. The maximum length of the ad text is <strong>160 characters</strong> including spaces.</p>
<h3><a class="anchor" name="2-editorial-requirements" href="#2-editorial-requirements"><i class="anchor-icon"></i></a>2. Editorial requirements</h3>
<p>Standard requirements of style, clarity, spelling and punctuation apply to all ads. Numbers, marks and symbols must be used properly. The following is not allowed:</p>
<ul>
<li>Profanity or vulgarity, <em>including slur acronyms and spelling variations, in any language, and masked vulgarity (e.g., f**k)</em></li>
<li>Unrecognizable or unclear meaning, <em>such as overbroad or vague descriptions, repetition of words and phrases</em></li>
<li>Excessive or gimmicky use of CaPiTaLiZaTiOn, <strong>highlighting</strong>, s p a c i n g and s,y,m,b,o,l,s, <em>including Unicode art, ASCII art and box-drawing</em></li>
<li>Intrusive, excessive or gimmicky use of <strong>emoji</strong> and other emoticons</li>
<li>Line breaks, bullet points, numbering lists</li>
</ul>
<h3><a class="anchor" name="3-link-format" href="#3-link-format"><i class="anchor-icon"></i></a>3. Link format</h3>
<p>In addition to the main ad link submitted in the URL field, ads may also include one optional link in the ad text itself, using the format <code>t.me/link</code> or <code>@link</code>. The ad link and the link in the ad text must both lead to the same channel or bot on Telegram.</p>
<p>If the destination is a Telegram bot, links may include <a href="https://core.telegram.org/bots#deep-linking">start parameters for the bot</a>.</p>
<p>Links must be used properly. Particularly, the following is not allowed:</p>
<ul>
<li>Using more than one link in the ad text</li>
<li>Using any external links, <em>such as URL shorteners or links to any other websites, even if users are ultimately redirected to the channel or bot</em></li>
</ul>
<h3><a class="anchor" name="4-destination" href="#4-destination"><i class="anchor-icon"></i></a>4. Destination</h3>
<p>The destination channel or bot on Telegram must be technically and visually complete and functional, and its content should be consistent with the ad. Destination channels must be public. Particularly, the following is not allowed:</p>
<ul>
<li>Destinations solely designed for displaying ads</li>
<li>Unrelated destinations, <em>such as when the destination link doesnt correspond with the ad text</em></li>
<li>Invalid or unsupported destinations, <em>such as external links, etc.</em></li>
</ul>
<h3><a class="anchor" name="5-prohibited-content" href="#5-prohibited-content"><i class="anchor-icon"></i></a>5. Prohibited content</h3>
<p>These Ad Policies and Guidelines prohibit some types of content to ensure a safe and pleasant experience for Telegram users. The following requirements apply to ads on the Telegram Ad Platform and to the products they promote, whether implied or explicit. <strong>All examples given are non-exhaustive.</strong></p>
<h4><a class="anchor" name="5-1-graphic-shocking-or-sexual-content" href="#5-1-graphic-shocking-or-sexual-content"><i class="anchor-icon"></i></a>5.1. Graphic, shocking, or sexual content</h4>
<p>Ads must not promote graphic, shocking, or sexual content, products and services.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Gruesome, disgusting, or shocking imagery, <em>including gore, bodily fluids, accident photos, graphic details of torture</em></li>
<li>Nudity, sexually explicit and sexually suggestive content, <em>including excessively exposed intimate body parts, sexual merchandize and entertainment, dating services</em></li>
</ul>
<h4><a class="anchor" name="5-2-hate-violence-harassment" href="#5-2-hate-violence-harassment"><i class="anchor-icon"></i></a>5.2. Hate, violence, harassment</h4>
<p>Ads must not promote hatred, intolerance, harassment, discrimination, violence, or abuse.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Violence and its promotion, <em>including supporting organizations or movements with ties to violence</em></li>
<li>Promoting harassment or bullying, <em>including dehumanizing speech, statements of inferiority, defamatory content, disclosing contact details or personal data</em></li>
<li>Discrimination towards individuals, groups, or organizations, <em>including hateful messages on the basis of race, religion, color, national or ethnic origin, age, beliefs, sexual orientation or practices, physical or mental abilities</em></li>
</ul>
<h3><a class="anchor" name="5-3-third-party-rights" href="#5-3-third-party-rights"><i class="anchor-icon"></i></a>5.3. Third party rights</h3>
<p>Ads and promoted content must not violate third party rights, including trademark, copyright, privacy or other personal or proprietary rights.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Unauthorized distribution of copyrighted content, <em>including pirated software and content such as movies, music, or books</em></li>
<li>Plagiarism, <em>including impersonating public figures or brands, misusing brand logos or assets, e.g., the Telegram logo</em></li>
</ul>
<h4><a class="anchor" name="5-4-deceptive-misleading-or-predatory-advertising" href="#5-4-deceptive-misleading-or-predatory-advertising"><i class="anchor-icon"></i></a>5.4. Deceptive, misleading, or predatory advertising</h4>
<p>Ads must not contain information that is false, misleading or simply does not match the product. This includes false statements, claims or offers, together with predatory advertising practices. </p>
<p><strong>Examples:</strong></p>
<ul>
<li>Clickbait or similar unrealistic statements, <em>including you-just-won-X claims, shock or scare tactics</em></li>
<li>Exaggerated comparisons and absolute claims, <em>including unsupported use of comparatives and superlatives: “highest incomes”, “best company”, and comparing your brand to a different one</em></li>
<li>Asserting personal attributes, <em>including by using words your, other and derivatives, such as “We know that your family prefers Telegram”</em></li>
<li>Capitalizing on tragedies, health crises or acts of mass violence</li>
</ul>
<h4><a class="anchor" name="5-5-election-or-political-ads" href="#5-5-election-or-political-ads"><i class="anchor-icon"></i></a>5.5. Election or political ads</h4>
<p>Ads must not promote political campaigns, elections, political parties, movements, or candidates.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Advocating for or against a politician, political party, or political movement</li>
<li>Exploiting political controversy, <em>including encouraging political unrest, disrupting public order</em></li>
</ul>
<h4><a class="anchor" name="5-6-gambling" href="#5-6-gambling"><i class="anchor-icon"></i></a>5.6. Gambling</h4>
<p>Ads must not promote online or offline gambling, gaming, or casino-based activities involving real money, prizes, or goods of any value.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Games of chance or casinos, <em>including sports betting, lotteries, bingo, fantasy sports</em></li>
<li>Tips, odds, forecasts, <em>including sports picks, odds calculators</em></li>
</ul>
<h4><a class="anchor" name="5-7-deceptive-or-harmful-financial-products-or-services" href="#5-7-deceptive-or-harmful-financial-products-or-services"><i class="anchor-icon"></i></a>5.7. Deceptive or harmful financial products or services</h4>
<p>Ads must not promote content, products, or services associated with deceptive or harmful financial practices.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Payday loans, cash loans, predatory lending, <em>including short-term loans</em></li>
<li>Get-rich-quick offers, pyramid schemes, multilevel marketing, <em>including offers of investment with guaranteed return, claims on providing insider tips on investments</em></li>
</ul>
<h4><a class="anchor" name="5-8-medical-services-medications-supplements" href="#5-8-medical-services-medications-supplements"><i class="anchor-icon"></i></a>5.8. Medical services, medications, supplements</h4>
<p>Ads must not promote content, products, or services related to health and wellness.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Nutrition products, <em>including weight loss products, herbal drugs, dietary supplements, vitamins, pregnancy, and fertility-related products</em></li>
<li>Medical devices, services, and treatments, <em>including medical masks, plastic surgeries, pregnancy termination, therapies</em></li>
<li>Products with claims of healthful, curative or stimulating effects</li>
<li>Prescriptions for medications</li>
</ul>
<h4><a class="anchor" name="5-9-drugs-alcohol-tobacco-fast-food" href="#5-9-drugs-alcohol-tobacco-fast-food"><i class="anchor-icon"></i></a>5.9. Drugs, alcohol, tobacco, fast food</h4>
<p>Ads must not promote psychoactive substances, alcoholic beverages, tobacco products or fast food.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Alcoholic beverages, <em>including home brewing kits, non-alcoholic beer</em></li>
<li>Tobacco, <em>including e-cigarettes, rolling papers, chewing tobacco</em></li>
<li>Recreational drugs, <em>including equipment and paraphernalia, e.g., pipes, bongs</em></li>
<li>Instructions on producing drugs</li>
<li>Fast food, <em>including fast-food chains, etc.</em></li>
</ul>
<h4><a class="anchor" name="5-10-weapons-firearms-explosives-ammunition" href="#5-10-weapons-firearms-explosives-ammunition"><i class="anchor-icon"></i></a>5.10. Weapons, firearms, explosives, ammunition</h4>
<p>Ads must not promote the sale of weapons, explosives or ammunition, or any related content.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Firearms, <em>including sporting, recreational guns, or any antique functioning guns that can cause harm</em></li>
<li>Ammunition or accessories, <em>including any firearm parts or components, even unfinished, such as magazines, scopes, silencers</em></li>
<li>Knives and other melee weapons, <em>including pepper spray, daggers, axes</em></li>
<li>Explosives, <em>including bombs, grenades, fireworks, or firecrackers</em></li>
<li>Instructions on assembling or acquiring any product covered in this section</li>
</ul>
<h4><a class="anchor" name="5-11-spam-software-malware-hacking" href="#5-11-spam-software-malware-hacking"><i class="anchor-icon"></i></a>5.11. Spam software, malware, hacking</h4>
<p>Ads must not promote content, products, or services that facilitate unsolicited communications, are intended to harm or gain unauthorized access to a user&#39;s device, or cause deceptive or unexpected consequences.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Social media growth manipulation, <em>including encouraging growth of social media profiles</em></li>
<li>Incentivized or automated clicks, <em>including requests to perform actions on websites or services, complete online surveys</em></li>
<li>Services for generating automated traffic, <em>including services for inflating metrics/followers, sending automated content to social media platforms or other services</em></li>
<li>Phishing, <em>including promotion of services that trick a user into providing personal or other information</em></li>
<li>Software causing deceptive or unexpected consequences, <em>including modified apps containing malware, viruses, or any other malicious code</em></li>
</ul>
<h4><a class="anchor" name="5-12-products-of-questionable-legality" href="#5-12-products-of-questionable-legality"><i class="anchor-icon"></i></a>5.12. Products of questionable legality</h4>
<p>Ads must not promote content, products, or services of questionable legality.</p>
<p><strong>Examples:</strong></p>
<ul>
<li>Forgery, <em>including fake IDs, passports, visas, official documents</em></li>
<li>Human-trafficking, <em>including marriage brokering</em></li>
<li>Stolen or leaked data, <em>including carding, passwords to subscription services</em></li>
<li>Sale of body parts, <em>including bodily fluids</em></li>
<li>Counterfeit products, <em>including fake or bootleg goods, inauthentic artwork or digital goods, counterfeit currency</em></li>
</ul>
<hr>
<p><strong>All examples on this page are non-exhaustive.</strong></p>
</div>
</div></section>
</div><div class="popup-container login-popup-container hide" id="login-popup-container">
<div class="popup">
<div class="popup-body">
<section>
<h2>Log In</h2>
<p>Log in here to manage your ads. Please enter your <b>phone number</b> in the <a target="_blank" rel="noopener" href="https://telegram.org/faq#login-and-sms">international format</a> and we will send a confirmation message to your account via Telegram.</p>
<form id="send-form" class="login-form">
<div class="form-group">
<input type="tel" class="form-control pr-form-control input-lg" id="phone-number" placeholder="+12223334455" autocomplete="off"/>
</div>
<div class="popup-buttons">
<a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><button type="submit" class="btn btn-link btn-lg">Next</button>
</div>
</form>
<div id="login-form" class="hide">
<div class="form-group">
<span class="form-control pr-form-control input input-lg input-disabled"><strong id="phone-number-field"></strong> (<a class="login-back" href="/auth">Incorrect?</a>)</span>
<p class="help-block dots-animated">We&#39;ve just sent you a message.<br/>Please confirm access via Telegram</p>
</div>
<div class="popup-buttons">
<a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><a class="btn btn-link btn-lg login-back">Back</a>
</div>
</div>
</section>
</div>
</div>
</div></div>
<script src="/js/jquery.min.js?1"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/main-aj.js?54"></script>
<script src="/js/widget-frame.js?51"></script>
<script src="/js/promote.js?43"></script>
<script src="/js/jquery-ui.min.js?1"></script>
<script src="/js/jquery-ex.js?6"></script>
<script src="/js/tchart.min.js?16"></script>
<script>ajInit({"version":494,"apiUrl":"\/api?hash=telegram-crawler","unauth":true});</script>
<script id="aj_script">l.add({"WEB_AB_WARNING_HEADER":"Turn off ad blocker","WEB_POPUP_CLOSE_BTN":"Close","WEB_AB_WARNING_TEXT":"You appear to be using an ad blocker that may prevent pages on the Telegram Ad Platform from working as expected.<br\/><br\/>Please turn off your ad blocker or add <a href=\"http:\/\/promote.telegram.org\/\">promote.telegram.org<\/a> as an exception to manage your promoted messages."});
window.enableInlineVideo&&$('video').each(function(){enableInlineVideo(this)});
Ads.init();
Aj.onLoad(function(state) {
function requestConfirmation(event) {
event && event.preventDefault();
var phone = $('#phone-number').val();
$.ajax({
type: 'POST',
url: '/auth/request',
data: {
phone: phone
},
success: function(result) {
$('#phone-number-field').text(phone);
$('#send-form').addClass('hide');
$('#login-form').removeClass('hide');
checkAuth(result.temp_session);
},
error: function(xhr) {
showAlert(xhr.responseText || 'Server error');
},
dataType: 'json'
});
return false;
}
function cancelConfirmation(event) {
event && event.preventDefault();
$('#phone-number-field').text('');
$('#send-form').removeClass('hide');
$('#login-form').addClass('hide');
$('#phone-number').focus();
clearTimeout(window.authTimeout);
return false;
}
function checkAuth(temp_session) {
clearTimeout(window.authTimeout);
window.authTimeout = setTimeout(function doCheckAuth() {
$.ajax({
type: 'POST',
url: '/auth/login',
data: {
temp_session: temp_session
},
success: function(result) {
if (result) {
location.reload();
} else {
checkAuth(temp_session);
}
},
error: function (xhr) {
showAlert(xhr.responseText || 'Server error');
},
dataType: 'json'
});
}, 700);
}
$('#login-popup-container').on('popup:open', function() {
$('#phone-number').focus();
});
$('#login-popup-container').on('popup:close', function() {
cancelConfirmation();
if (location.pathname == '/auth') {
window.history && history.replaceState(null, null, '/');
}
});
$('#login-popup-container #send-form').on('submit', requestConfirmation);
$('#login-popup-container .login-cancel-btn').on('click', function(e) {
e.preventDefault();
closePopup('#login-popup-container');
});
$('#login-popup-container .login-back').on('click', cancelConfirmation);
$('.login-link').on('click', function(e) {
e.stopImmediatePropagation();
e.preventDefault();
openPopup('#login-popup-container');
});
});
Aj.onUnload(function(state) {
$('#login-popup-container').off('popup:open');
$('#login-popup-container').off('popup:close');
$('#login-popup-container #send-form').off('submit');
$('#login-popup-container .login-cancel-btn').off('click');
$('#login-popup-container .login-back').off('click');
$('.login-link').off('click');
});
</script>
<script>Aj.pageLoaded();</script>
</body>
</html>

View file

@ -0,0 +1,246 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Channels 2.0 and More</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Channels 2.0 and More">
<meta property="og:image" content="https://telegram.org/file/811140618/1/1_IEI-5KBFA/3b610177207cc86efa">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Telegram Channels 2.0: Links to channel posts, silent messages, admin names, edit messages and more.">
<meta property="article:published_time" content="2016-02-24T02:43:57+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140618/1/1_IEI-5KBFA/3b610177207cc86efa" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/channels-2-0" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Channels 2.0 and More</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/811140618/1/1_IEI-5KBFA/3b610177207cc86efa" class="blog_side_image"/>
</div>
<p>Telegram channels are becoming a worldwide trend. Each day they get more than <strong>400,000,000</strong> views. Today we are introducing several features that will make channels and bots even more powerful tools for connecting with your audience.</p>
<h3><a class="anchor" name="links-to-posts" href="#links-to-posts"><i class="anchor-icon"></i></a>Links to Posts</h3>
<p>The Quick Share menu now allows you to copy links to <strong>individual messages</strong> inside a channel. You can send these links to friends outside of Telegram or post them to other social networks. Following such links will open the channel and highlight the message.</p>
<div class="blog_image_wrap">
<a href="/file/811140743/2/TN1RB6CKByM/72ca895a1738215f68" target="_blank"><img src="/file/811140743/2/TN1RB6CKByM/72ca895a1738215f68" title="Copy Share Link" /></a>
<p>Copy Share Link</p>
</div>
<h3><a class="anchor" name="silent-messages" href="#silent-messages"><i class="anchor-icon"></i></a>Silent Messages</h3>
<p>“Is it OK to post now?” “Is this urgent enough to notify everyone?” If you&#39;re a channel admin, you know these questions too well. Luckily, you can now send <strong>silent messages</strong> that will not notify your subscribers. This is very useful for late night or non-urgent updates. Tap on the bell icon to toggle silent messages on and off.</p>
<div class="blog_image_wrap">
<a href="/file/811140349/1/Zmgry_AZ-1E/ae998fef5b4fe2c460" target="_blank"><img src="/file/811140349/1/Zmgry_AZ-1E/ae998fef5b4fe2c460" title="Silent messages" /></a>
<p>Silent messages</p>
</div>
<h3><a class="anchor" name="admin-signatures" href="#admin-signatures"><i class="anchor-icon"></i></a>Admin Signatures</h3>
<p>There are times when its important to know who posted a certain message. Starting today, you can enable signatures in Channel Info. New messages will be signed with the posting admins chosen screen name but will not link to their profile.</p>
<div class="blog_2images_wrap">
<div class="blog_image_wrap">
<a href="/file/811140832/1/b8Ak0Mxu49Y/4e54046a56dbc696e6" target="_blank"><img src="/file/811140832/1/b8Ak0Mxu49Y/4e54046a56dbc696e6" title="Channel Settings"/></a>
<p>Channel Settings</p>
</div>
<div class="blog_image_wrap">
<a href="/file/811140758/3/rytqafH7tu4/419c894ebb220ebb03" target="_blank"><img src="/file/811140758/3/rytqafH7tu4/419c894ebb220ebb03" title="Signed Messages"/></a>
<p>Signed Messages</p> </div>
</div>
<h3><a class="anchor" name="edit-messages-in-channels-and-supergroups" href="#edit-messages-in-channels-and-supergroups"><i class="anchor-icon"></i></a>Edit Messages in Channels and Supergroups</h3>
<p>Made a typo? Missed a word? Itching to add something? As of today, you can edit your messages after they were posted. Tap the message (double tap on iOS), then press Edit. This feature works with <a href="/blog/supergroups">supergroups</a> and channels because they both use the same underlying technology.</p>
<h3><a class="anchor" name="quick-share-button-for-bots" href="#quick-share-button-for-bots"><i class="anchor-icon"></i></a>Quick Share Button for Bots</h3>
<p>Many news organizations are building bots to provide tailored subscriptions. In this update we&#39;ve made it easier to share the <strong>links</strong>, <strong>pictures</strong> and <strong>videos</strong> you get from bots. Check out the new official <a href="https://telegram.me/forbesbot">@forbesbot</a> to see how this works.</p>
<div class="blog_image_wrap">
<a href="/file/811140152/1/mac1RLt4DEc/1df974bc0840685752" target="_blank"><img src="/file/811140152/1/mac1RLt4DEc/1df974bc0840685752" title="Quick Share button for bots" /></a>
<p>Quick Share button for bots</p>
</div>
<h3><a class="anchor" name="bonus-sticker-previews" href="#bonus-sticker-previews"><i class="anchor-icon"></i></a>Bonus: Sticker Previews</h3>
<p>In other news, sticker previews now work everywhere including sticker suggestions when you type an emoji and the Add stickers screen. Tap and hold on a sticker to see it in full size before sending. The devil&#39;s in the details, right?</p>
<p>Try it out with the Harry set: <a href="https://telegram.me/addstickers/harry"><a href="https://telegram.me/addstickers/harry">https://telegram.me/addstickers/harry</a></a></p>
<div><br></div>
<p>And thats all weve got for you this month.<br>Stay tuned for more updates in March!</p>
<div><br></div>
<p><em>February 24, 2016<br>The Telegram Team</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fchannels-2-0&text=Telegram%20Channels%202.0%3A%20Links%20to%20channel%20posts%2C%20silent%20messages%2C%20admin%20names%2C%20edit%20messages%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram Channels 2.0: Links to channel posts, silent messages, admin names, edit messages and more." data-url="https://telegram.org/blog/channels-2-0"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Telegram Channels 2.0: Links to channel posts, silent messages, admin names, edit messages and more." data-url="https://telegram.org/blog/channels-2-0" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,297 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording">
<meta property="og:image" content="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Today&#39;s update lets you set different themes for individual chats, share your feelings with loved ones using interactive emoji with fullscreen effects, record video and audio from live broadcasts, and see detailed read receipts in groups.">
<meta property="article:published_time" content="2021-09-19T14:56:56+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/chat-themes-interactive-emoji-read-receipts" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<picture class="dev_page_tgsticker blog_side_image js-tgsticker_image" style="width:160px;"><div style="padding-top:100%"></div><source type="application/x-tgsticker" srcset="/file/464001022/3/08zHFWwG288.17246/89bef093fad4bfbd3e"><img src="/file/464001022/4/eSPHTJem5R4.41940.png/6d735736731c5e9770" /></picture>
</div>
<div class="blog_wide_image">
<a href="/file/464001201/3/gtwtSMRXba0.204892/b102dc7205689001f3" target="_blank"><img src="/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" srcset="/file/464001201/3/gtwtSMRXba0.204892/b102dc7205689001f3, 1200w" title="Zero-gravity conditions not included with the update." alt="Introducing Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording"/></a>
</div>
<p>Today&#39;s update lets you <strong>set different themes for individual chats</strong>, share your feelings with loved ones using <strong>interactive emoji</strong> with fullscreen effects, see <strong>detailed read receipts</strong> in groups and <strong>record video</strong> and audio from live broadcasts.</p>
<h3><a class="anchor" name="chat-themes" href="#chat-themes"><i class="anchor-icon"></i></a>Chat Themes</h3>
<p>Telegram has dozens of features to organize your chats and customize their appearance, from <a href="https://telegram.org/blog/folders">Chat Folders</a> to <a href="https://telegram.org/blog/animated-backgrounds">Animated Backgrounds</a>. In this update, coordination and decoration come together with <strong>new themes for individual chats</strong>.</p>
<p>Our designers created <strong>8 new themes</strong> that you can apply to <strong>specific</strong> private chats. Each of the new themes features colorful <strong>gradient message bubbles</strong>, beautifully <strong>animated backgrounds</strong> and <strong>unique background patterns</strong>.</p>
<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/464001886/2/5ugRdJYEz5c.152462/fed96846ba42463c8d" style="max-width: 400px;" title="That chat theme really ties the room together." alt="Chat Themes">
<source src="/file/464001424/4/Lo52Rt9Ay5s.4654350.mp4/1db8d7a8c3f83f8129" type="video/mp4">
</video>
</div>
<p>Both you and your chat partner can choose the theme for <strong>both sides</strong> and make any conversation easy to recognize, even when you can&#39;t find your glasses. This way you can set <strong>different themes</strong> for chats with co-workers and family members, so you won&#39;t accidentally send <a href="https://t.me/MemesTelegram/45">that video</a> to your boss again. </p>
<blockquote>
<p>To set a theme for your chat on <strong>Android</strong>, tap <em>&gt; Change Colors</em>. On <strong>iOS</strong>, tap the <em>Chat Header &gt;&gt; Change Colors</em>. Your chat partner will see the theme if they are using the <strong>latest</strong> version of Telegram.</p>
</blockquote>
<p>Each theme comes with a <strong>day</strong> and <strong>night</strong> version and will follow your app&#39;s <strong>night mode settings</strong> whether you keep it dark all day, or have your chats follow the sun.</p>
<p>These first 8 themes are just the beginning our designers are already working on adding more.</p>
<h3><a class="anchor" name="interactive-emoji" href="#interactive-emoji"><i class="anchor-icon"></i></a>Interactive Emoji</h3>
<p>We love animating emoji, but there are times when even a big red beating heart that makes your phone vibrate with each beat! is simply <em>not enough</em> to express your feelings.</p>
<p>With a little code, a little drawing and a lot of dark magic, we&#39;ve created a new way of <strong>sharing emotion in real time</strong>. Send a single <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E86.png" width="20" height="20" alt="🎆" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E89.png" width="20" height="20" alt="🎉" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E88.png" width="20" height="20" alt="🎈" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F918D.png" width="20" height="20" alt="👍" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F92A9.png" width="20" height="20" alt="💩" /> or <img class="emoji" src="//telegram.org/img/emoji/40/E29DA4.png" width="20" height="20" alt="❤️" /> to any private chat, then <strong>tap on the animated emoji</strong> to unleash a <strong>fullscreen effect</strong>.</p>
<p>If both you and your chat partner have the chat open, the <strong>animations</strong> and <strong>vibrations</strong> play <strong>simultaneously</strong> on your devices, so you feel close even when you&#39;re far apart.</p>
<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/464001355/3/Mqd3oJbs_zc.227473/e6e7ee131535d28174" style="max-width: 400px;" title="Are you feeling it now, Mr. Krabs?" alt="Interactive emoji with fullscreen effects">
<source src="/file/464001437/3/S8Rzu0giRYU.4592746.mp4/397696d82c442164fd" type="video/mp4">
</video>
</div>
<blockquote>
<p>Your chat partner will only see the effects if they are using the <strong>latest</strong> version of Telegram.</p>
</blockquote>
<p>Our artists are already back in the dungeons, working on new fullscreen effects for more animated emoji.</p>
<h3><a class="anchor" name="read-receipts-in-small-groups" href="#read-receipts-in-small-groups"><i class="anchor-icon"></i></a>Read Receipts in Small Groups</h3>
<p>Both chat themes and interactive emoji currently only work in <strong>private chats</strong>. But this update also includes a big change for <strong>groups</strong>.</p>
<p>Group messages are marked as read <strong>(✓✓)</strong> as soon as one other member sees them. In small groups, you can now also <strong>select a message you sent</strong> to see <strong>which group members</strong> have read it.</p>
<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/464001903/2/Lg9g9LFeuuc.92807/e8ecccb14e0dc12498" style="max-width: 400px;" title="I've Seen things you people wouldn't believe. Read receipts on fire off the shoulders of Orion. I watched C-Themes glitter in the dark near the Tannhäuser Gate. All those comments will be lost in time, like tears in rain. Time to reply." alt="Read receipts in small groups">
<source src="/file/464001508/1/Qz-LtLRA-2U.1291847.mp4/df00034163d0fbc08e" type="video/mp4">
</video>
</div>
<blockquote>
<p>To protect users&#39; privacy, read receipts in groups are only stored for <strong>7 days</strong> after the message was sent. It is not Telegram&#39;s business to keep a record of everything you&#39;ve ever seen.</p>
</blockquote>
<h3><a class="anchor" name="record-live-streams-and-video-chats" href="#record-live-streams-and-video-chats"><i class="anchor-icon"></i></a>Record Live Streams and Video Chats</h3>
<p>Telegram hosts <strong>millions of communities</strong> that can create live events for <strong>unlimited viewers</strong>. Whether it&#39;s a once-in-a-lifetime concert or an everyday algebra class, admins can now <strong>record Live Streams</strong> and <strong>Video Chats</strong> to publish them for those who missed the live version.</p>
<!--
<div class="blog_image_wrap blog_medium_image_wrap">
<a href="/file/464001742/1/EJuh0XubzaM.164791/4ed86b84082d7575cc" target="_blank"><img src="/file/464001663/4/gRdyQwE6QvM.304911/e7b3a4b7834123eab0" title="" alt="Record live streams and video chats" srcset="/file/464001742/1/EJuh0XubzaM.164791/4ed86b84082d7575cc , 2x" /></a>
</div>
-->
<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/464001879/4/j3_6zSK9ygQ.58015/15a5b98c566cf48b9c" style="max-width: 400px;" title="Lights. Camera. ⋮ . Start Recording!" alt="Record live streams and video chats">
<source src="/file/464001689/6/9ta8YUEJBTE.1912467.mp4/261017e989b5e33989" type="video/mp4">
</video>
</div>
<p>Admins can start a recording right from the Live Stream or Video Chat menu with options to record <strong>Video and Audio</strong> or <strong>Only Audio</strong>. To record video, choose an orientation for the final video file, <strong>Portrait</strong> or <strong>Landscape</strong>. After you finish recording or end the broadcast, the file is <strong>instantly uploaded</strong> to your <strong>Saved Messages</strong>.</p>
<blockquote>
<p>Tap ⋮ or ⋯ to open the broadcast menu and start recording. While recording, a red dot appears next to the title of the broadcast.</p>
</blockquote>
<!--
### Telegram Help
Millions of new users sign up for Telegram each week for many, it may be their first messaging app or even their first time using a smartphone. To help everyone get started and learn more about the app, we've created a [Telegram Help](/) channel with **convenient guides** and **video demos** for both Android and iOS.
This way you can quickly see how to [start a Secret Chat](/) on iOS or show one of your grandparents how to [send a photo](/) on Android. When you're ready for more advanced features, the [Telegram Tips](https://t.me/TelegramTips/233) channel has over **150 posts** that show you how to maximize your messaging experience available in [10 languages](https://t.me/TelegramTips/266).
-->
<p>And that should give you enough things to do until we&#39;re back with the next update. As always, it shouldn&#39;t take us long.</p>
<div><br></div>
<p><em>September 19, 2021<br>The Telegram Team</em></p>
<!--
###Video
<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="PHOTO" style="max-width: 400px;" title="TITLE" alt="TITLE">
<source src="VIDEO" type="video/mp4">
</video>
</div>
###Image
<div class="blog_image_wrap blog_medium_image_wrap">
<a href="LARGE" target="_blank"><img src="SMALL" title="TITLE" alt="TITLE" srcset="LARGE , 2x" /></a>
</div>
--></div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fchat-themes-interactive-emoji-read-receipts&text=Introducing%20chat%20themes%2C%20interactive%20emoji%20with%20fullscreen%20effects%2C%20read%20receipts%20in%20small%20groups%20and%20live%20stream%20recording" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing chat themes, interactive emoji with fullscreen effects, read receipts in small groups and live stream recording" data-url="https://telegram.org/blog/chat-themes-interactive-emoji-read-receipts"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Introducing chat themes, interactive emoji with fullscreen effects, read receipts in small groups and live stream recording" data-url="https://telegram.org/blog/chat-themes-interactive-emoji-read-receipts" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/group-video-calls"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001231/2/Q0OFpRBNruI.71986/42d2a05bd0d1bd091b" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Group Video Calls</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you turn on your camera or share your screen during Voice Chats in groups on all devices, including tablets and desktops. This brings voice chats to a whole new…</div>
</div>
<div class="dev_blog_card_date">Jun 25, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script src="/js/tgsticker.js?24"></script>
<script>mainInitTgStickers({"maxDeviceRatio":2,"cachingModulo":4});
initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,254 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Coronavirus News and Verified Channels</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Coronavirus News and Verified Channels">
<meta property="og:image" content="https://telegram.org/file/464001885/4/L7NIiYhsWv8.56582/1301fc90889c583bf0">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Channels are a tool for broadcasting your public messages to large audiences. They offer a unique opportunity to reach people directly, sending a notification to their phones with each post.">
<meta property="article:published_time" content="2020-04-03T16:04:32+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001885/4/L7NIiYhsWv8.56582/1301fc90889c583bf0" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/coronavirus" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Coronavirus News and Verified Channels</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/464001839/2/vN_1W81wpVw.21666.gif/1999ae5807428659db" class="blog_side_image" title="Who ya gonna call? Coughbusters."/>
</div>
<div class="blog_wide_image">
<a href="/file/464001689/3/liHcDgHAJe0.151594/9adb882d85a74bb47e" target="_blank"><img src="/file/464001885/4/L7NIiYhsWv8.56582/1301fc90889c583bf0" srcset="/file/464001689/3/liHcDgHAJe0.151594/9adb882d85a74bb47e, 1200w" title="It's OK. You don't need a mask and gloves to shout into a megaphone. Just remember to sanitize the megaphone when you're done." alt="Verified Channels and Coronavirus Info"/></a>
</div>
<p><a href="https://telegram.org/tour/channels"><strong>Telegram Channels</strong></a> are a powerful tool for <strong>broadcasting</strong> your messages to <strong>unlimited audiences</strong>. Since <a href="https://telegram.org/blog/channels"><strong>2015</strong></a>, media organizations and public figures have been using them to reach readers, voters and fans especially in countries where <strong>freedom of speech</strong> is limited.</p>
<p>Recently, we noticed a new type of channel gaining popularity: those created by <strong>Ministries of Health</strong> from around the world. <a href="https://t.me/MyGovCoronaNewsdesk">India</a>, <a href="https://t.me/cprckkm">Malaysia</a>, <a href="https://t.me/MOHreport">Israel</a> and <a href="https://t.me/corona/22">many other countries</a> now send news updates, warnings and tips via Telegram.</p>
<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/464001838/1/GDPE_UE4KFY.77587/f3ebf15475f5ac1f66" style="max-width: 400px;" title="Come for the articles, stay for the stickers.
" alt="A video introduction to Telegram Channels">
<source src="/file/464001395/3/UT7CVcL9nXw.4941192.mp4/89dbd69c07cc93e3bf" type="video/mp4">
</video>
</div>
<blockquote>
<p><a href="https://telegram.org/tour/channels">More about Channels and their features »</a></p>
</blockquote>
<h3><a class="anchor" name="new-verification-tools" href="#new-verification-tools"><i class="anchor-icon"></i></a>New Verification Tools</h3>
<p>To help users distinguish <strong>trustworthy sources</strong> from fake news, we&#39;re launching a streamlined <strong>verification</strong> process today.</p>
<p>If you have verified accounts on other social media services, simply contact our new <a href="https://t.me/verifybot"><strong>@VerifyBot</strong></a> to get a <strong>verification badge</strong> for your <strong>channel</strong>, <strong>group</strong> or <strong>bot</strong>.</p>
<blockquote>
<p><a href="https://telegram.org/verify">More about Telegram Verification Guidelines »</a></p>
</blockquote>
<h3><a class="anchor" name="notifications-for-users" href="#notifications-for-users"><i class="anchor-icon"></i></a>Notifications for Users</h3>
<p>Information is the most powerful weapon in the fight for global health at least until we get a vaccine. To do our part, we&#39;ve been sending <strong>notifications</strong> to <strong>all users</strong> in countries that have official channels with updates about the virus, offering them to join.</p>
<p>We invite all health officials to <strong>collaborate</strong> on keeping people informed. If you work for your country&#39;s <em>Ministry of Health</em> and would like to promote its channel, please verify it first using <a href="https://t.me/verifybot"><strong>@VerifyBot</strong></a>, then contact us at <em>corona@telegram.org</em>.</p>
<h3><a class="anchor" name="coronavirus-info" href="#coronavirus-info"><i class="anchor-icon"></i></a>Coronavirus Info</h3>
<p>To make sure users find accurate and relevant information about the pandemic in their region, we&#39;ve created a <a href="https://t.me/corona">special channel</a> which shows up as the <strong>top result</strong> for all <strong>coronavirus-related keywords</strong> in Search. It contains a list of official news sources by country:</p>
<div><br><script async src="https://telegram.org/js/telegram-widget.js?7" data-telegram-post="corona/22" data-width="100%"></script></div>
<h3><a class="anchor" name="beyond-channels-groups-and-bots" href="#beyond-channels-groups-and-bots"><i class="anchor-icon"></i></a>Beyond Channels: Groups and Bots</h3>
<p>Telegram Channels are good for massive one-way broadcasts, but if you&#39;re looking for more interactive ways to inform people, try <strong>groups</strong> or <strong>bots</strong>.</p>
<p><strong>Telegram Groups</strong> can have up to <strong>200,000 members</strong> each and offer powerful tools for maintaining order. For example, doctors from the Indian state of Karnataka are using <a href="https://t.me/karnataka_Covid19">this public group</a> to answer questions from users.</p>
<blockquote>
<p><a href="https://telegram.org/tour/groups">More about Telegram Groups »</a></p>
</blockquote>
<p><strong>Telegram Bots</strong> are third-party apps that you can interact with right from your chat list. You talk to them using buttons and they reply with messages and media of all kinds. Bots are extremely flexible and can be used for anything from providing information to integrating with other web services.</p>
<p>For example, check out <a href="https://t.me/quizbot">@QuizBot</a> which can create and run quizzes like <a href="https://t.me/quizbot?start=GreatMinds">this one</a>.</p>
<blockquote>
<p><a href="https://core.telegram.org/bots">More about Telegram Bots »</a></p>
</blockquote>
<h3><a class="anchor" name="and-one-more-thing" href="#and-one-more-thing"><i class="anchor-icon"></i></a>And One More Thing</h3>
<p>We couldn&#39;t do anything about the shortage of masks in the real world, but our artists found a way to squeeze an inexhaustible supply into your app.</p>
<p>You can apply <a href="https://t.me/addstickers/Coronamask">masks from this set</a> to any pictures you send using Telegram&#39;s <a href="https://telegram.org/blog/masks">Photo Editor</a>. Whether to raise awareness, maintain digital hygiene, or simply to hide your nose is up to you.</p>
<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/464001224/2/PJNtBQgSioA.30199/b87a1de91ce3a040de" style="max-width: 400px;" title="Sunglasses optional, but fashionable." alt="A new set of masks">
<source src="/file/464001429/4/naFM6HT5KkY.716062.mp4/e949e3c551609818f5" type="video/mp4">
</video>
</div>
<p>Stay home. Wash your hands. Be safe. And stay tuned for our next updates!</p>
<div><br></div>
<p><em>April 3, 2020,<br>The Telegram Team</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fcoronavirus&text=Helping%20health%20authorities%20spread%20accurate%20information%20about%20the%20pandemic%20through%20verified%20channels." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Helping health authorities spread accurate information about the pandemic through verified channels." data-url="https://telegram.org/blog/coronavirus"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Helping health authorities spread accurate information about the pandemic through verified channels." data-url="https://telegram.org/blog/coronavirus" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,246 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Sticker Search, Multiple Photos, and More</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Sticker Search, Multiple Photos, and More">
<meta property="og:image" content="https://telegram.org/file/811140740/17db/jDH6uySXlmM.75869/e58d9d6aeb3af4a01a">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="This update helps you discover new stickers and take &amp; send multiple photos or videos at once. It also brings Auto-Night Mode and more to iOS.">
<meta property="article:published_time" content="2018-03-22T21:25:53+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140740/17db/jDH6uySXlmM.75869/e58d9d6aeb3af4a01a" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/discover-stickers-and-more" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Sticker Search, Multiple Photos, and More</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/811140659/1587/i1Hs0NL8e28.27047.gif/c9462a26b5d806a516" class="blog_side_image"/>
</div>
<div class="blog_wide_image">
<a href="/file/811140590/1548/H8UwuM4OtW8.215353/9cf17e4b84709708da" target="_blank"><img src="/file/811140740/17db/jDH6uySXlmM.75869/e58d9d6aeb3af4a01a" srcset="/file/811140590/1548/H8UwuM4OtW8.215353/9cf17e4b84709708da, 1200w" title="TITLE"/></a>
</div>
<blockquote>
<p>In other news: Telegram has now reached <a href="https://telegram.org/blog/200-million"><strong>200 million monthly active users</strong></a>.</p>
</blockquote>
<p>Today we&#39;re launching Telegram <strong>4.8</strong> for iOS and Telegram <strong>4.8.5</strong> for Android which make it much easier to <strong>discover new stickers</strong>. From now on, when you type one emoji, you will see suggestions not just from the sticker sets you&#39;ve added, but also from other popular sets.</p>
<div class="blog_image_wrap">
<a href="/file/811140083/1511/REmnihAMcY0.66170/b5165aca7d6b131367" target="_blank"><img src="/file/811140903/1906/mTk5mUrnjPs.28525/75dedd2eb7b965b2ee" title="TITLE" srcset="/file/811140083/1511/REmnihAMcY0.66170/b5165aca7d6b131367 , 2x" /></a>
<p>Suggested Stickers</p>
</div>
<h3><a class="anchor" name="sticker-search" href="#sticker-search"><i class="anchor-icon"></i></a>Sticker Search</h3>
<p>We&#39;ve added <strong>search for sticker sets</strong>. Scroll up in the sticker panel to find the new search field that will help you find something quickly be it a set you&#39;ve added, or a brand new pack of easter bears.</p>
<div class="blog_video_player_wrap" style="max-width: 480px; margin: 20px auto 20px;">
<video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/811140438/1705/Amkr2EjFbuo.134654/170bcae493fa660b26" style="max-width: 480px;">
<source src="/file/811140898/16ed/95UxZ2xpr0U.478638.mp4/baec8bc6d73bdd3f5d" type="video/mp4">
</video>
</div>
<h3><a class="anchor" name="multi-shot-sending" href="#multi-shot-sending"><i class="anchor-icon"></i></a>Multi-Shot Sending</h3>
<p>Need a couple of extra selfies to maximize dramatic effect? Dog can&#39;t stop doing adorable tricks? Not a problem. Use the new <code>+</code> button when taking a photo to <strong>take and send multiple media</strong> one after another.</p>
<div class="blog_image_wrap">
<a href="/file/811140923/15d4/TJPl27a1JS0.188977/be21d6aa821d0b0336" target="_blank"><img src="/file/811140542/179c/J7665HSt8cM.69816/ee38aed4b3439ea7dd" title="TITLE" srcset="/file/811140923/15d4/TJPl27a1JS0.188977/be21d6aa821d0b0336 , 2x" /></a>
<p>Take & Send Multiple Photos</p>
</div>
<h3><a class="anchor" name="auto-night-mode-and-connected-websites" href="#auto-night-mode-and-connected-websites"><i class="anchor-icon"></i></a>Auto-Night Mode and Connected Websites</h3>
<p>Telegram for iOS v.4.8 also includes some of the goodies which Android users have been enjoying since the previous release. With <strong>Auto-Night Mode</strong> settings you can automatically switch to the dark version of the interface after nightfall or in low-light conditions:</p>
<div class="blog_image_wrap">
<a href="/file/811140435/164f/1D9FMAxOgMU.149228/84d2ce5af3462d9e3e" target="_blank"><img src="/file/811140187/1932/R8bea6wCAgg.65666/2b8ed3e38493dcd5c2" title="Auto-Night Mode Settings on iOS" srcset="/file/811140435/164f/1D9FMAxOgMU.149228/84d2ce5af3462d9e3e , 2x" /></a>
<p>Auto-Night Mode Settings on iOS</p>
</div>
<p>As of v.4.8, the iOS app also supports text formatting in media captions, reporting individual messages in public entities, and has a section where you can manage <a href="/blog/login">connected websites</a>.</p>
<p>Oh, and we&#39;ve optimized battery usage so that you can enjoy all of the above even longer on a single charge.</p>
<div><br></div>
<p><em>March 22, 2018,<br>The Telegram Team</em></p>
<div><br></div>
<blockquote>
<p>P.S. In case you missed this, Telegram has now reached <a href="https://telegram.org/blog/200-million"><strong>200 million active users</strong></a>.</p>
</blockquote>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fdiscover-stickers-and-more&text=Sticker%20Search%2C%20Multi-Shot%20Sending%20for%20Media%2C%20and%20More%20in%20Telegram%20v.4.8%2F4.8.5" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Sticker Search, Multi-Shot Sending for Media, and More in Telegram v.4.8/4.8.5" data-url="https://telegram.org/blog/discover-stickers-and-more"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Sticker Search, Multi-Shot Sending for Media, and More in Telegram v.4.8/4.8.5" data-url="https://telegram.org/blog/discover-stickers-and-more" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,264 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Gaming Platform 1.0</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Gaming Platform 1.0">
<meta property="og:image" content="https://telegram.org/file/811140945/2/thDPn9h1P6M.26237.gif/5420d79aaa35fd47af">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="A major update to Telegram&#39;s Bot Platform&#33; Bots can now offer rich HTML5 experiences, like games">
<meta property="article:published_time" content="2016-10-03T12:58:34+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140945/2/thDPn9h1P6M.26237.gif/5420d79aaa35fd47af" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/games" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Gaming Platform 1.0</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/811140945/2/thDPn9h1P6M.26237.gif/5420d79aaa35fd47af" class="blog_side_image"/>
</div>
<p>Last year we launched a <a href="https://core.telegram.org/bots">Bot Platform</a> for Telegram. Free, powerful, and open, it was an instant hit among users and developers. Today we are aiming to push the boundaries further by launching a bot-powered <strong>Gaming Platform</strong> on Telegram. Thats right: you can now use bots to play games in your chats, complete with graphics and sound.</p>
<div class="smartphone_video_player_wrap">
<div class="smartphone_video_player_iphone">
<video class="smartphone_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" poster="ZZZ" autoplay loop controls muted>
<source src="/file/811140153/1/gB7wI2zjrj0.1410621.mp4/06df2101673aabbf29" type="video/mp4">
</video>
</div>
</div>
<h3><a class="anchor" name="ready-to-play" href="#ready-to-play"><i class="anchor-icon"></i></a>Ready to Play</h3>
<p>Hundreds of games are headed your way, but about 30 are ready to be played on Telegram now, most of them published by <a href="https://telegram.me/gamee">@gamee</a>. You can start a game by interacting with their bot directly, or by invoking it from <a href="https://telegram.org/blog/inline-bots">any of your chats</a>. To do that, try typing “@gamee “ in a group and choose a game to start playing with your friends:</p>
<div class="blog_image_wrap">
<a href="/file/811140576/1/-CuMDV4IrNE.105071/adab466b20e49a5758" target="_blank"><img src="/file/811140576/1/-CuMDV4IrNE.105071/adab466b20e49a5758" title="Select a game" /></a>
<p>Select a game</p>
</div>
<p>If you spot a great game on Telegram, you can challenge your friends from other chats by sharing the game with them. </p>
<div class="blog_image_wrap">
<a href="/file/811140035/2/cIULSr61vi4.78261/127282e0bbd66ce3a9" target="_blank"><img src="/file/811140035/2/cIULSr61vi4.78261/127282e0bbd66ce3a9" title="Challenge your friends" /></a>
<p>Challenge your friends</p>
</div>
<h3><a class="anchor" name="better-with-friends" href="#better-with-friends"><i class="anchor-icon"></i></a>Better with Friends</h3>
<p>The best part of the Telegram Gaming Platform is the competition across all your existing chats. We save <strong>high scores</strong> for every game played in every chat, and you can instantly check out how you and your friends are doing against each other. Every time theres a new leader in the game, other playing members of the chat are notified that they need to step it up. </p>
<div class="blog_2images_wrap">
<div class="blog_image_wrap">
<a href="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" target="_blank"><img src="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" title="YYY"/></a>
<p>In-game high scores</p>
</div>
<div class="blog_image_wrap">
<a href="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" target="_blank"><img src="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" title="YYY"/></a>
<p>New high score in chat</p> </div>
</div>
<h3><a class="anchor" name="easy-to-build" href="#easy-to-build"><i class="anchor-icon"></i></a>Easy to Build</h3>
<p>Building games for Telegram is easy (check out the <a href="https://core.telegram.org/bots/api#games">API</a>). Heres <strong>MathBattle</strong>, a game that took our developer only 3 hours to build. You can launch it from any chat by typing <a href="https://telegram.me/gamebot">@gamebot</a> and choosing Math Battle:</p>
<div class="smartphone_video_player_wrap">
<div class="smartphone_video_player_iphone">
<video class="smartphone_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" poster="ZZZ" autoplay loop controls muted>
<source src="/file/811140234/1/18njZcUlq5M.357062.mp4/09572569b4738fe2d8" type="video/mp4">
</video>
</div>
</div>
<p>This is <strong>Corsairs</strong>, a demo game that took its dev just 5 hours to build and set up. That includes sound, graphics and animations:</p>
<div class="smartphone_video_player_wrap">
<div class="smartphone_video_player_iphone">
<video class="smartphone_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" poster="ZZZ" autoplay loop controls muted>
<source src="/file/811140027/2/Hdhk2QEXGnA.611796.mp4/ecb907590f316596a8" type="video/mp4">
</video>
</div>
</div>
<p>While these demos look basic, Telegram games can be anything from simple arcades and puzzles to multiplayer 3D-shooters and real-time strategy games. The underlying technology is <strong>HTML5</strong>, so games are loaded on-demand as needed, just like ordinary webpages. Games will work on iPhones 4 and newer and on Android 4.4 devices and newer. Note that your friends will need <strong>Telegram 3.13</strong> or higher to play.</p>
<p>If you are a developer, take a look at our <a href="https://core.telegram.org/bots/games">Introduction to Games</a>. Also, feel free to subscribe to our official <a href="https://telegram.me/botnews">@BotNews</a> channel to stay up to date on platform news.</p>
<h3><a class="anchor" name="no-added-calories" href="#no-added-calories"><i class="anchor-icon"></i></a>No Added Calories</h3>
<p>We know you love Telegram because its lean and efficient. This is why the new Gaming Platform requires <strong>0 bytes</strong> of disk space and wont add a single byte to the size of our apps. The only thing we&#39;re adding today is countless more fun moments in your chats.</p>
<div><br></div>
<p>And now let&#39;s see how high you can score.</p>
<div><br></div>
<p><em>October 3, 2016<br>The Telegram Team</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fgames&text=A%20major%20update%20to%20Telegram%27s%20Bot%20Platform%21%20Bots%20can%20now%20offer%20rich%20HTML5%20experiences%2C%20like%20games" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="A major update to Telegram&#39;s Bot Platform&#33; Bots can now offer rich HTML5 experiences, like games" data-url="https://telegram.org/blog/games"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="A major update to Telegram&#39;s Bot Platform&#33; Bots can now offer rich HTML5 experiences, like games" data-url="https://telegram.org/blog/games" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,268 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Instant View, Telegraph, and Other Goodies</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Instant View, Telegraph, and Other Goodies">
<meta property="og:image" content="https://telegram.org/file/811140505/3/_dlst-OYofc.208225/903d7579a66642b441">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Meet Instant View, a elegant way to view articles with zero pageload time. To try it out, use Telegram version 3.14 to share a link to a Medium post or a TechCrunch article. This will get you an Instant View button that immediately shows a native page, saving you time and data.">
<meta property="article:published_time" content="2016-11-22T20:07:37+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140505/3/_dlst-OYofc.208225/903d7579a66642b441" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/instant-view" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Instant View, Telegraph, and Other Goodies</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/811140520/1/u1WmYCpjBoQ/ea7ebbbc053abd591d" class="blog_side_image"/>
</div>
<div class="blog_wide_image">
<a href="/file/811140505/3/_dlst-OYofc.208225/903d7579a66642b441" target="_blank"><img src="/file/811140505/3/_dlst-OYofc.208225/903d7579a66642b441" title="This blog post was the first one to get its own full color illustration (the bot prize one was cut out of a poster). And if you were looking for the only funny alt text added before Summer 2019, you've found it. Go home. Yes, I know it's not really that funny."/></a>
</div>
<div>Meet <b>Instant View</b>, an elegant way to view <s>your dog</s> articles with zero pageload time. To try it out, use Telegram version <b>3.14</b> to share a link to a <b><a href="https://medium.com">Medium</a></b> post or a <a href="https://techcrunch.com"><b>TechCrunch</b></a> article. This will get you an <i>Instant View</i> button that immediately shows a native page, saving you time and data. </div>
<div class="blog_2images_wrap">
<div class="blog_image_wrap">
<a href="/file/811140831/2/hCo6ELf7oWs.134511/4233a17be835481dc4" target="_blank"><img src="/file/811140831/2/hCo6ELf7oWs.134511/4233a17be835481dc4" title="Instant View button"/></a>
<p>Instant View button</p>
</div>
<div class="blog_image_wrap">
<a href="/file/811140368/2/RfcQmOykCAE.162784/ae6ebd67a71e9a0bee" target="_blank"><img src="/file/811140368/2/RfcQmOykCAE.162784/ae6ebd67a71e9a0bee" title="Full peview"/></a>
<p>Saves time and data</p> </div>
</div>
<p>If you have feedback about the way an Instant View page was generated, ping our <a href="https://telegram.me/previews">@previews</a> bot. Only a handful of websites are supported at the moment, but we&#39;ll be adding more as we go. Eventually we want to provide Instant View pages for every story on the Web and thus devour the entire Internet (*evil laugh*).</p>
<h3><a class="anchor" name="telegraph" href="#telegraph"><i class="anchor-icon"></i></a>Telegraph</h3>
<p>Today we are launching <a href="https://telegra.ph"><strong>Telegraph</strong></a> a publishing tool that lets you create richly formatted posts with photos and all sorts of embedded stuff. Telegraph posts get beautiful Instant View pages on Telegram.</p>
<p>To try it, go to <a href="https://telegra.ph"><strong>telegra.ph</strong></a>, publish a story, and share it on Telegram. With Telegraph, your Telegram channel can run stories just like the mainstream media (although you may find it tricky to become as biased).</p>
<h3><a class="anchor" name="jump-to-date" href="#jump-to-date"><i class="anchor-icon"></i></a>Jump to Date</h3>
<p>You can now travel in time to any moment in the past. Just tap <strong>Search</strong> inside a chat and choose a day using the <strong>Calendar</strong> tool. </p>
<div class="blog_2images_wrap">
<div class="blog_image_wrap">
<a href="/file/811140633/3/li2YSyBrIko.95469/a1f69dca2b7e762940" target="_blank"><img src="/file/811140633/3/li2YSyBrIko.95469/a1f69dca2b7e762940" title="Calendar button"/></a>
<p>Calendar button</p>
</div>
<div class="blog_image_wrap">
<a href="/file/811140654/2/AGv-djof444.62597/42fdfa8a58cdd6b7ab" target="_blank"><img src="/file/811140654/2/AGv-djof444.62597/42fdfa8a58cdd6b7ab" title="Pick a day"/></a>
<p>Pick a day</p> </div>
</div>
<p>Unfortunately, this doesn&#39;t work with dates from the future. Sorry, no flying cars and hoverboards for you today.</p>
<h3><a class="anchor" name="view-pack-for-recent-stickers" href="#view-pack-for-recent-stickers"><i class="anchor-icon"></i></a>View Pack for Recent Stickers</h3>
<p>Remember all those times when you had a sad Pepe among your recently sent stickers? If youre like us, your natural desire wouldve been to reunite the sad Pepe with the rest of his family by scrolling to the <a href="https://telegram.me/addstickers/SuperPepe">Pepe pack</a> in your sticker panel.</p>
<p>You can now do that in an instant: try a long tap (or 3D-touch on iOS) on a recent sticker, then choose View Pack. Hey presto! For some mysterious reason, this also works with non-Pepe stickers.</p>
<div class="smartphone_video_player_wrap">
<div class="smartphone_video_player_iphone">
<video class="smartphone_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" poster="/file/811140254/2/G8ZwLA-hOMY.67414/0620f6a222e28d0976" autoplay loop controls muted>
<source src="/file/811140934/2/zdiDO6qiVKc.1141368.mp4/1fe0052aa657009124" type="video/mp4">
</video>
</div>
</div>
<!---/file/811140979/5/zR0PDURbvOs.1156175.mp4/c675825e3a1ed4e3d6--->
<h3><a class="anchor" name="groups-in-common" href="#groups-in-common"><i class="anchor-icon"></i></a>Groups in Common</h3>
<p>Sometimes you want to find a group in your chats, but cant recall the title. Heres a life-hack for you: think about a contact of yours that was also a member in that group. This association technique may help you bring back the title too. If it doesnt, open that contacts profile and tap <strong>Groups in Common</strong>. </p>
<h3><a class="anchor" name="android-strikes-back" href="#android-strikes-back"><i class="anchor-icon"></i></a>Android Strikes Back</h3>
<p>Some of you Android users told us we loved iPhones more than Androids. That almost made us cry (remember the sad Pepe in our recent stickers?). To make things right with you, we fired our iOS dev, who was too good. </p>
<p>Well, not really. We simply locked ourselves in the coding basement for several weeks to bring you this:</p>
<ul>
<li>A slick new interface for creating groups and selecting users in privacy settings (shiny animations included).</li>
<li>A new beautiful interface for notification settings.</li>
<li>Improved security for passcode locks (your chats won&#39;t be seen in the task switcher now). This one also works on iOS.</li>
<li>Improved camera speed when taking photos and videos.</li>
<li>Better video compression.</li>
<li>An improved and less obstructive photo viewer.</li>
<li>Easier editing of messages and adding captions to photos.</li>
</ul>
<p>And that&#39;s just getting us warmed up. Make Android Great Again! </p>
<h3><a class="anchor" name="also" href="#also"><i class="anchor-icon"></i></a>Also</h3>
<p>Something big is brewing in our secret dungeons. Stay tuned.</p>
<div><br></div>
<p><em>November 22, 2016<br>The Telegram Team</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Finstant-view&text=Instant%20View%20for%20articles%2C%20Jump%20to%20Date%2C%20Groups%20in%20Common%2C%20and%20Telegraph%20%E2%80%93%20a%20publishing%20tool." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Instant View for articles, Jump to Date, Groups in Common, and Telegraph a publishing tool." data-url="https://telegram.org/blog/instant-view"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Instant View for articles, Jump to Date, Groups in Common, and Telegraph a publishing tool." data-url="https://telegram.org/blog/instant-view" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,271 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Polls 2.0: Visible Votes, Multiple Answers, and Quiz Mode</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Polls 2.0: Visible Votes, Multiple Answers, and Quiz Mode">
<meta property="og:image" content="https://telegram.org/file/464001914/1/tfVewTpsrWg.74478/f301b8e4890ccc1bb5">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Since we first added polls for groups and channels, they&#39;ve been used for everything from deciding where to have lunch to organizing leaderless protests. Today we&#39;re expanding the range of possibilities with three new kinds of Telegram polls.">
<meta property="article:published_time" content="2020-01-23T10:49:55+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001914/1/tfVewTpsrWg.74478/f301b8e4890ccc1bb5" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/polls-2-0-vmq" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Polls 2.0: Visible Votes, Multiple Answers, and Quiz Mode</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/464001373/1/GCHmCtOxlu0.23341.gif/fbdf290c3e3f6a7df5" class="blog_side_image"/>
</div>
<div class="blog_wide_image">
<a href="/file/464001649/2/5OMbaWyOQn0.201627/b4eaa306092188cfbe" target="_blank"><img src="/file/464001914/1/tfVewTpsrWg.74478/f301b8e4890ccc1bb5" srcset="/file/464001649/2/5OMbaWyOQn0.201627/b4eaa306092188cfbe, 1200w" title="In case you were wondering, it's 'Meow' in Cat just like pretty much all the other concepts, with the notable exception of 'let go of my lunch' for which you should say 'MEOW'. All the purrs etc. are just a smokescreen and don't convey any meaning. Cat is the world's easiest language to learn. And the world's most difficult to understand." alt="Introducing Polls 2.0: Visible Votes, Multiple Answers, and Quiz Mode"/></a>
</div>
<p>Since we first added <a href="https://telegram.org/blog/polls"><strong>polls</strong></a> for <strong>groups</strong> and <strong>channels</strong>, they&#39;ve been used for everything from deciding where to have lunch to organizing <a href="https://www.bbc.com/news/technology-48802125">leaderless protests</a>. Today we&#39;re expanding the range of possibilities with <strong>three new kinds</strong> of <strong>Telegram polls</strong>.</p>
<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/464001868/2/KZBX97HI604.80848/bf8cfe3af04a1076d7" style="max-width: 400px;" title="Introducing three new features to redefine what's poll-sible." alt="Three new kinds of Telegram polls">
<source src="/file/464001951/2/9xlNwOwspBk.6603257.mp4/cea1f0c88c8e7d0726" type="video/mp4">
</video>
</div>
<h3><a class="anchor" name="visible-votes" href="#visible-votes"><i class="anchor-icon"></i></a>Visible Votes</h3>
<p>Previously, all polls on Telegram were anonymous. With this update, you can create polls that allow everyone in the group to see <strong>who voted for what</strong>. Now you will know exactly which friends you disagree with on the matter of pineapple and pizza.</p>
<div class="blog_image_wrap blog_medium_image_wrap">
<a href="/file/464001719/1/Iz2e1dzZz3U.82243/964fecc478216900d6" target="_blank"><img src="/file/464001233/2/nLkZM5oG6dg.18875/96ab44ab310ef583cf" title="Honesty not included." alt="A poll that shows who voted for which option" srcset="/file/464001719/1/Iz2e1dzZz3U.82243/964fecc478216900d6 , 2x" /></a>
</div>
<p>Naturally, you can still create <strong>anonymous polls</strong> to make sure nobody finds out it was you who voted for broccoli instead of cookies.</p>
<h3><a class="anchor" name="multiple-answers" href="#multiple-answers"><i class="anchor-icon"></i></a>Multiple Answers</h3>
<p>One of the best ways to settle the score is with polls that allow people to select <strong>multiple answers</strong>. Scheduling events, or choosing a playlist of <a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ">songs</a> for a party sometimes you need more than one choice.</p>
<div class="blog_image_wrap blog_medium_image_wrap">
<a href="/file/464001307/1/B5TTg_x9LvI.96475/e73bb08aa8f86f9e63" target="_blank"><img src="/file/464001094/1/6PYWSIeRuj0.22919/bb91c4b1ab51620591" title="Anyone who chooses all options at once will have their alignment permanently switched to Chaotic Neutral." alt="A poll that allows people to select multiple answers" srcset="/file/464001307/1/B5TTg_x9LvI.96475/e73bb08aa8f86f9e63 , 2x" /></a>
</div>
<p>Our aunt who has a knack for statistics and exploring bizarre correlations kept asking for this feature and we just couldn&#39;t say no. (33% of developers who didn&#39;t refuse this request were also found to be addicted to cheese.)</p>
<h3><a class="anchor" name="quiz-mode" href="#quiz-mode"><i class="anchor-icon"></i></a>Quiz Mode</h3>
<p>For the game show guru and <em>“Who Wants To Be A Millionaire”</em> contestant in all of us, polls now have <strong>Quiz Mode</strong>. Such polls have one <strong>correct answer</strong> and can power anything from <strong>trivia games</strong> to <strong>public service exams</strong>.</p>
<div class="blog_image_wrap blog_medium_image_wrap">
<a href="/file/464001802/1/fwR7FzJKx2g.142023/3262deaf7701aed468" target="_blank"><img src="/file/464001158/1/Uq3TNw-C7mE.34520/4b237840354637235c" title="Sorry, America it's not like you're the only 'independent' country in the world." alt="Quiz mode" srcset="/file/464001802/1/fwR7FzJKx2g.142023/3262deaf7701aed468 , 2x" /></a>
</div>
<p>As if guessing right wasn&#39;t sweet enough, correct answers will trigger a shower of confetti.</p>
<h3><a class="anchor" name="creating-polls" href="#creating-polls"><i class="anchor-icon"></i></a>Creating Polls</h3>
<p>Polls can be created in <strong>groups</strong> or <strong>channels</strong> (they feel lonely in one-on-one chats). Simply choose the <strong>“Poll”</strong> option in the attachment menu. Type in your question, add answer options, choose the settings that fit your purpose best and you&#39;re ready to go:</p>
<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/464001295/2/BNbsIsvTPSo.94697/5b5a5a4299c189e878" style="max-width: 400px;" title="We didn't invent democracy. But we added confetti." alt="Creating polls">
<source src="/file/464001155/1/hZ6LWRUwtJc.5492396.mp4/b1485a9c99bf36fb52" type="video/mp4">
</video>
</div>
<h3><a class="anchor" name="bot-api-and-quiz-bot" href="#bot-api-and-quiz-bot"><i class="anchor-icon"></i></a>Bot API and Quiz Bot</h3>
<p>All the new poll types are supported in today&#39;s update to our <a href="https://core.telegram.org/bots/api#january-23-2019">Bot API</a>, so bot developers can build on this new functionality.</p>
<p>As an example, we&#39;ve created a <a href="https://t.me/quizbot"><strong>Quiz Bot</strong></a> that lets you create <strong>multi-question quizzes</strong> and <strong>share</strong> them with others. It also lets you add text or media before questions to help create <strong>exam-style prompts</strong> with graphs and tables or better yet, your own <a href="https://t.me/QuizBot?start=MemeQuiz"><em>Know Your Meme</em></a> tests.</p>
<p>Once your quiz is ready, you can <strong>share</strong> it to a group or channel or invite users to answer questions privately, in a chat with the bot. To see how this works, try our demo quiz: <a href="https://t.me/quizbot?start=GreatMinds">Who is Who in the &#39;Great Minds&#39; sticker pack</a>.</p>
<div class="blog_image_wrap blog_medium_image_wrap">
<a href="/file/464001279/1/5aDOxFSwPfY.190469/28f40c248f5a1f917c" target="_blank"><img src="/file/464001785/4/kYO0qdirU6I.45883/bc573a60a08e26efcd" title="Some like it bot" alt="Demo Quiz" srcset="/file/464001279/1/5aDOxFSwPfY.190469/28f40c248f5a1f917c , 2x" /></a>
</div>
<p>The bot will keep tabs on how many questions users got right and how much time it took them to complete the quiz. It also keeps a <strong>global leaderboard</strong> for each quiz you create.</p>
<h3><a class="anchor" name="message-corners" href="#message-corners"><i class="anchor-icon"></i></a>Message Corners</h3>
<p>In addition to the new polls, our apps just got a new visual setting. If you find your Telegram messages too hip to be square (or round, depending on your platform), you can tweak the appearance of <strong>message bubbles</strong> in Settings:</p>
<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/464001893/1/16buVZDNwxM.32262/a6bf6755b3b4b54b9e" style="max-width: 400px;" title="Our message corner smoothers work round the clock. Brought to you by Digital Sandpaper" alt="Changing the appearance of message bubbles in Chat Settings.
">
<source src="/file/464001876/1/xTSkFFI55wQ.442836.mp4/60270133ef5d40e74c" type="video/mp4">
</video>
</div>
<h3><a class="anchor" name="download-progress-counters-on-android" href="#download-progress-counters-on-android"><i class="anchor-icon"></i></a>Download Progress Counters on Android</h3>
<p>Just like on iOS, Android users can now see exact <strong>progress counters</strong> when <strong>downloading</strong> or <strong>uploading</strong> files if they&#39;re in the mood to count bits and bytes. </p>
<div class="blog_image_wrap blog_medium_image_wrap">
<a href="/file/464001686/3/xChcMW3Z_Ss.90640/2ce8940f29ca53240c" target="_blank"><img src="/file/464001445/2/Sq14uLzDJR8.23807/83fc758b266bc10b4a" title="A journey of 1610612736 bytes begins with a single bit - LaoBot" alt="Download progress counters on Android" srcset="/file/464001686/3/xChcMW3Z_Ss.90640/2ce8940f29ca53240c , 2x" /></a>
</div>
<p>And that&#39;s it for today. Here&#39;s to a good new year full of updates. Stay tuned!</p>
<div><br></div>
<p><em>January 23, 2020<br>The Telegram Team</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fpolls-2-0-vmq&text=Telegram%20introduces%20Polls%202.0%3A%20Visible%20Votes%2C%20Multiple%20Answers%2C%20and%20Quiz%20Mode" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram introduces Polls 2.0: Visible Votes, Multiple Answers, and Quiz Mode" data-url="https://telegram.org/blog/polls-2-0-vmq"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Telegram introduces Polls 2.0: Visible Votes, Multiple Answers, and Quiz Mode" data-url="https://telegram.org/blog/polls-2-0-vmq" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
<div class="tl_blog_comments_widget">
<script async src="https://comments.app/js/widget.js?3" data-comments-app-website="qTjlnIzn" data-page-id="blog/polls-2-0-vmq" data-limit="3" data-colorful="1" data-dislikes="1"></script>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,284 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Focused Privacy, Discussion Groups, Seamless Web Bots and More</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Focused Privacy, Discussion Groups, Seamless Web Bots and More">
<meta property="og:image" content="https://telegram.org/file/811140703/172f/nGBKB_F8S80.70089/884b94a66e3eb7c996">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Telegram is about privacy. In 2014, we pioneered granular privacy settings in messaging. Today we are making them even more flexible with exceptions for group chats.">
<meta property="article:published_time" content="2019-05-31T23:31:32+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140703/172f/nGBKB_F8S80.70089/884b94a66e3eb7c996" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/privacy-discussions-web-bots" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Focused Privacy, Discussion Groups, Seamless Web Bots and More</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="https://telegram.org/img/tl_card_wecandoit.gif" class="blog_side_image"/>
</div>
<div class="blog_wide_image">
<a href="/file/811140685/1653/yj8YWqoEbqc.197384/7ec377368b90e7a84f" target="_blank"><img src="/file/811140703/172f/nGBKB_F8S80.70089/884b94a66e3eb7c996" srcset="/file/811140685/1653/yj8YWqoEbqc.197384/7ec377368b90e7a84f, 1200w" title="Quickly readjust privacy settings based on your existing group chats"/></a>
</div>
<p>Telegram is about privacy. In <strong>2014</strong> we pioneered <a href="https://telegram.org/blog/privacy-revolution">granular privacy settings</a> in messaging. Today we are making them even more flexible with <strong>exceptions for group chats</strong>.</p>
<p>From now on, you can make something visible for all your classmates in one group chat and keep it private from, say, all your colleagues in another with just two taps:</p>
<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/811140502/16e0/WtuAJfEYqro.51545/18a85ecd2c347b128b" style="max-width: 400px;" title="Adding groups as exception" alt="Video showing how groups can be added to exceptions in privacy settings">
<source src="/file/811140404/1a7e/1um7KoHknGA.2775886.mp4/4611289caec9f8f3e4" type="video/mp4">
</video>
</div>
<p>Settings will <strong>adjust automatically</strong> as people join and leave the groups. So when your half-brother unexpectedly gets a job as a data broker, you&#39;ll just need to kick him out of one group to update all your settings.</p>
<h4><a class="anchor" name="who-can-see-my-phone-number" href="#who-can-see-my-phone-number"><i class="anchor-icon"></i></a>Who can see my phone number?</h4>
<p>On Telegram, you can send messages in private chats and groups without making your phone number visible. But there may be cases when you want to make your number known (e.g. to all your coworkers), so we added a new dedicated privacy control <strong>Who Can See My Number</strong>.</p>
<div class="blog_image_wrap">
<a href="/file/811140303/17a5/B3GM4vNHvcE.117067/53ba4e3d01ddd104b5" target="_blank"><img src="/file/811140308/1637/tt_nKf_yacQ.28933/5b267eaf89edcd5f4e" title="Phone number settings are at the top of the list" alt="A screenshot of the redesigned Privacy & Security settings screen" srcset="/file/811140303/17a5/B3GM4vNHvcE.117067/53ba4e3d01ddd104b5 , 2x" /></a>
<p>Redesigned privacy settings on iOS</p>
</div>
<h4><a class="anchor" name="meet-seamless-web-bots" href="#meet-seamless-web-bots"><i class="anchor-icon"></i></a>Meet Seamless Web Bots</h4>
<p>We&#39;ve made it easier to <strong>integrate bots with web services</strong>. Bots can now help you <strong>log in</strong> with your Telegram account on a website when you open a link. If you allow them to, you&#39;ll be logged in by the time the page loads in the browser:</p>
<div class="blog_image_wrap">
<a href="/file/811140015/1734/8VZFkwWXalM.97872/6127fa62d8a0bf2b3c" target="_blank"><img src="/file/811140909/1631/20k1Z53eiyY.23995/c541e89b74253623d9" title="Confirm authorization when opening a link" alt="A confirmation dialog that offers to open a link and optionally authorize on the website" srcset="/file/811140015/1734/8VZFkwWXalM.97872/6127fa62d8a0bf2b3c , 2x" /></a>
</div>
<p>While this is purely optional, it opens the door for a vast variety of new bots. To try out this seamless authorization, press the comments button under <a href="https://t.me/discussthis/2">this post</a>.</p>
<p>You can also make our sample <a href="https://t.me/discussbot">@discussbot</a> an admin in any of your broadcast channels to get a comments button under the posts you publish. The comments button opens a website where you are already logged in and ready to leave a comment. The bot will notify you if someone replies to what you wrote there.</p>
<p><strong>Anyone</strong> can create similar bots to connect their existing services to Telegram on the fly. Integrating all kinds of social, gaming, productivity, dating or e-commerce services into your channels is now a breeze.</p>
<h4><a class="anchor" name="broadcasts-meet-group-chats" href="#broadcasts-meet-group-chats"><i class="anchor-icon"></i></a>Broadcasts meet Group Chats</h4>
<p>Telegram channels are a tool for broadcasting your thoughts to unlimited audiences. Telegram group chats offer a democratic way for communities of up to <strong>200,000</strong> members to discuss things.</p>
<p>Ever since we launched channels and groups, users have been asking us to add <strong>discussions to channels</strong> and <strong>announcements to groups</strong>. With this update, admins can add a group chat to their channel to serve as a discussion board:</p>
<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/811140436/1cc1/7ILPfV4TGOk.35654/15d92ea535b5effbc4" style="max-width: 400px;" title="Setting up a discussion group" alt="Video showing how to set up a discussion group for a channel">
<source src="/file/811140131/15e5/c7pM8Kkemho.1946597.mp4/2e2cd62cd3e68ec64d" type="video/mp4">
</video>
</div>
<p>Subscribers will see a <strong>Discuss</strong> link on the bottom panel, and each new post from the channel will be automatically forwarded to and <strong>pinned</strong> in the discussion group.</p>
<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/811140693/19c8/nxMsWY439p8.90289/6757155d5d9248e1af" style="max-width: 400px;" title="'Discuss' button and counter in a channel" alt="Video showing a 'Discuss' button in a channel, as seen by a subscriber">
<source src="/file/811140380/18b3/Zxa3BpkKFww.2444629.mp4/e2bf14608afc9598e9" type="video/mp4">
</video>
</div>
<h4><a class="anchor" name="view-public-channels" href="#view-public-channels"><i class="anchor-icon"></i></a>View public channels</h4>
<p>Speaking of channels, you can now view <strong>any public channel</strong> from the web even if you arent logged in to Telegram. The same also goes for those retro people who dont have a Telegram account at all. Yet.</p>
<div class="blog_image_wrap">
<a href="/file/811140854/1d7a/oUo2RvZQhpA.179466/3af8447ee3166bd490" target="_blank"><img src="/file/811140394/18f2/R7wmWr5znlQ.22660/8320ab77949ef72ecb" title="Any public channel can now be viewed like this" alt="A public channel, as seen from the web" srcset="/file/811140854/1d7a/oUo2RvZQhpA.179466/3af8447ee3166bd490 , 2x" /></a>
</div>
<p>Simply open the channel link in a browser and select “Preview channel” to see something like this: <a href="https://t.me/s/telegram">t.me/s/telegram</a></p>
<h4><a class="anchor" name="scam-alerts" href="#scam-alerts"><i class="anchor-icon"></i></a>Scam Alerts</h4>
<p>Telegram apps will now show a <strong>scam</strong> label for suspicious accounts.</p>
<div class="blog_image_wrap">
<a href="http://telegra.ph/Why-WhatsApp-Will-Never-Be-Secure-05-15" target="_blank"><img src="/file/811140902/1944/I9_XkMaFa2s.7377/0177b2d25c2a905c12" title="Scam label" alt="Chat with a scammer" srcset="/file/811140225/1608/NEQ7qFcGz7A.41298/8192624d69954ef751 , 2x" /></a>
</div>
<h4><a class="anchor" name="ios-goodies" href="#ios-goodies"><i class="anchor-icon"></i></a>iOS Goodies</h4>
<p>In other news, Telegram 5.7 for iOS introduces <strong>thumbnails for PDF</strong> files. Keep in mind that Telegram lets you share files of any type, up to <strong>1,5GB</strong> each in size (so you can telegram a PDF payload worthy of Elon&#39;s rockets).</p>
<div class="blog_image_wrap">
<a href="/file/811140725/1950/gOBjCn0ArJ0.71145/f51c5479e0cb3bb9dc" target="_blank"><img src="/file/811140757/17cd/lfvsIdsuPH0.7902/3a793d6fb3b756b15b" title="PDFs get thumbnails" alt="PDF file with a thumbnail" srcset="/file/811140725/1950/gOBjCn0ArJ0.71145/f51c5479e0cb3bb9dc , 2x" /></a>
</div>
<p>Telegram for iOS also catches up with the rest of our apps in terms of <strong>text links</strong>. You can now make any text a <a href="https://bit.ly/18gECvy">link</a> to a website, keeping all the cords under the carpet.</p>
<div class="blog_image_wrap">
<a href="/file/811140123/1b46/4fiNCd0Im7w.41855/af8b7c20aa0b915540" target="_blank"><img src="/file/811140037/17e0/iDfax0dwFGo.8219/e33a2d2f6f076a2155" title="Creating a text link on iOS" alt="Creating a text link on iOS" srcset="/file/811140123/1b46/4fiNCd0Im7w.41855/af8b7c20aa0b915540 , 2x" /></a>
</div>
<p>Mind that people will get a warning about where exactly the link leads when they open it. (Hint: use URL shorteners if you want to rick-roll people).</p>
<h4><a class="anchor" name="android-delights" href="#android-delights"><i class="anchor-icon"></i></a>Android Delights</h4>
<p>As for Android, we&#39;ve redesigned the majority of confirmation dialogs in the app, and improved the <strong>design</strong> for message search and adding people to groups. Additionally, the app got a new <strong>theme switcher</strong> in <em>Chat Settings</em>.</p>
<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/811140437/1805/5MutqOxvf3Q.46129/19228a1a7473a2a3fe" style="max-width: 400px;" title="Changing themes on Android" alt="Changing themes on Android">
<source src="/file/811140502/16e1/yxE0opr-UAI.1621674.mp4/aa5945d1b1b9ea0920" type="video/mp4">
</video>
</div>
<p>Have fun with all that and stay tuned for our next updates.</p>
<div><br></div>
<p><em>May 31, 2019<br>The Telegram Team</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fprivacy-discussions-web-bots&text=Focused%20Privacy%2C%20Discussions%20for%20Broadcasts%2C%20Seamless%20Web%20Bots%20and%20More%20in%20Telegram%205.7" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Focused Privacy, Discussions for Broadcasts, Seamless Web Bots and More in Telegram 5.7" data-url="https://telegram.org/blog/privacy-discussions-web-bots"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Focused Privacy, Discussions for Broadcasts, Seamless Web Bots and More in Telegram 5.7" data-url="https://telegram.org/blog/privacy-discussions-web-bots" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,231 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Custom Sticker Sets</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Custom Sticker Sets">
<meta property="og:image" content="https://telegram.org/file/811140219/2/RlVQPk2jcUo/2173062bb911aca8d9">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Create custom sticker sets, add and share new stickers easily on #Telegram. ">
<meta property="article:published_time" content="2015-05-19T16:01:30+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140219/2/RlVQPk2jcUo/2173062bb911aca8d9" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/stickers-revolution" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Custom Sticker Sets</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/811140219/2/RlVQPk2jcUo/2173062bb911aca8d9" class="blog_side_image"/>
</div>
<blockquote>
<p><a href="https://telegram.me/durov/40">Check out Pavel&#39;s Channel for some cool sticker sets »</a></p>
</blockquote>
<p>Starting today, artists can submit their custom sticker sets via the Telegram <a href="https://telegram.me/stickers">@stickers</a> bot. Each sticker set gets a <strong>permanent link</strong>, so that users can easily add new stickers and share them with friends.</p>
<p>This enables artists of the world to unleash their creativity and help Telegram users customize their experience. Our in-house artist (responsible for the graphic art in this blog) created the <strong>Animals</strong> set as an example. If you have Telegram installed and updated, this link will open the set: <a href="https://telegram.me/addstickers/Animals"><a href="https://telegram.me/addstickers/Animals">https://telegram.me/addstickers/Animals</a></a>. </p>
<center><div>
<a href="/file/811140202/1/6x4PE8Ay684/bff1728992c9c639d3" target="_blank"><img src="/file/811140202/1/6x4PE8Ay684/bff1728992c9c639d3" title="Sticker set preview" style="width: 195px; padding: 10px 5px" /></a>
<br> <br>
</div></center>
<p>Independent designers already began submitting their sticker sets, and we notice stickers like <a href="https://telegram.me/addstickers/Flags">Flags of the World</a> or <a href="https://telegram.me/addstickers/Vicky">Vicky</a> uploaded to the <a href="https://telegram.me/stickers">@stickers</a> bot.</p>
<h4><a class="anchor" name="sharing-stickers" href="#sharing-stickers"><i class="anchor-icon"></i></a>Sharing Stickers</h4>
<p>Sending a link isnt the only way to share a sticker set. When you receive a sticker from a set you do not currently have installed, simply tap on it and choose Add to Stickers (Info&#39; on iOS) to preview and add the whole set.</p>
<center><div>
<a href="/file/811140970/1/bCNTkkSmgfo/eb30a50d4ff76e81c2" target="_blank"><img src="/file/811140970/1/bCNTkkSmgfo/eb30a50d4ff76e81c2" title="Tap on a sticker to add a new set" style="width: 195px; padding: 10px 5px" /></a>
<a href="/file/811140461/1/GJVav5OsVws/f7ccb954c24755a2a8" target="_blank"><img src="/file/811140461/1/GJVav5OsVws/f7ccb954c24755a2a8" title="Preview and add sticker set" style="width: 195px; padding: 10px 5px" /></a><br><br>
</div></center>
<p>Once you&#39;ve added a set, its stickers become available via <a href="https://telegram.org/blog/stickers">emoji tooltips</a> or the dedicated sticker panel. The iOS app now has one too — you can manually switch it on/off in Chat Settings — Stickers.</p>
<p>The new <strong>Stickers</strong> menu allows you to view, uninstall and share your sticker sets.</p>
<center><div>
<a href="/file/811140196/1/au_8ExYtQc0/5a0a48375b897976b7" target="_blank"><img src="/file/811140196/1/au_8ExYtQc0/5a0a48375b897976b7" title="Manage your sticker sets from Chat Settings — Stickers" style="width: 195px; padding: 10px 5px" /></a>
<br> <br>
</div></center>
<p>This update is available for <a href="https://telegram.org/dl/android">Android</a> and <a href="https://telegram.org/dl/ios">iOS</a> and is coming to other apps soon. Sticker sets on Telegram are now fully equipped to spread virally and devour the world.</p>
<div><br></div>
<p><em>The Telegram Team,<br>May 19, 2015</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fstickers-revolution&text=Create%20custom%20sticker%20sets%2C%20add%20and%20share%20new%20stickers%20easily%20on%20%23Telegram.%20" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Create custom sticker sets, add and share new stickers easily on #Telegram. " data-url="https://telegram.org/blog/stickers-revolution"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Create custom sticker sets, add and share new stickers easily on #Telegram. " data-url="https://telegram.org/blog/stickers-revolution" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,251 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Admins, Supergroups and More</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Admins, Supergroups and More">
<meta property="og:image" content="https://telegram.org/file/811140642/1/nM2DU-Ywr3A/e5809db818346b4be5">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Group Admins, Supergroups for up to 1000 members, new In-App Notifications and Quick Share.">
<meta property="article:published_time" content="2015-11-25T19:48:42+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140642/1/nM2DU-Ywr3A/e5809db818346b4be5" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/supergroups" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Admins, Supergroups and More</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/811140642/1/nM2DU-Ywr3A/e5809db818346b4be5" class="blog_side_image"/>
</div>
<p>Telegram groups are democratic by design. Everyone can invite new members and change the groups name and photo, which is ideal for small bands of friends or coworkers. But Telegram can also support much larger communities that need more administration. To make life easier in big groups, were introducing <strong>admins</strong> today.</p>
<p>From now on, you can choose how your groups will operate. By default, all members are still in control. But if you want more order, you can throw the switch and appoint additional administrators to your group.</p>
<center><div>
<a href="/file/811140475/1/n3hEIbE6k2Q/33f0062b636b6f79ea" target="_blank"><img src="/file/811140712/2/27wq7peEgRY/85dab78d0d668cea53" title="Appoint administrators" style="width: 195px; padding: 10px 5px" /></a>
<br><br>
</div></center>
<p>If you enable the new restricted mode, only administrators will be able to add new people and change the name and photo of the group. Admins also have the power to remove other members from the group.</p>
<h3><a class="anchor" name="supergroups" href="#supergroups"><i class="anchor-icon"></i></a>Supergroups</h3>
<blockquote>
<p><strong>UPD:</strong> Check out <a href="/blog/supergroups5k">Supergroups 2.0</a>: Pinned posts, Public groups, new moderation tools!</p>
</blockquote>
<p>Telegram groups have always been several steps ahead of the competition. You could have groups of up to 200 people communicating efficiently using <a href="https://telegram.org/blog/replies-mentions-hashtags">replies, mentions and hashtags</a>. Now it&#39;s time to go further.</p>
<p>Ever since our launch in 2013, our users have been telling us they would like to migrate even larger communities to Telegram. As of today, once your group is full, you can upgrade it to a supergroup that supports up to <strong>5000 members</strong>.</p>
<center><div>
<a href="/file/811140807/1/hSwR0YfNEJ4/ef7c477dd07a929a98" target="_blank"><img src="/file/811140003/2/WQG2L2Fw-Ew/e6510fd93e8cb461bc" title="Upgrade to a supergroup" style="width: 195px; padding: 10px 5px" /></a>
<br><br>
</div></center>
<p>Supergroups are optimized to host large online communities and will load quickly, even if youve missed many messages while away. Heres what you need to know about how they work:</p>
<ul>
<li>New members can see the entire message history when they join.</li>
<li>Deleted messages will disappear for <strong>all</strong> members.</li>
<li>Ordinary members can only delete their own messages.</li>
<li>Supergroups are muted by default and send fewer joined/left notifications.</li>
</ul>
<p>All official <a href="/apps">Telegram clients</a> are getting this update today.</p>
<blockquote>
<p>Please note that you need the latest version of Telegram to <strong>access</strong> a supergroup. You may want to wait a little bit before upgrading your groups so that the update rolls out to all Telegram users, and they can see their groups.</p>
</blockquote>
<h3><a class="anchor" name="ios-bonus-best-in-app-notifications-ever" href="#ios-bonus-best-in-app-notifications-ever"><i class="anchor-icon"></i></a>iOS Bonus: Best In-App Notifications Ever</h3>
<p><a href="/dl/ios">iOS</a> users will enjoy our new in-app notifications. Pull down on a notification to expand it, view the full text of the message or preview attached media.</p>
<center><div>
<a href="/file/811140114/1/f45bz9uj_2M/5b0b3c368d7c90192f" target="_blank"><img src="/file/811140273/3/muCFFxkv2bQ/2e001f3f8abba15e29" title="Quick reply from notification" style="width: 195px; padding: 10px 5px" /></a>
<br><br>
</div></center>
<p>You can immediately send a quick reply or a sticker — all without leaving that particular spot in some other conversation.</p>
<h3><a class="anchor" name="android-bonus-quick-share-for-channels" href="#android-bonus-quick-share-for-channels"><i class="anchor-icon"></i></a>Android Bonus: Quick Share for Channels</h3>
<p>Meanwhile, <a href="/dl/android">Android</a> users can enjoy the new quick sharing menu in <a href="/blog/channels">channels</a>. Just tap on the forwarding buttons right next to channel messages.</p>
<center><div>
<a href="/file/811140358/2/lNDuakLBPP0/70cf206a1d99428313" target="_blank"><img src="/file/811140358/2/lNDuakLBPP0/70cf206a1d99428313" title="The new sharing menu on Android" style="width: 195px; padding: 10px 5px" /></a>
<br>
</div></center>
<hr>
<p>We have a few more surprises up our sleeve for this year. Stay tuned for more updates!</p>
<div><br></div>
<p><em>The Telegram Team,<br>November 25, 2015</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fsupergroups&text=Group%20Admins%2C%20Supergroups%20for%20up%20to%201000%20members%2C%20new%20In-App%20Notifications%20and%20Quick%20Share." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Group Admins, Supergroups for up to 1000 members, new In-App Notifications and Quick Share." data-url="https://telegram.org/blog/supergroups"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Group Admins, Supergroups for up to 1000 members, new In-App Notifications and Quick Share." data-url="https://telegram.org/blog/supergroups" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,232 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Supergroups 5000: Public Groups, Pinned Posts</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Supergroups 5000: Public Groups, Pinned Posts">
<meta property="og:image" content="https://telegram.org/file/811140697/2/H2YxbMSil0Y/ff98a308093ebc1282">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Supergroups 2.0: up to 5,000 members, pinned messages, public groups and new moderation tools.">
<meta property="article:published_time" content="2016-03-13T22:24:29+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140697/2/H2YxbMSil0Y/ff98a308093ebc1282" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/supergroups5k" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Supergroups 5000: Public Groups, Pinned Posts</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/811140697/2/H2YxbMSil0Y/ff98a308093ebc1282" class="blog_side_image"/>
</div>
<p>Telegram is famous for its awesome <a href="https://telegram.org/faq#q-why-are-supergroups-cool">group chats</a>. Todays update makes them even more awesome. To begin with, were increasing the number of people who can join a supergroup from 1000 to <strong>5000 members</strong>. That&#39;s 5 times as good. </p>
<p>Supergroup admins can now inform all members about important news using pinned messages. <strong>Pinned messages</strong> are displayed at the top of the chat screen. All members will get a notification — even if they muted ordinary messages from the group.</p>
<div class="blog_image_wrap">
<a href="/file/811140258/1/iGyKYxEDslg/29340a1170113b3670" target="_blank"><img src="/file/811140258/1/iGyKYxEDslg/29340a1170113b3670" title="A pinned message" /></a>
<p>A pinned message</p>
</div>
<p>Starting today, supergroups can become <strong>public</strong> and get a short link, like <a href="https://telegram.me/publictestgroup">telegram.me/publictestgroup</a>. This way, anybody can view the group&#39;s entire chat history and join to post messages.</p>
<div class="blog_image_wrap">
<a href="/file/811140974/1/4auqDoAJlR8/2ea4146ed3b254bf4a" target="_blank"><img src="/file/811140974/1/4auqDoAJlR8/2ea4146ed3b254bf4a" title="A public group" /></a>
<p>A public group</p>
</div>
<p>We know what youre thinking. What about spammers? To prevent potential spam issues, we&#39;re introducing powerful <strong>moderation tools</strong> for group admins. From now on, they can quickly delete all messages from a specific member, block and report them. </p>
<div class="blog_image_wrap">
<a href="/file/811140789/1/_Jfevhj9PpM/786bd36b900cae8d0d" target="_blank"><img src="/file/811140789/1/_Jfevhj9PpM/786bd36b900cae8d0d" title="New admin tools" /></a>
<p>New tools for admins</p>
</div>
<p>These features work only in <strong>supergroups</strong>, but starting today, any group can be converted to a supergroup by its creator. Group admins are now shown in group members lists, so ping your group admin if you think this would be cool.</p>
<blockquote>
<p>Good old groups still work great for smaller communities, so there&#39;s no need to convert your group right away.</p>
</blockquote>
<p>And that&#39;s it for today, watch out for more updates coming soon!</p>
<div><br></div>
<p><em>March 13, 2016<br>The Telegram Team</em></p>
<div><br></div>
<p><strong>P.S.</strong> Please note that well be rolling out public groups gradually. Theyre already live in Europe and America, but are currently not available in several countries in Asia, from which we detected significant spam activity in the past.</p>
<p>Well be making the feature available in more countries as we improve our anti-spam algorithms and scale our abuse team.</p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fsupergroups5k&text=Supergroups%202.0%3A%20up%20to%205%2C000%20members%2C%20pinned%20messages%2C%20public%20groups%20and%20new%20moderation%20tools." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Supergroups 2.0: up to 5,000 members, pinned messages, public groups and new moderation tools." data-url="https://telegram.org/blog/supergroups5k"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Supergroups 2.0: up to 5,000 members, pinned messages, public groups and new moderation tools." data-url="https://telegram.org/blog/supergroups5k" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,259 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Replace Media, Share vCards, Mark as Unread, 2X Voice Messages, and More</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Replace Media, Share vCards, Mark as Unread, 2X Voice Messages, and More">
<meta property="og:image" content="https://telegram.org/file/811140662/1d43/IHAzwKYaofg.70195/5fbb6ed0e25e9d5a02">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Replace Media, share contacts as vCards, mark as unread, 2X voice and video messages, and more in Telegram 4.8.3/10">
<meta property="article:published_time" content="2018-06-27T21:08:44+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140662/1d43/IHAzwKYaofg.70195/5fbb6ed0e25e9d5a02" />
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="canonical" href="https://telegram.org/blog/unread-replace-2x" />
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div class="tl_blog_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a><a href="/blog/video-1000" class="side_blog_entry">
<div class="side_blog_date">Jul 30</div>
<div class="side_blog_title">Video Calls with up to 1000 Viewers, Video Playback Speed and More</div>
</a><a href="/blog/group-video-calls" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title">Group Video Calls</div>
</a><a href="/blog/animated-backgrounds" class="side_blog_entry">
<div class="side_blog_date">Jun 25</div>
<div class="side_blog_title"> Animated Backgrounds</div>
</a><a href="/blog/payments-2-0-scheduled-voice-chats" class="side_blog_entry">
<div class="side_blog_date">Apr 26</div>
<div class="side_blog_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</div>
</a>
</div>
</div>
</div></div>
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Replace Media, Share vCards, Mark as Unread, 2X Voice Messages, and More</h1>
<div id="dev_page_content"><div class="blog_side_image_wrap">
<img src="/file/811140595/1a00/Wx4FDuEvl0Q.27470.gif/144463428fd20fe032" class="blog_side_image"/>
</div>
<div class="blog_wide_image">
<a href="/file/811140007/1689/gRuvE3GgweE.195530/6842399784b442af1d" target="_blank"><img src="/file/811140662/1d43/IHAzwKYaofg.70195/5fbb6ed0e25e9d5a02" srcset="/file/811140007/1689/gRuvE3GgweE.195530/6842399784b442af1d, 1200w" title="Replace Media, Share VCards, Mark as Unread, 2X Voices Messages"/></a>
</div>
<p>Telegram 4.8.3 for <a href="https://telegram.org/dl/ios">iOS</a> and 4.8.10 for <a href="https://telegram.org/dl/android">Android</a> are out today, bringing several nifty features and improvements.</p>
<h3><a class="anchor" name="replace-media-and-add-captions" href="#replace-media-and-add-captions"><i class="anchor-icon"></i></a>Replace Media and Add Captions</h3>
<p>Sending the wrong picture by accident is rarely fun. On Telegram, it was already possible to delete the message for everyone and send a new one instead. Now you can just <strong>replace photos or videos</strong> with the correct versions right away:</p>
<div class="blog_video_player_wrap" style="max-width: 480px; margin: 20px auto 20px;">
<video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/811140294/1995/h-fPEdMOyJ4.45071/89e0d6d15032855513" style="max-width: 480px;">
<source src="/file/811140282/1aa8/0Pv4XJT3Afc.509006.mp4/a8b9ece991f9feee36" type="video/mp4">
</video>
</div>
<p>Start editing the message, then tap the paperclip button to replace the attached media. You can also <strong>add captions</strong> to photos or videos that didn&#39;t have one.</p>
<h3><a class="anchor" name="double-time-playback-for-voice-and-video-messages" href="#double-time-playback-for-voice-and-video-messages"><i class="anchor-icon"></i></a>Double-Time Playback for Voice and Video Messages</h3>
<p>You&#39;ll like this one if your friends enjoy sending long and thoughtful voice notes. From now on, you can switch to <strong>2X playback</strong> and hear people get to the point <strong>faster</strong>.</p>
<div class="blog_image_wrap">
<a href="/file/811140497/169b/cbXkJ0EYq8I.90727/d8b1bbc78a215054df" target="_blank"><img src="/file/811140951/19b2/tQToEX6nVts.33505/e4b62fd006aa1d7fc7" title="Works with voice and round video messages" srcset="/file/811140497/169b/cbXkJ0EYq8I.90727/d8b1bbc78a215054df , 2x" /></a>
<p>Works with voice and <a href="https://telegram.org/blog/video-messages-and-telescope">video messages</a></p>
</div>
<p>Weve spent a few extra hours to ensure that your friends dont sound like Helium-breathing chipmunks as a result. Well, most of the times.</p>
<h3><a class="anchor" name="mark-as-read-or-unread" href="#mark-as-read-or-unread"><i class="anchor-icon"></i></a>Mark as Read or Unread</h3>
<div class="blog_video_player_wrap" style="max-width: 480px; margin: 20px auto 20px;">
<video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/811140353/1668/vCRlLEtpeWY.29131/462ce30e2f8b0f2c8a" style="max-width: 480px;">
<source src="/file/811140745/1b64/Nfz9Cg6mpSE.181609.mp4/0223a65fc4bd4f5471" type="video/mp4">
</video>
</div>
<p>This offers a quick way to get less important messages out of the way and highlight the chats that require your future attention.</p>
<h3><a class="anchor" name="share-detailed-contact-info" href="#share-detailed-contact-info"><i class="anchor-icon"></i></a>Share Detailed Contact Info</h3>
<p>Sometimes you want to share more info about a contact than just one number. With this update, you can select what data you want to send when sharing a contact. For example, <strong>several phone numbers</strong> or other <strong>vCard</strong> fields.</p>
<div class="blog_image_wrap">
<a href="/file/811140156/1dc0/8tVLTM-vaGg.106362/8617cfd8062b205d46" target="_blank"><img src="/file/811140389/1703/_jOIrh01PXg.42417/6ddf84c1ba6d16b2a7" title="Works with voice and round video messages" srcset="/file/811140156/1dc0/8tVLTM-vaGg.106362/8617cfd8062b205d46 , 2x" /></a>
<p>Choose which fields to share</p>
</div>
<p>Try sharing a contact that has multiple fields with data to check this out.</p>
<h3><a class="anchor" name="one-more-thing" href="#one-more-thing"><i class="anchor-icon"></i></a>One More Thing</h3>
<p>When you open a chat from Global Search and then go back, you will <strong>return to the search results</strong> and keep your position in the list. </p>
<h3><a class="anchor" name="and-three-more-on-android" href="#and-three-more-on-android"><i class="anchor-icon"></i></a>And Three More (on Android <img class="emoji" src="//telegram.org/img/emoji/40/F09F92AA.png" width="20" height="20" alt="💪" />)</h3>
<p>Android users are getting a few extra goodies with version 4.8.10. Tap and hold on profile pictures in the chats list to <strong>preview chats</strong>:</p>
<div class="blog_image_wrap">
<a href="/file/811140413/1a3f/gdwidwgfD3o.91897/7eac47526eec39caf7" target="_blank"><img src="/file/811140029/1541/GYcYi6z0sXc.36536/2d17281f07b7b51329" title="Select text, then '...'" srcset="/file/811140413/1a3f/gdwidwgfD3o.91897/7eac47526eec39caf7 , 2x" /></a>
<p>Tap and hold on the profile picture</p>
</div>
<p>Use the <strong>“create link”</strong> option in the formatting menu to make text URLs:</p>
<div class="blog_image_wrap">
<a href="/file/811140578/1680/UZP8mwifSmY.77633/fc189946f4160610ce" target="_blank"><img src="/file/811140391/1977/jLhPGYxCigo.29525/d0fc750eda66dcb412" title="Select text, then '...'" srcset="/file/811140578/1680/UZP8mwifSmY.77633/fc189946f4160610ce , 2x" /></a>
<p>Select some text, then tap '...'</p>
</div>
<p>Last but not least, it is now possible to <strong>cancel</strong> sending messages before they are sent. </p>
<p>And that&#39;s it for today, stay tuned for our next updates!</p>
<div><br></div>
<p><em>June 27, 2018<br>The Telegram Team</em></p>
</div>
</div>
<div class="tl_main_share clearfix">
<a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Funread-replace-2x&text=Replace%20Media%2C%20share%20contacts%20as%20vCards%2C%20mark%20as%20unread%2C%202X%20voice%20and%20video%20messages%2C%20and%20more%20in%20Telegram%204.8.3%2F10" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Replace Media, share contacts as vCards, mark as unread, 2X voice and video messages, and more in Telegram 4.8.3/10" data-url="https://telegram.org/blog/unread-replace-2x"><i class="tl_telegram_share_icon"></i><span class="tl_telegram_share_label" target="_blank">Forward</span></a>
<a href="https://twitter.com/share" class="tl_twitter_share_btn" id="tl_twitter_share_btn" data-text="Replace Media, share contacts as vCards, mark as unread, 2X voice and video messages, and more in Telegram 4.8.3/10" data-url="https://telegram.org/blog/unread-replace-2x" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a>
</div>
</div>
<div class="tl_main_recent_news_wrap tlb_other_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Other News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/live-streams-forwarding-next-channel"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</h4>
<div class="dev_blog_card_lead">Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to…</div>
</div>
<div class="dev_blog_card_date">Aug 31, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-1000"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</h4>
<div class="dev_blog_card_lead">This update takes video to the next level. Group video calls now have up to 1000 viewers,…</div>
</div>
<div class="dev_blog_card_date">Jul 30, 2021</div>
</div></a>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>initScrollVideos(true);
twitterCustomShareInit();
blogSideImageInit();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,151 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Page Verification Guidelines</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Page Verification Guidelines">
<meta property="og:image" content="">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="The Telegram team generally verifies active official channels, bots or public groups that have verified accounts on at…">
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container ">
<div class="tl_page">
<div class="tl_contest_page_wrap">
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">Page Verification Guidelines</h1>
<div id="dev_page_content"><div class="blog_wide_image">
<a href="/file/464001301/2/sY6XsD_uybQ.159621/c5043e8678fd976861" target="_blank"><img src="/file/464001558/1/iKWucFpsg7U.61016/91b8a65eea56f8d0af" srcset="/file/464001301/2/sY6XsD_uybQ.159621/c5043e8678fd976861, 1200w" title="Not guaranteed to get you on board of the Fhloston Paradise." alt="Verification"/></a>
</div>
<p>The Telegram team generally verifies <em>active</em> official <strong>channels</strong>, <strong>bots</strong> or <strong>public groups</strong> that have verified accounts on <strong>at least two</strong> of these services:</p>
<ol>
<li><strong>TikTok</strong></li>
<li><strong>Instagram</strong></li>
<li><strong>Facebook</strong></li>
<li><strong>YouTube</strong></li>
<li><strong>Twitter</strong></li>
<li><strong>VK</strong></li>
<li><strong>Snapchat</strong></li>
</ol>
<p>Please add a <strong>link</strong> to your Telegram channel to your profiles on these services — so that we can confirm that they indeed belong to you. Once this is done, please contact our <a href="https://t.me/verifybot">@VerifyBot</a> for verification.</p>
<h3><a class="anchor" name="what-if-i-don-39t-have-a-verified-account-on-two-of-these-servic" href="#what-if-i-don-39t-have-a-verified-account-on-two-of-these-servic"><i class="anchor-icon"></i></a>What if I don&#39;t have a verified account on two of these services?</h3>
<p>If you have an <a href="https://en.wikipedia.org/wiki/Wikipedia:Proposed_deletion">undisputed</a> page on Wikipedia, that satisfies Wikipedia&#39;s <a href="https://en.wikipedia.org/wiki/Wikipedia:Notability">Notability Guidelines</a> and that page lists a link to your channel, bot or public group on Telegram it can be counted as <strong>one</strong> of the missing verified accounts.</p>
<p>In the case of organizations, a link to the Telegram channel from the official website of the organization may also be taken into account. The bot will offer to submit <strong>additional data and comments</strong> after checking the social media links.</p>
<blockquote>
<p>If you&#39;re using a <strong>Wikipedia</strong> or <strong>Official Website</strong> link instead of one of the social media accounts, please make sure that they include a <strong>link</strong> to the channel, group or bot you want to verify on Telegram.</p>
</blockquote>
<h3><a class="anchor" name="can-my-user-account-be-verified" href="#can-my-user-account-be-verified"><i class="anchor-icon"></i></a>Can my user account be verified?</h3>
<p>Sorry, Telegram doesnt verify user accounts at the moment. Verification is only available for big and active official channels, groups and bots.</p>
<h3><a class="anchor" name="do-i-need-verification" href="#do-i-need-verification"><i class="anchor-icon"></i></a>Do I need verification?</h3>
<p>Note that verification doesn&#39;t give any additional abilities in Telegram - it is simply <em>one</em> of the ways to demonstrate that your channel, group or bot is official. A link to Telegram on your official site or other official accounts elsewhere can achieve a similar result.</p>
<h3><a class="anchor" name="how-do-i-change-the-name-or-short-link-after-verification" href="#how-do-i-change-the-name-or-short-link-after-verification"><i class="anchor-icon"></i></a>How do I change the name or short link after verification?</h3>
<p>A verified channel, group or bot can&#39;t change its <strong>name</strong> or <strong>short link</strong> (t.me/…). If changes are necessary, you can remove verification status first. Contact <a href="https://t.me/verifybot">@VerifyBot</a> and send <code>/unverify</code>. You can then reobtain verification using the bot.</p>
</div>
</div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,283 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Telegram Messenger</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Telegram a new era of messaging">
<meta property="og:image" content="https://telegram.org/img/t_logo.png">
<meta property="og:site_name" content="Telegram">
<meta property="og:description" content="Fast. Secure. Powerful.">
<meta property="fb:app_id" content="254098051407226">
<meta property="vk:app_id" content="3782569">
<meta name="apple-itunes-app" content="app-id=686449807">
<meta name="telegram:channel" content="@telegram">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div id="fb-root"></div>
<div class="tl_page_wrap">
<div class="tl_page_head navbar navbar-static-top navbar navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right"><li class="dropdown top_lang_select"><a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#"><i class="dev_top_lang_icon"></i> <b class="minicaret"></b></a>
<ul class="dropdown-menu"><li class=""><a href="?setln=en">English</a></li><li class="long "><a href="?setln=id">Bahasa Indonesia</a></li><li class="long "><a href="?setln=ms">Bahasa Melayu</a></li><li class=""><a href="?setln=de">Deutsch</a></li><li class=""><a href="?setln=es">Español</a></li><li class=""><a href="?setln=fr">Français</a></li><li class=""><a href="?setln=it">Italiano</a></li><li class=""><a href="?setln=nl">Nederlands</a></li><li class=""><a href="?setln=uz">Ozbek</a></li><li class=""><a href="?setln=pl">Polski</a></li><li class="long "><a href="?setln=pt-br">Português (Brasil)</a></li><li class=""><a href="?setln=tr">Türkçe</a></li><li class=""><a href="?setln=be">Беларуская</a></li><li class=""><a href="?setln=ru">Русский</a></li><li class=""><a href="?setln=uk">Українська</a></li><li class=""><a href="?setln=ar">العربية</a></li><li class=""><a href="?setln=fa">فارسی</a></li><li class=""><a href="?setln=ko">한국어</a></li></ul></li><li class="navbar-twitter hidden-xs"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i> Twitter</a></li></ul>
<ul class="nav navbar-nav">
<li class=""><a href="/">Home</a></li>
<li class=""><a href="/faq">FAQ</a></li>
<li class=""><a href="/apps">Apps</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/api">API</a></li>
<li class="hidden-xs "><a href="//core.telegram.org/mtproto">Protocol</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix tl_page_container tl_main_page_container">
<div class="tl_page">
<div class="tl_main_wrap">
<div class="tl_main_head">
<div class="tl_main_side_blog"><div class="side_blog_wrap">
<div class="side_blog">
<a href="/blog" class="side_blog_header">Recent News</a>
<div class="side_blog_entries">
<a href="/blog/shared-media-scrolling-calendar-join-requests-and-more" class="side_blog_entry">
<div class="side_blog_date">Nov 3</div>
<div class="side_blog_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests and More</div>
</a><a href="/blog/chat-themes-interactive-emoji-read-receipts" class="side_blog_entry">
<div class="side_blog_date">Sep 19</div>
<div class="side_blog_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</div>
</a><a href="/blog/live-streams-forwarding-next-channel" class="side_blog_entry">
<div class="side_blog_date">Aug 31</div>
<div class="side_blog_title">Live Streams, Flexible Forwarding and More</div>
</a>
</div>
</div>
</div></div>
<div class="tl_main_logo_wrap">
<a href="/" class="tl_main_logo">
<svg width="128" height="128" class="tl_main_logo">
<image class="tl_main_logo" xlink:href="/img/t_logo.svg?1" src="/img/t_logo.png?1" srcset="/img/t_logo_2x.png?1 2x, /img/t_logo.png?1 1x" alt="Telegram logo" width="128" height="128" />
</svg>
<div class="tl_main_logo_title_image" alt="Telegram"></div>
</a>
<p class="tl_main_logo_lead">a new era of messaging</p>
</div>
</div>
<div class="tl_main_download_mobile clearfix">
<a href="/android" class="tl_main_download_link tl_main_download_link_android" data-track="AppDownload/Android" onclick="trackDlClick(this, event)" onmouseover="mainDemoVideoHover(this, 1)" onmouseout="mainDemoVideoHover(this, 0)">
<i class="icon icon-android "></i>Telegram for <b>Android</b>
<div class="tl_main_download_image__android"></div>
<video class="tl_main_video_player tl_main_video_player__android video__init_retina" muted="" vindex="1" preload="none" data-sources="/img/t_main_Android_demo.mp4,/img/t_main_Android_demo_2x.mp4"></video>
</a><a href="/dl/ios" class="tl_main_download_link tl_main_download_link_ios" target="_blank" data-track="AppDownload/iOS" onclick="trackDlClick(this, event)" onmouseover="mainDemoVideoHover(this, 1)" onmouseout="mainDemoVideoHover(this, 0)">
<i class="icon icon-ios "></i>Telegram for <b>iPhone</b> / <b>iPad</b>
<div class="tl_main_download_image__ios"></div>
<video class="tl_main_video_player tl_main_video_player__ios video__init_retina" muted="" vindex="1" preload="none" data-sources="/img/t_main_iOS_demo.mp4,/img/t_main_iOS_demo_2x.mp4"></video>
</a>
<a href="//desktop.telegram.org/" class="tl_main_download_link tl_main_download_link_tdesktop" data-track="AppDownload/TDesktop" onclick="trackDlClick(this, event)">
Telegram for <b>Windows / Mac / Linux</b>
</a>
<a class="tl_main_download_more_btn" href="/apps">Browse more Telegram apps<i class="icon icon-arrow-more"></i></a>
</div>
<div class="tl_main_download_desktop_section">
<h3 class="tl_main_download_desktop_header"></h3>
<div class="tl_main_download_desktop_wrap1">
<div class="tl_main_download_desktop_wrap">
<div class="tl_main_download_desktop clearfix">
<div class="tl_main_download_desktop_links clearfix">
<a href="//desktop.telegram.org/" class="tl_main_download_desktop_link tl_main_download_link_td" data-track="DesktopDownload/TDesktop" onclick="trackDlClick(this, event)">
Telegram&nbsp;for <b>PC / Linux</b>
</a><a href="//macos.telegram.org/" class="tl_main_download_desktop_link tl_main_download_link_osx" data-track="DesktopDownload/OSX" onclick="trackDlClick(this, event)">
Telegram&nbsp;for <b>macOS</b>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="tl_main_recent_news_wrap tl_blog_list_page_wrap">
<h3 class="tl_main_recent_news_header">
<a href="/blog">Recent News</a>
</h3>
<div class="tl_main_recent_news_cards clearfix">
<a class="dev_blog_card_link_wrap" href="/blog/shared-media-scrolling-calendar-join-requests-and-more"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001930/3/yPTwxfusWZg.174275/3f847742c263cdae99" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Hyper-Speed Scrolling and Calendar View for Shared Media, Join Requests, Global Chat Themes on iOS and More</h4>
<div class="dev_blog_card_lead">Today&#39;s update brings new ways to find memories in shared media with accelerated scrolling…</div>
</div>
<div class="dev_blog_card_date">Nov 3, 2021</div>
</div></a><a class="dev_blog_card_link_wrap" href="/blog/chat-themes-interactive-emoji-read-receipts"><div class="dev_blog_card_wrap">
<img class="dev_blog_card_image" src="https://telegram.org/file/464001155/2/kLfFr4UDBdo.74223/58bec6bc2a18455c5f" />
<div class="dev_blog_card_alltext_wrap">
<h4 class="dev_blog_card_title">Chat Themes, Interactive Emoji, Read Receipts in Groups and Live Stream Recording</h4>
<div class="dev_blog_card_lead">Today&#39;s update lets you set different themes for individual chats, share your feelings with…</div>
</div>
<div class="dev_blog_card_date">Sep 19, 2021</div>
</div></a>
</div>
</div>
<div class="tl_main_body tl_main_cards_animated_wrap">
<a name="what-can-you-do-with-Telegram"></a>
<h3 class="tl_main_body_header">Why Telegram?</h3>
<div class="tl_main_cards">
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001484/1/bzi7gr7XRGU.10147/815df2ef527132dd23"><img src="/file/464001897/3/f0Go0rLpEwk.11343.png/dd4eeb46cc5efc0688" /></picture>
<h3 class="tl_main_card_header">Simple</h3>
<div class="tl_main_card_lead"><b>Telegram</b> is so simple you already know how to use it.</div>
</div>
</div>
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001418/1/fabnJFzygPY.17422/bc9dec9fd8bd26e00e"><img src="/file/464001737/4/Fn57W9l3xI0.15286.png/d4b936ecc2c939f4fa" /></picture>
<h3 class="tl_main_card_header">Private</h3>
<div class="tl_main_card_lead"><b>Telegram</b> messages are heavily encrypted and can self-destruct.</div>
</div>
</div>
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001560/1/zLlKYgeDLoA.14496/62085b07461f2d87e4"><img src="/file/464001560/2/n7EACfx4FPY.16465.png/7318c11715aa2ec45b" /></picture>
<h3 class="tl_main_card_header">Synced</h3>
<div class="tl_main_card_lead"><b>Telegram</b> lets you access your chats from multiple devices.</div>
</div>
</div>
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001493/2/hV6uPcaHk_E.17388/dcccb066a7b4fe44ee"><img src="/file/464001132/3/-1qvqKPZsQQ.17975.png/7d57d7159cf4fbe9b2" /></picture>
<h3 class="tl_main_card_header">Fast</h3>
<div class="tl_main_card_lead"><b>Telegram</b> delivers messages faster than any other application.</div>
</div>
</div>
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001803/1/cnqy4KrA5bE.12755/b97780ca9da88b4f84"><img src="/file/464001871/3/Uyg3R7LmX1I.17628.png/911807f65dfb4f8f20" /></picture>
<h3 class="tl_main_card_header">Powerful</h3>
<div class="tl_main_card_lead"><b>Telegram</b> has no limits on the size of your media and chats.</div>
</div>
</div>
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001880/2/VGTLBN3QuYM.10959/8940838e7dddc787d8"><img src="/file/464001880/3/xOpm7ohoHQ0.12690.png/feb1e161b1d3608613" /></picture>
<h3 class="tl_main_card_header">Open</h3>
<div class="tl_main_card_lead"><b>Telegram</b> has an open <a href="https://core.telegram.org/api">API</a> and source code free for everyone.</div>
</div>
</div>
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001453/2/eW_MzRhUGoM.10926/fe1f3bc3dd08367c0a"><img src="/file/464001453/3/mNzXWC3RX0c.15740.png/9ce5fa5f3fb74460b4" /></picture>
<h3 class="tl_main_card_header">Secure</h3>
<div class="tl_main_card_lead"><b>Telegram</b> keeps your messages safe from hacker attacks.</div>
</div>
</div>
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001812/2/kLAK2TPyvUU.12545/f68c1caf735a2ea3db"><img src="/file/464001402/5/eOMSj3GzJXo.13579.png/f3cec6c451d023c109" /></picture>
<h3 class="tl_main_card_header">Social</h3>
<div class="tl_main_card_lead"><b>Telegram</b> groups can hold up to 200,000 members.</div>
</div>
</div>
<div class="tl_main_card_cell">
<div class="tl_main_card_wrap">
<picture class="dev_page_tgsticker tl_main_card_animated js-tgsticker_image"><div></div><source type="application/x-tgsticker" srcset="/file/464001166/1/01aTJ2ISKeU.21801/24028c7b6d07639794"><img src="/file/464001166/2/FzTl8_M5mQA.19325.png/b6c5dbc0e4f6553805" /></picture>
<h3 class="tl_main_card_header">Expressive</h3>
<div class="tl_main_card_lead"><b>Telegram</b> lets you completely customize your messenger.</div>
</div>
</div>
</div>
<div class="tl_main_noshare clearfix"></div>
</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="/faq">About</a></h5>
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="/dl/ios">iPhone/iPad</a></li>
<li><a href="/dl/android">Android</a></li>
<li><a href="/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="/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="/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="/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="/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>
<script src="/js/main.js?42"></script>
<script src="/js/tgsticker.js?24"></script>
<script>mainInitRetinaVideos();
mainInitTgStickers({"maxDeviceRatio":2,"cachingModulo":3,"unsupportedURL":"\/?notgs=1"});
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>